home *** CD-ROM | disk | FTP | other *** search
/ Amiga MA Magazine 1998 #3 / amigamamagazinepolishissue1998.iso / szachy / gnu / amyboard-3.2.pl2 / common.h < prev    next >
C/C++ Source or Header  |  1995-03-08  |  8KB  |  230 lines

  1. /*
  2.  * common.h -- Common definitions for X and Windows NT versions of XBoard
  3.  * $Id: common.h,v 1.24 1995/03/09 00:43:28 mann Exp $
  4.  *
  5.  * Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts.
  6.  * Enhancements Copyright 1992-95 Free Software Foundation, Inc.
  7.  *
  8.  * The following terms apply to Digital Equipment Corporation's copyright
  9.  * interest in XBoard:
  10.  * ------------------------------------------------------------------------
  11.  * All Rights Reserved
  12.  *
  13.  * Permission to use, copy, modify, and distribute this software and its
  14.  * documentation for any purpose and without fee is hereby granted,
  15.  * provided that the above copyright notice appear in all copies and that
  16.  * both that copyright notice and this permission notice appear in
  17.  * supporting documentation, and that the name of Digital not be
  18.  * used in advertising or publicity pertaining to distribution of the
  19.  * software without specific, written prior permission.
  20.  *
  21.  * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
  22.  * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
  23.  * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
  24.  * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
  25.  * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
  26.  * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
  27.  * SOFTWARE.
  28.  * ------------------------------------------------------------------------
  29.  *
  30.  * The following terms apply to the enhanced version of XBoard distributed
  31.  * by the Free Software Foundation:
  32.  * ------------------------------------------------------------------------
  33.  * This program is free software; you can redistribute it and/or modify
  34.  * it under the terms of the GNU General Public License as published by
  35.  * the Free Software Foundation; either version 2 of the License, or
  36.  * (at your option) any later version.
  37.  *
  38.  * This program is distributed in the hope that it will be useful,
  39.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  40.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  41.  * GNU General Public License for more details.
  42.  *
  43.  * You should have received a copy of the GNU General Public License
  44.  * along with this program; if not, write to the Free Software
  45.  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  46.  * ------------------------------------------------------------------------
  47.  */
  48.  
  49. /* Begin compatibility grunge  */
  50.  
  51. #if defined(__STDC__) || defined(WIN32)
  52. #define    P(args)    args
  53. typedef void *VOIDSTAR;
  54. #else
  55. #define P(args)        ()
  56. typedef char *VOIDSTAR;
  57. #endif
  58.  
  59. #ifdef WIN32
  60. typedef char Boolean;
  61. typedef char *String;
  62. #define popen _popen
  63. #define pclose _pclose
  64. #else
  65. #include <X11/Intrinsic.h>
  66. #endif
  67.  
  68. #ifndef TRUE
  69. #define TRUE 1
  70. #define FALSE 0
  71. #endif
  72.  
  73. /* End compatibility grunge */
  74.  
  75.  
  76. #define BOARD_SIZE        8
  77. #define LARGE_SQUARE_SIZE    80
  78. #define MEDIUM_SQUARE_SIZE    64
  79. #define SMALL_SQUARE_SIZE       40
  80. #define LARGE_LINE_GAP        3
  81. #define MEDIUM_LINE_GAP        3
  82. #define SMALL_LINE_GAP        2
  83. #define MAX_MOVES        512
  84. #define MSG_SIZ            256
  85. #define DIALOG_SIZE        256
  86. #define STAR_MATCH_N            16
  87. #define MOVE_LEN        32
  88. #define TIME_CONTROL        "5"    /* in minutes */
  89. #define TIME_DELAY_QUOTE    "1.0"    /* seconds between moves */
  90. #define TIME_DELAY              ((float) 1.0)
  91. #define MOVES_PER_SESSION    40    /* moves per TIME_CONTROL */
  92. #define WhiteOnMove(move)    (((move) % 2) == 0)
  93. #define ICS_HOST                "chess.lm.com"
  94. #define ICS_PORT            5000
  95. #define ICS_COMM_PORT           ""
  96. #define FIRST_CHESS_PROGRAM    "gnuchessx"
  97. #define SECOND_CHESS_PROGRAM    "gnuchessx"
  98. #define FIRST_HOST        "localhost"
  99. #define SECOND_HOST        "localhost"
  100. #define TELNET_PROGRAM          "telnet"
  101. #define MATCH_MODE        "False"
  102. #define INIT_STRING        "new\nbeep\nrandom\neasy\n"
  103. #define WHITE_STRING        "white\ngo\n"
  104. #define BLACK_STRING        "black\ngo\n"
  105. #define DEFAULT_SIZE            "Large"
  106. #define WHITE_PIECE_COLOR    "#FFFFCC"
  107. #define BLACK_PIECE_COLOR    "#202020"
  108. #define LIGHT_SQUARE_COLOR    "#C8C365"
  109. #define DARK_SQUARE_COLOR    "#77A26D"
  110. #define BELLCHAR                '\007'
  111. #define NULLCHAR                '\000'
  112.  
  113. typedef enum {
  114.     BeginningOfGame, MachinePlaysWhite, MachinePlaysBlack, TwoMachinesPlay,
  115.     EditGame, PlayFromGameFile, EndOfGame, EditPosition,
  116.     IcsIdle, IcsPlayingWhite, IcsPlayingBlack, IcsObserving,
  117.     IcsExamining
  118.   } GameMode;
  119.  
  120. typedef enum {
  121.     WhitePawn, WhiteRook, WhiteKnight, WhiteBishop, WhiteQueen, WhiteKing,
  122.     BlackPawn, BlackRook, BlackKnight, BlackBishop, BlackQueen, BlackKing,
  123.     EmptySquare,
  124.     ClearBoard, WhitePlay, BlackPlay /*for use on EditPosition menus*/
  125.   } ChessSquare;
  126.  
  127. typedef ChessSquare Board[BOARD_SIZE][BOARD_SIZE];
  128.  
  129. typedef enum {
  130.     WhiteKingSideCastle = 1, WhiteQueenSideCastle,
  131.     WhiteKingSideCastleWild, WhiteQueenSideCastleWild,
  132.     WhitePromotionKnight, WhitePromotionBishop,
  133.     WhitePromotionRook, WhitePromotionQueen,
  134.     BlackPromotionKnight, BlackPromotionBishop,
  135.     BlackPromotionRook, BlackPromotionQueen,
  136.     BlackKingSideCastle, BlackQueenSideCastle,
  137.     BlackKingSideCastleWild, BlackQueenSideCastleWild,
  138.     WhiteCapturesEnPassant, BlackCapturesEnPassant, NormalMove,
  139.     WhiteWins, BlackWins, GameIsDrawn, GameUnfinished,
  140.     GNUChessGame, XBoardGame, MoveNumberOne, 
  141.     BadMove, Comment, AmbiguousMove, PositionDiagram, ElapsedTime, PGNTag
  142.   } ChessMove;
  143.  
  144. typedef struct {
  145.     char *whitePieceColor;
  146.     char *blackPieceColor;
  147.     char *lightSquareColor;
  148.     char *darkSquareColor;
  149.     int movesPerSession;
  150.     char *initString;
  151.     char *whiteString;
  152.     char *blackString;
  153.     char *firstChessProgram;
  154.     char *secondChessProgram;
  155.     Boolean noChessProgram;
  156.     char *firstHost;
  157.     char *secondHost;
  158.     char *bitmapDirectory;
  159.     char *remoteShell;
  160.     char *remoteUser;
  161.     float timeDelay;
  162.     char *timeControl;
  163.     Boolean icsActive;
  164.     char *icsHost;
  165.     int icsPort;
  166.     char *icsCommPort;  /* if set, use serial port instead of tcp host/port */
  167.     char *icsLogon;     /* Hack to permit variable logon scripts. */
  168.     Boolean useTelnet;
  169.     char *telnetProgram;
  170.     char *gateway;
  171.     char *loadGameFile;
  172.     int loadGameIndex;      /* game # within file */
  173.     char *saveGameFile;
  174.     Boolean autoSaveGames;
  175.     char *loadPositionFile;
  176.     int loadPositionIndex;  /* position # within file */
  177.     char *savePositionFile;
  178.     Boolean matchMode;
  179.     Boolean monoMode;
  180.     Boolean debugMode;
  181.     Boolean clockMode;
  182.     char *boardSize;
  183.     Boolean Iconic;
  184.     char *searchTime;
  185.     int searchDepth;
  186.     Boolean showCoords;
  187.     char *clockFont;
  188.     char *messageFont;
  189.     char *coordFont;
  190.     Boolean ringBellAfterMoves;
  191.     Boolean autoCallFlag;
  192.     Boolean flipView;
  193.     char *cmailGameName;
  194.     Boolean alwaysPromoteToQueen;
  195.     Boolean oldSaveStyle;
  196.     Boolean quietPlay;
  197.     Boolean showThinking;
  198.     Boolean autoObserve;
  199. /**** These are used only by xboard: ********/
  200.     int borderXoffset;
  201.     int borderYoffset;
  202.     Boolean titleInWindow;
  203. /********************************************/
  204. /**** Currently used only by WinBoard: ******/
  205.     Boolean localEdit;
  206. /********************************************/
  207.     Boolean zippyTalk;
  208.     Boolean zippyPlay;
  209. } AppData, *AppDataPtr;
  210.  
  211. extern AppData appData;
  212.  
  213. typedef struct {
  214.     /* PGN 7-tag info */
  215.     char *event;
  216.     char *site;
  217.     char *date;
  218.     char *round;
  219.     char *white;
  220.     char *black;
  221.     ChessMove result;
  222.     /* Additional info */
  223.     char *fen;          /* NULL or FEN for starting position; input only */
  224.     char *resultDetails;
  225.     char *timeControl;
  226.     char *extraTags;    /* NULL or "[Tag \"Value\"]\n", etc. */
  227. } GameInfo;
  228.  
  229.  
  230.