Annotation of 43BSDReno/games/chess/Xchess/xchess.h, revision 1.1.1.1

1.1       root        1: 
                      2: /* This file contains code for X-CHESS.
                      3:    Copyright (C) 1986 Free Software Foundation, Inc.
                      4: 
                      5: This file is part of X-CHESS.
                      6: 
                      7: X-CHESS is distributed in the hope that it will be useful,
                      8: but WITHOUT ANY WARRANTY.  No author or distributor
                      9: accepts responsibility to anyone for the consequences of using it
                     10: or for whether it serves any particular purpose or works at all,
                     11: unless he says so in writing.  Refer to the X-CHESS General Public
                     12: License for full details.
                     13: 
                     14: Everyone is granted permission to copy, modify and redistribute
                     15: X-CHESS, but only under the conditions described in the
                     16: X-CHESS General Public License.   A copy of this license is
                     17: supposed to have been given to you along with X-CHESS so you
                     18: can know your rights and responsibilities.  It should be in a
                     19: file named COPYING.  Among other things, the copyright notice
                     20: and this notice must be preserved on all copies.  */
                     21: 
                     22: 
                     23: /* RCS Info: $Revision: 1.5 $ on $Date: 86/11/26 12:11:39 $
                     24:  *           $Source: /users/faustus/xchess/RCS/xchess.h,v $
                     25:  * Copyright (c) 1986 Wayne A. Christopher, U. C. Berkeley CAD Group
                     26:  *     Permission is granted to do anything with this code except sell it
                     27:  *     or remove this message.
                     28:  *
                     29:  * Definitions for the X chess program.
                     30:  */
                     31: 
                     32: #include "std.h"
                     33: #include <X11/Xlib.h>
                     34: #include "scrollText/scrollText.h"
                     35: 
                     36: #define SIZE   8
                     37: 
                     38: typedef enum piecetype { PAWN, ROOK, KNIGHT, BISHOP, QUEEN, KING } piecetype;
                     39: typedef enum movetype { MOVE, QCASTLE, KCASTLE, CAPTURE } movetype;
                     40: typedef enum color { WHITE, BLACK, NONE } color;
                     41: 
                     42: typedef struct piece {
                     43:        enum piecetype type;
                     44:        enum color color;
                     45: } piece;
                     46: 
                     47: /* The board has y=0 and black at the top...  This probably isn't the best
                     48:  * place to keep track of who can castle, but it's part of the game state...
                     49:  */
                     50: 
                     51: typedef struct board {
                     52:        piece square[SIZE][SIZE];
                     53:        bool white_cant_castle_k;
                     54:        bool white_cant_castle_q;
                     55:        bool black_cant_castle_k;
                     56:        bool black_cant_castle_q;
                     57: } board;
                     58: 
                     59: typedef struct move {
                     60:        movetype type;
                     61:        piece piece;
                     62:        piece taken;
                     63:        int fromx, fromy;
                     64:        int tox, toy;
                     65:        struct move *next;
                     66:        bool enpassant;
                     67:        bool check;
                     68: } move;
                     69: 
                     70: #define iswhite(win, i, j)     (!(((i) + (j)) % 2))
                     71: 
                     72: /* Stuff for the display. */
                     73: 
                     74: typedef struct windata {
                     75:        Display *display;
                     76:        Window basewin;
                     77:        Window boardwin;
                     78:        Window recwin;
                     79:        Window wclockwin;
                     80:        Window bclockwin;
                     81:        Window messagewin;
                     82:        Window buttonwin;
                     83:        Window jailwin;
                     84:        Window icon;
                     85:        Pixmap iconpixmap;
                     86:        XColor blackpiece;
                     87:        XColor whitepiece;
                     88:        XColor blacksquare;
                     89:        XColor whitesquare;
                     90:        XColor border;
                     91:        XColor textcolor;
                     92:        XColor textback;
                     93:        XColor errortext;
                     94:        XColor playertext;
                     95:        XColor cursorcolor;
                     96:        XFontStruct *small;
                     97:        XFontStruct *medium;
                     98:        XFontStruct *large;
                     99:        bool bnw;
                    100:        color color;
                    101:        bool flipped;
                    102:        double whitehands[3];
                    103:        double blackhands[3];
                    104:        char *txtassoc;
                    105: } windata;
                    106: 
                    107: #define SMALL_FONT     "6x10"
                    108: #define MEDIUM_FONT    "8x13"
                    109: #define LARGE_FONT     "9x15"
                    110: #define JAIL_FONT      "6x10"
                    111: 
                    112: #define SQUARE_WIDTH   80
                    113: #define SQUARE_HEIGHT  80
                    114: 
                    115: #define BORDER_WIDTH   3
                    116: 
                    117: #define BOARD_WIDTH    8 * SQUARE_WIDTH + 7 * BORDER_WIDTH
                    118: #define BOARD_HEIGHT   8 * SQUARE_HEIGHT + 7 * BORDER_WIDTH
                    119: #define BOARD_XPOS     0
                    120: #define BOARD_YPOS     0
                    121: 
                    122: #define RECORD_WIDTH   265     /* 40 chars * 6 pixels / character. */
                    123: #define RECORD_HEIGHT  433
                    124: #define RECORD_XPOS    BOARD_WIDTH + BORDER_WIDTH
                    125: #define RECORD_YPOS    0
                    126: 
                    127: #define JAIL_WIDTH     RECORD_WIDTH
                    128: #define JAIL_HEIGHT    163
                    129: #define JAIL_XPOS      RECORD_XPOS
                    130: #define JAIL_YPOS      RECORD_YPOS + RECORD_HEIGHT + BORDER_WIDTH
                    131: 
                    132: #define CLOCK_WIDTH    131
                    133: #define CLOCK_HEIGHT   131 + BORDER_WIDTH + 20
                    134: #define WCLOCK_XPOS    RECORD_XPOS
                    135: #define WCLOCK_YPOS    RECORD_HEIGHT + JAIL_HEIGHT + BORDER_WIDTH * 2
                    136: #define BCLOCK_XPOS    WCLOCK_XPOS + CLOCK_WIDTH + BORDER_WIDTH
                    137: #define BCLOCK_YPOS    WCLOCK_YPOS
                    138: 
                    139: #define MESS_WIDTH     329
                    140: #define MESS_HEIGHT    92
                    141: #define MESS_XPOS      0
                    142: #define MESS_YPOS      BOARD_HEIGHT + BORDER_WIDTH
                    143: 
                    144: #define BUTTON_WIDTH   MESS_WIDTH
                    145: #define BUTTON_HEIGHT  MESS_HEIGHT
                    146: #define BUTTON_XPOS    MESS_WIDTH + BORDER_WIDTH
                    147: #define BUTTON_YPOS    MESS_YPOS
                    148: 
                    149: #define BASE_WIDTH     BOARD_WIDTH + RECORD_WIDTH + BORDER_WIDTH * 3
                    150: #define BASE_HEIGHT    BOARD_HEIGHT + MESS_HEIGHT + BORDER_WIDTH * 3
                    151: 
                    152: #define BASE_XPOS      50
                    153: #define BASE_YPOS      50
                    154: 
                    155: #define BLACK_PIECE_COLOR      "#202020"
                    156: #define WHITE_PIECE_COLOR      "#FFFFCC"
                    157: #define BLACK_SQUARE_COLOR     "#77A26D"
                    158: #define WHITE_SQUARE_COLOR     "#C8C365"
                    159: #define BORDER_COLOR           "#902E39"
                    160: #define TEXT_COLOR             "#006D6D"
                    161: #define TEXT_BACK              "#FFFFDD"
                    162: #define ERROR_TEXT             "Red"
                    163: #define PLAYER_TEXT            "Blue"
                    164: #define CURSOR_COLOR           "#FF606F"
                    165: 
                    166: #define DEF_RECORD_FILE                "xchess.game"
                    167: 
                    168: #define NUM_FLASHES            5
                    169: #define FLASH_SIZE             10
                    170: 
                    171: /* xchess.c */
                    172: 
                    173: extern void main();
                    174: extern bool debug;
                    175: extern char *progname;
                    176: extern char *proghost;
                    177: extern char *piecenames[];
                    178: extern char *colornames[];
                    179: extern char *movetypenames[];
                    180: extern char *dispname1, *dispname2;
                    181: extern bool oneboard;
                    182: extern bool bnwflag;
                    183: extern bool progflag;
                    184: extern bool blackflag;
                    185: extern bool quickflag;
                    186: extern int num_flashes;
                    187: extern int flash_size;
                    188: extern char *black_piece_color;
                    189: extern char *white_piece_color;
                    190: extern char *black_square_color;
                    191: extern char *white_square_color;
                    192: extern char *border_color;
                    193: extern char *text_color;
                    194: extern char *text_back;
                    195: extern char *error_text;
                    196: extern char *player_text;
                    197: extern char *cursor_color;
                    198: 
                    199: /* board.c */
                    200: 
                    201: extern void board_setup();
                    202: extern void board_drawall();
                    203: extern void board_move();
                    204: extern board *chessboard;
                    205: extern void board_init();
                    206: 
                    207: /* window.c */
                    208: 
                    209: extern bool win_setup();
                    210: extern void win_redraw();
                    211: extern void win_restart();
                    212: extern void win_drawboard();
                    213: extern void win_drawpiece();
                    214: extern void win_erasepiece();
                    215: extern void win_process();
                    216: extern void win_flash();
                    217: extern windata *win1, *win2;
                    218: extern bool win_flashmove;
                    219: 
                    220: /* control.c */
                    221: 
                    222: extern void button_pressed();
                    223: extern void button_released();
                    224: extern void move_piece();
                    225: extern void prog_move();
                    226: extern move *moves;
                    227: extern move *foremoves;
                    228: extern color nexttomove;
                    229: extern void replay();
                    230: extern void forward();
                    231: extern void cleanup();
                    232: extern void restart();
                    233: extern bool noisyflag;
                    234: 
                    235: /* valid.c */
                    236: 
                    237: extern bool valid_move();
                    238: 
                    239: /* record.c */
                    240: 
                    241: extern void record_move();
                    242: extern void record_reset();
                    243: extern void record_save();
                    244: extern void record_back();
                    245: extern void record_init();
                    246: extern void record_end();
                    247: extern bool record_english;
                    248: extern char *record_file;
                    249: extern int movenum;
                    250: extern bool saveflag;
                    251: 
                    252: /* message.c */
                    253: 
                    254: extern void message_init();
                    255: extern void message_add();
                    256: extern void message_send();
                    257: 
                    258: /* clock.c */
                    259: 
                    260: extern void clock_init();
                    261: extern void clock_draw();
                    262: extern void clock_update();
                    263: extern void clock_switch();
                    264: extern bool clock_started;
                    265: extern int movesperunit;
                    266: extern int timeunit;
                    267: extern int whiteseconds;
                    268: extern int blackseconds;
                    269: 
                    270: /* button.c */
                    271: 
                    272: extern void button_draw();
                    273: extern void button_service();
                    274: 
                    275: /* jail.c */
                    276: 
                    277: extern void jail_init();
                    278: extern void jail_draw();
                    279: extern void jail_add();
                    280: extern void jail_remove();
                    281: 
                    282: /* program.c */
                    283: extern bool program_init();
                    284: extern void program_end();
                    285: extern void program_send();
                    286: extern void program_undo();
                    287: extern move *program_get();
                    288: 
                    289: /* parse.c */
                    290: 
                    291: extern void load_game();
                    292: extern move *parse_file();
                    293: extern move *parse_move();
                    294: extern move *parse_imove();
                    295: extern bool loading_flag;
                    296: extern bool loading_paused;
                    297: 
                    298: /* popup.c */
                    299: 
                    300: extern bool pop_question();
                    301: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.