Implement Chu Shogi
[xboard.git] / common.h
index 71f6c49..f06fbcf 100644 (file)
--- a/common.h
+++ b/common.h
@@ -5,7 +5,7 @@
  * Massachusetts.
  *
  * Enhancements Copyright 1992-2001, 2002, 2003, 2004, 2005, 2006,
- * 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
+ * 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
  *
  * Enhancements Copyright 2005 Alessandro Scotti
  *
@@ -132,7 +132,7 @@ typedef char *String;
    outside world in ASCII. In a similar way, the different rank numbering
    systems (starting at rank 0 or 1) are implemented by redefining '1'.
 */
-#define BOARD_RANKS             11             /* [HGM] for in declarations  */
+#define BOARD_RANKS             17            /* [HGM] for in declarations  */
 #define BOARD_FILES             16             /* [HGM] for in declarations  */
 #define BOARD_HEIGHT (gameInfo.boardHeight)    /* [HGM] made user adjustable */
 #define BOARD_WIDTH  (gameInfo.boardWidth + 2*gameInfo.holdingsWidth)
@@ -248,12 +248,20 @@ typedef enum {
     WhitePawn, WhiteKnight, WhiteBishop, WhiteRook, WhiteQueen,
     WhiteFerz, WhiteAlfil, WhiteAngel, WhiteMarshall, WhiteWazir, WhiteMan,
     WhiteCannon, WhiteNightrider, WhiteCardinal, WhiteDragon, WhiteGrasshopper,
-    WhiteSilver, WhiteFalcon, WhiteLance, WhiteCobra, WhiteUnicorn, WhiteKing,
+    WhiteSilver, WhiteFalcon, WhiteLance, WhiteCobra, WhiteUnicorn, WhiteLion,
+    WhiteTokin, WhiteDagger, WhitePCardinal, WhitePDragon, WhiteCat,
+    WhitePSword, WhiteMonarch, WhiteMother, WhiteNothing, WhitePRook, WhitePDagger,
+    WhiteDolphin, WhiteVacant, WhiteHorned, WhiteEagle, WhiteSword,
+    WhiteSkip, WhiteCrown, WhiteHorse, WhiteDrunk, WhitePBishop, WhiteKing,
     BlackPawn, BlackKnight, BlackBishop, BlackRook, BlackQueen,
     BlackFerz, BlackAlfil, BlackAngel, BlackMarshall, BlackWazir, BlackMan,
     BlackCannon, BlackNightrider, BlackCardinal, BlackDragon, BlackGrasshopper,
-    BlackSilver, BlackFalcon, BlackLance, BlackCobra, BlackUnicorn, BlackKing,
-    EmptySquare,
+    BlackSilver, BlackFalcon, BlackLance, BlackCobra, BlackUnicorn, BlackLion,
+    BlackTokin, BlackDagger, BlackPCardinal, BlackPDragon, BlackCat,
+    BlackPSword, BlackMonarch, BlackMother, BlackNothin, BlackPRook, BlackPDagger,
+    BlackDolphin, BlackVacant, BlackHorned, BlackEagle, BlackSword,
+    BlackSkip, BlackCrown, BlackHorse, BlackDrunk, BlackPBishop, BlackKing,
+    EmptySquare, DarkSquare,
     NoRights, // [HGM] gamestate: for castling rights hidden in board[CASTLING]
     ClearBoard, WhitePlay, BlackPlay, PromotePiece, DemotePiece /*for use on EditPosition menus*/
   } ChessSquare;
