Allow arbitrary nesting of sub-variations in PGN input
[xboard.git] / common.h
index bc9d997..63cee7d 100644 (file)
--- a/common.h
+++ b/common.h
@@ -250,23 +250,20 @@ typedef enum {
 typedef ChessSquare Board[BOARD_RANKS][BOARD_FILES];
 
 typedef enum {
-    WhiteKingSideCastle = 1, WhiteQueenSideCastle,
+    EndOfFile = 0,
+    WhiteKingSideCastle, WhiteQueenSideCastle,
     WhiteKingSideCastleWild, WhiteQueenSideCastleWild,
     WhiteHSideCastleFR, WhiteASideCastleFR, 
     BlackKingSideCastle, BlackQueenSideCastle,
     BlackKingSideCastleWild, BlackQueenSideCastleWild,
     BlackHSideCastleFR, BlackASideCastleFR, 
-    WhitePromotionKnight, WhitePromotionBishop,
-    WhitePromotionRook, WhitePromotionQueen, WhitePromotionKing, WhiteNonPromotion,
-    WhitePromotionChancellor, WhitePromotionArchbishop, WhitePromotionCentaur,
-    BlackPromotionKnight, BlackPromotionBishop,
-    BlackPromotionRook, BlackPromotionQueen, BlackPromotionKing, BlackNonPromotion,
-    BlackPromotionChancellor, BlackPromotionArchbishop, BlackPromotionCentaur,
+    WhitePromotion, WhiteNonPromotion,
+    BlackPromotion, BlackNonPromotion,
     WhiteCapturesEnPassant, BlackCapturesEnPassant,
     WhiteDrop, BlackDrop, 
     NormalMove, AmbiguousMove, IllegalMove, ImpossibleMove,
     WhiteWins, BlackWins, GameIsDrawn, GameUnfinished,
-    GNUChessGame, XBoardGame, MoveNumberOne, 
+    GNUChessGame, XBoardGame, MoveNumberOne, Open, Close, Nothing,
     Comment, PositionDiagram, ElapsedTime, PGNTag, NAG
   } ChessMove;
 
@@ -388,7 +385,7 @@ typedef struct {
     int premoveHighlightColor;
 #endif
     int movesPerSession;
-    int timeIncrement;
+    float timeIncrement;
     char *initString;
     char *secondInitString;
     char *firstComputerString;
@@ -498,6 +495,7 @@ typedef struct {
     char *soundIcsLoss;
     char *soundIcsDraw;
     char *soundIcsUnfinished;
+    Boolean disguise;        /* [HGM] Promoted Pawns look like pieces in bughouse */
     Boolean reuseFirst;
     Boolean reuseSecond;
     Boolean animateDragging; /* If True, animate mouse dragging of pieces */
@@ -525,6 +523,7 @@ typedef struct {
     int secondProtocolVersion;
     Boolean showButtonBar;
     Boolean icsEngineAnalyze; 
+    Boolean variations;         /* [HGM] enable variation-tree walking */
 
     /* [AS] New properties (down to the "ZIPPY" part) */
     Boolean firstScoreIsAbsolute;  /* If true, engine score is always from white side */
@@ -654,7 +653,9 @@ typedef struct {
     Boolean markers;    /* [HGM] markers   */
 } AppData, *AppDataPtr;
 
-/* [AS] PGN tags (for showing in the game list) */
+/*  PGN tags (for showing in the game list) */
+#define LPUSERGLT_SIZE      64
+
 #define GLT_EVENT           'e'
 #define GLT_SITE            's'
 #define GLT_DATE            'd'