* Massachusetts.
*
* Enhancements Copyright 1992-2001, 2002, 2003, 2004, 2005, 2006,
- * 2007, 2008, 2009 Free Software Foundation, Inc.
+ * 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
*
* Enhancements Copyright 2005 Alessandro Scotti
*
// [HGM] license: Messages that engines must print to satisfy their license requirements for patented variants
#define GOTHIC "Gothic Chess (see www.GothicChess.com) is licensed under U.S. Patent #6,481,716 by Ed Trice"
-#define NOFALCON "Falcon Chess (see www.chessvariants.com) is licensed under U.S. Patent #5,690,334 by George W. Duke"
+#define FALCON "Falcon Chess (see www.chessvariants.com) is licensed under U.S. Patent #5,690,334 by George W. Duke"
/* [HGM] Some notes about board sizes:
In games that allow piece drops, the holdings are considered part of the
#define FIRST_HOST "localhost"
#define SECOND_HOST "localhost"
#define TELNET_PROGRAM "telnet"
-#define DEF_BITMAP_DIR "/usr/share/games/xboard/bitmaps.xchess" /* AP: shouldn't be hardcoded directory, but better than nothing at the moment */
+#define DEF_BITMAP_DIR BITMAPDIR
#define MATCH_MODE "False"
#define INIT_STRING "new\nrandom\n"
#define WHITE_STRING "white\ngo\n"
#define COMMENT_FONT 4
#define EDITTAGS_FONT 5
#define MOVEHISTORY_FONT 6
-#define NUM_FONTS 7
+#define GAMELIST_FONT 7
+#define NUM_FONTS 8
/* Default to no flashing (the "usual" XBoard behavior) */
#define FLASH_COUNT 0 /* Number of times to flash */
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,
- WhitePromotionChancellor, WhitePromotionArchbishop, WhitePromotionCentaur,
- BlackPromotionKnight, BlackPromotionBishop,
- BlackPromotionRook, BlackPromotionQueen, BlackPromotionKing,
- 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;
VariantGreat,
VariantTwilight,
VariantMakruk,
+ VariantSChess,
+ VariantGrand,
+ VariantSpartan,
VariantUnknown /* Catchall for other unknown variants */
} VariantClass;
"great",\
"twilight",\
"makruk",\
+ "seirawan",\
+ "grand",\
+ "spartan",\
"unknown" \
}
+#define ENGINES 2
+
typedef struct {
+ char *language;
#if !defined(_amigados)
char *whitePieceColor;
char *blackPieceColor;
char *jailSquareColor;
char *highlightSquareColor;
char *premoveHighlightColor;
+ char *dialogColor;
+ char *buttonColor;
#else
int whitePieceColor;
int blackPieceColor;
int premoveHighlightColor;
#endif
int movesPerSession;
- int timeIncrement;
- char *initString;
- char *secondInitString;
- char *firstComputerString;
- char *secondComputerString;
- char *firstChessProgram;
- char *secondChessProgram;
- char *firstDirectory;
- char *secondDirectory;
+ float timeIncrement;
+ char *engInitString[ENGINES];
+ char *computerString[ENGINES];
+ char *chessProgram[ENGINES];
+ char *directory[ENGINES];
+ char *pgnName[ENGINES];
Boolean firstPlaysBlack;
Boolean noChessProgram;
- char *firstHost;
- char *secondHost;
+ char *host[ENGINES];
char *bitmapDirectory;
+ char *soundDirectory;
char *remoteShell;
char *remoteUser;
float timeDelay;
Boolean autoComment;
Boolean getMoveList;
Boolean testLegality;
- int borderXoffset; /* xboard only */
- int borderYoffset; /* xboard only */
+ Boolean topLevel; /* xboard, top-level auxiliary windows */
Boolean titleInWindow; /* xboard only */
Boolean localLineEditing; /* WinBoard only */
Boolean zippyTalk;
char *soundIcsLoss;
char *soundIcsDraw;
char *soundIcsUnfinished;
- Boolean reuseFirst;
- Boolean reuseSecond;
+ Boolean disguise; /* [HGM] Promoted Pawns look like pieces in bughouse */
+ Boolean reuse[ENGINES];
Boolean animateDragging; /* If True, animate mouse dragging of pieces */
Boolean animate; /* If True, animate non-mouse moves */
int animSpeed; /* Delay in milliseconds between animation frames */
int fontSizeTolerance; /* xboard only */
char *initialMode;
char *variant;
- int firstProtocolVersion;
- int secondProtocolVersion;
+ char *chatBoxes;
+ int protocolVersion[ENGINES];
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 */
- Boolean secondScoreIsAbsolute; /* If true, engine score is always from white side */
+ Boolean scoreIsAbsolute[ENGINES]; /* If true, engine score is always from white side */
Boolean saveExtendedInfoInPGN; /* If true, saved PGN games contain extended info */
Boolean hideThinkingFromHuman; /* If true, program thinking is generated but not displayed in human/computer matches */
+ Boolean useBitmaps;
+ Boolean useFont;
char * liteBackTextureFile; /* Name of texture bitmap for lite squares */
char * darkBackTextureFile; /* Name of texture bitmap for dark squares */
int liteBackTextureMode;
Boolean highlightMoveWithArrow;
int highlightArrowColor;
Boolean useStickyWindows;
+ Boolean bgObserve; /* [HGM] bughouse */
+ Boolean dualBoard; /* [HGM] dual */
+ Boolean viewer;
+ char * viewerOptions;
int adjudicateDrawMoves;
Boolean autoDisplayComment;
Boolean autoDisplayTags;
- Boolean firstIsUCI;
- Boolean secondIsUCI;
- Boolean firstHasOwnBookUCI;
- Boolean secondHasOwnBookUCI;
+ Boolean isUCI[ENGINES];
+ Boolean hasOwnBookUCI[ENGINES];
char * adapterCommand;
+ char * ucciAdapter;
char * polyglotDir;
Boolean usePolyglotBook;
+ Boolean defNoBook;
char * polyglotBook;
+ int bookDepth;
+ int bookStrength;
int defaultHashSize;
int defaultCacheSizeEGTB;
char * defaultPathEGTB;
+ int defaultMatchGames;
/* [HGM] Board size */
int NrFiles;
int holdingsSize;
int matchPause;
char * pieceToCharTable;
+ char * pieceNickNames;
+ char * colorNickNames;
Boolean allWhite;
Boolean upsideDown;
Boolean alphaRank;
Boolean lowTimeWarning; /* [HGM] low time */
char *lowTimeWarningColor;
+ char *serverFileName;
char *serverMovesName;
Boolean suppressLoadMoves;
int serverPause;
- int firstTimeOdds;
- int secondTimeOdds;
+ int timeOdds[ENGINES];
int timeOddsMode;
- int firstAccumulateTC;
- int secondAccumulateTC;
- int firstNPS;
- int secondNPS;
+ int accumulateTC[ENGINES];
+ int NPS[ENGINES];
Boolean autoKibitz;
int engineComments;
+ int eloThreshold1; /* [HGM] select */
+ int eloThreshold2;
+ int dateThreshold;
+ int searchMode;
+ int stretch;
+ Boolean ignoreColors;
+ Boolean findMirror;
char *userName;
int rewindIndex; /* [HGM] autoinc */
int sameColorGames; /* [HGM] alternate */
int smpCores; /* [HGM] SMP */
char *egtFormats;
int niceEngines; /* [HGM] nice */
- char *firstLogo; /* [HGM] logo */
- char *secondLogo;
+ char *logo[ENGINES];/* [HGM] logo */
+ char *pairingEngine;/* [HGM] pairing */
Boolean autoLogo;
Boolean noGUI; /* [HGM] fast: suppress all display updates */
- char *firstOptions; /* [HGM] options */
- char *secondOptions;
- char *fenOverride1;
- char *fenOverride2;
+ char *engOptions[ENGINES]; /* [HGM] options */
+ char *fenOverride[ENGINES];
+ char *features[ENGINES];
+ char *featureDefaults;
+ char *sysOpen;
Boolean keepAlive; /* [HGM] alive */
Boolean forceIllegal;/*[HGM] illegal */
Boolean noJoin; /* [HGM] join */
Boolean useInternalWrap; /* use internal wrapping -- noJoin usurps this if set */
Boolean pasteSelection; /* paste X selection instead of clipboard */
int nrVariations; /* [HGM] multivar */
+ int zoom; /* [HGM] evalGraph */
+ int evalThreshold; /* [HGM] evalGraph */
Boolean dropMenu; /* [HGM] pv */
Boolean markers; /* [HGM] markers */
+ Boolean autoCopyPV;
+ Boolean pieceMenu;
+ Boolean sweepSelect;
+ Boolean whitePOV;
+ Boolean scoreWhite;
+ Boolean pvSAN[ENGINES];
+
+ int recentEngines;
+ char *recentEngineList;
+ char *tourneyFile;
+ char *defName;
+ char *processes;
+ char *results;
+ char *participants;
+ char *afterGame;
+ char *afterTourney;
+ int tourneyType;
+ int tourneyCycles;
+ int seedBase;
+ Boolean roundSync;
+ Boolean cycleSync;
+ Boolean numberTag;
} 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'
extern WindowPlacement wpGameList;
extern WindowPlacement wpTags;
+#define MAXENGINES 2000
+
// [HGM] chat
-#define MAX_CHAT 3
+#define MAX_CHAT 5
extern int chatCount;
extern char chatPartner[MAX_CHAT][MSG_SIZ];
+// [HGM] generally useful macros; there are way too many memory leaks...
+#define FREE(x) if(x) free(x)
+#define ASSIGN(x, y) if(x) free(x); x = strdup(y)
+
+// [HGM] for now we use the kludge to redefine all the unstructured options by their array counterpart
+// in due time we would have to make the actual substitutions all through the source
+
+#define firstInitString engInitString[0]
+#define secondInitString engInitString[1]
+#define firstComputerString computerString[0]
+#define secondComputerString computerString[1]
+#define firstChessProgram chessProgram[0]
+#define secondChessProgram chessProgram[1]
+#define firstDirectory directory[0]
+#define secondDirectory directory[1]
+#define firstProtocolVersion protocolVersion[0]
+#define secondProtocolVersion protocolVersion[1]
+#define firstScoreIsAbsolute scoreIsAbsolute[0]
+#define secondScoreIsAbsolute scoreIsAbsolute[1]
+#define firstHasOwnBookUCI hasOwnBookUCI[0]
+#define secondHasOwnBookUCI hasOwnBookUCI[1]
+#define firstTimeOdds timeOdds[0]
+#define secondTimeOdds timeOdds[1]
+#define firstAccumulateTC accumulateTC[0]
+#define secondAccumulateTC accumulateTC[1]
+#define firstHost host[0]
+#define secondHost host[1]
+#define reuseFirst reuse[0]
+#define reuseSecond reuse[1]
+#define firstIsUCI isUCI[0]
+#define secondIsUCI isUCI[1]
+#define firstNPS NPS[0]
+#define secondNPS NPS[1]
+#define firstLogo logo[0]
+#define secondLogo logo[1]
+#define fenOverride1 fenOverride[0]
+#define fenOverride2 fenOverride[1]
+#define firstOptions engOptions[0]
+#define secondOptions engOptions[1]
#endif