@@ -264,6 +272,8 @@ typedef enum {
 #define PROMOTED       (int)WhiteDragon - (int)WhiteRook + (int)
 #define DEMOTED        (int)WhiteRook - (int)WhiteDragon + (int)
 #define SHOGI          (int)EmptySquare + (int)
+#define CHUPROMOTED    ((int)WhitePDragon - (int)WhiteDragon)*(gameInfo.variant == VariantChu) + PROMOTED
+#define IS_SHOGI(V)    ((V) == VariantShogi || (V) == VariantChu)
 
 
 typedef ChessSquare Board[BOARD_RANKS][BOARD_FILES];
@@ -323,6 +333,7 @@ typedef enum {
     Variant35,           /* Temporary name for possible future ICC wild 35 */
     Variant36,           /* Temporary name for possible future ICC wild 36 */
     VariantShogi,        /* [HGM] added variants */
+    VariantChu,
     VariantXiangqi,
     VariantCourier,
     VariantGothic,
@@ -338,6 +349,7 @@ typedef enum {
     VariantGreat,
     VariantTwilight,
     VariantMakruk,
+    VariantASEAN,
     VariantSChess,
     VariantGrand,
     VariantSpartan,
@@ -369,6 +381,7 @@ typedef enum {
   "wild35", \
   "wild36", \
   "shogi", \
+  "chu", \
   "xiangqi", \
   "courier", \
   "gothic", \
@@ -384,6 +397,7 @@ typedef enum {
   "great",\
   "twilight",\
   "makruk",\
+  "asean",\
   "seirawan",\
   "grand",\
   "spartan",\
@@ -423,7 +437,9 @@ typedef struct {
     Boolean firstPlaysBlack;
     Boolean noChessProgram;
     char *host[ENGINES];
+    char *themeNames;
     char *pieceDirectory;
+    char *border;
     char *soundDirectory;
     char *remoteShell;
     char *remoteUser;
@@ -431,6 +447,7 @@ typedef struct {
     char *timeControl;
     Boolean trueColors;
     Boolean icsActive;
+    Boolean autoBox;
     char *icsHost;
     char *icsPort;
     char *icsCommPort;  /* if set, use serial port instead of tcp host/port */
@@ -446,6 +463,7 @@ typedef struct {
     int loadGameIndex;      /* game # within file */
     char *saveGameFile;
     Boolean autoSaveGames;
+    Boolean onlyOwn;        /* [HGM] suppress auto-saving of observed games */
     char *loadPositionFile;
     int loadPositionIndex;  /* position # within file */
     char *savePositionFile;
@@ -481,6 +499,7 @@ typedef struct {
     Boolean ponderNextMove;
     Boolean periodicUpdates;
     Boolean autoObserve;
+    Boolean autoCreateLogon;
     Boolean autoComment;
     Boolean getMoveList;
     Boolean testLegality;
@@ -549,6 +568,7 @@ typedef struct {
     Boolean showButtonBar;
     Boolean icsEngineAnalyze;
     Boolean variations;         /* [HGM] enable variation-tree walking */
+    Boolean autoExtend;         /* [HGM] enable playing move(s) of right-clicked PV in analysis mode */
 
     /* [AS] New properties (down to the "ZIPPY" part) */
     Boolean scoreIsAbsolute[ENGINES];  /* If true, engine score is always from white side */
@@ -556,6 +576,7 @@ typedef struct {
     Boolean hideThinkingFromHuman; /* If true, program thinking is generated but not displayed in human/computer matches */
     Boolean useBitmaps;
     Boolean useFont;
+    Boolean useBorder;
     char * liteBackTextureFile; /* Name of texture bitmap for lite squares */
     char * darkBackTextureFile; /* Name of texture bitmap for dark squares */
     int liteBackTextureMode;
@@ -644,10 +665,12 @@ typedef struct {
     int zippyShortGame; /* [HGM] aborter   */
 #endif
     Boolean lowTimeWarning; /* [HGM] low time */
+    Boolean quitNext;
     char *lowTimeWarningColor;
 
     char *serverFileName;
     char *serverMovesName;
+    char *finger;
     Boolean suppressLoadMoves;
     int serverPause;
     int timeOdds[ENGINES];
@@ -838,4 +861,3 @@ void DisplayError P((String message, int error));
 #define secondOptions     engOptions[1]
 
 #endif
-