#define BOARD_SIZE				8				/* rarely changed */
#define BIG_SQUARE_SIZE			80
#define SMALL_SQUARE_SIZE		64
#define LINE_GAP				3
#define MAX_MOVES				512
#define MSG_SIZ					256
#define TIME_CONTROL			5				/* in minutes */
#define TIME_DELAY				"1.0"			/* seconds between moves */
#define TIME_SEARCH				0				/* don't specify search time */
#define MOVES_PER_SESSION		40				/* moves per TIME_CONTROL */
#define FIRST_CHESS_PROGRAM		"gnuchessr"
#define SECOND_CHESS_PROGRAM	"gnuchessr"
#define FIRST_HOST				"localhost"
#define SECOND_HOST				"localhost"
#define MATCH_MODE				"False"
#define SAVE_GAME_FILE			"xboard.game.save"
#define READ_GAME_FILE			"xboard.game.read"
#define INIT_STRING				"new\nbeep\nrandom\neasy\n"
#define SAVE_POSITION_FILE		"xboard.position.save"
#define READ_POSITION_FILE		"xboard.position.read"
#define SOLID_PAWN_BITMAP		"solid_pawn.bitmap"
#define SOLID_ROOK_BITMAP		"solid_rook.bitmap"
#define SOLID_KNIGHT_BITMAP		"solid_knight.bitmap"
#define SOLID_BISHOP_BITMAP		"solid_bishop.bitmap"
#define SOLID_QUEEN_BITMAP		"solid_queen.bitmap"
#define SOLID_KING_BITMAP		"solid_king.bitmap"
#define OUTLINE_PAWN_BITMAP		"outline_pawn.bitmap"
#define OUTLINE_ROOK_BITMAP		"outline_rook.bitmap"
#define OUTLINE_KNIGHT_BITMAP	"outline_knight.bitmap"
#define OUTLINE_BISHOP_BITMAP	"outline_bishop.bitmap"
#define OUTLINE_QUEEN_BITMAP	"outline_queen.bitmap"
#define OUTLINE_KING_BITMAP		"outline_king.bitmap"
#define WHITE_PIECE_COLOR		"#FFFFCC"
#define BLACK_PIECE_COLOR		"#202020"
#define LIGHT_SQUARE_COLOR		"#C8C365"
#define DARK_SQUARE_COLOR		"#77A26D"

typedef unsigned char Board[BOARD_SIZE][BOARD_SIZE];

enum {
	BeginningOfGame, MachinePlaysWhite, MachinePlaysBlack, TwoMachinesPlay,
	ForceMoves, PlayFromGameFile, SetupPosition, PauseGame, EndOfGame
};

enum { MatchFalse, MatchInit, MatchPosition, MatchOpening };

enum {
	WhitePawn, WhiteRook, WhiteKnight, WhiteBishop, WhiteQueen, WhiteKing,
	BlackPawn, BlackRook, BlackKnight, BlackBishop, BlackQueen, BlackKing,
	EmptySquare
};

enum {
	WhiteKingSideCastle = 1, WhiteQueenSideCastle, WhitePromotion,
	BlackKingSideCastle, BlackQueenSideCastle, BlackPromotion,
	WhiteCapturesEnPassant, BlackCapturesEnPassant, NormalMove,
	WhiteWins, BlackWins, GameIsDrawn
};

enum {			/* Same order as buttonStrings */
	ButtonQuit, ButtonPlayFromFile, ButtonMachinePlaysBlack, ButtonForward,
	ButtonReset, ButtonSetupFromFile, ButtonMachinePlaysWhite, ButtonBackward,
	ButtonFlip, ButtonSaveGame, ButtonSwitch, ButtonForce,
	ButtonHint, ButtonSavePosition, ButtonTwoMachinesPlay, ButtonPause
};

enum { ResetTimers, DisplayTimers, StopTimers, ReStartTimers };
