diff options
author | Markus Uhlin <markus@nifty-networks.net> | 2023-12-07 21:31:49 +0100 |
---|---|---|
committer | Markus Uhlin <markus@nifty-networks.net> | 2023-12-07 21:31:49 +0100 |
commit | 79b59f9b30fb6a1fdf8c3efb446271f7cb00d434 (patch) | |
tree | f6ade4ccbc3af20d825edacfd12b5da8ded8d240 /FICS/gamedb.h |
FICS 1.6.2
Diffstat (limited to 'FICS/gamedb.h')
-rw-r--r-- | FICS/gamedb.h | 209 |
1 files changed, 209 insertions, 0 deletions
diff --git a/FICS/gamedb.h b/FICS/gamedb.h new file mode 100644 index 0000000..a7f027c --- /dev/null +++ b/FICS/gamedb.h @@ -0,0 +1,209 @@ +/* gamedb.h + * + */ + +/* + fics - An internet chess server. + Copyright (C) 1993 Richard V. Nash + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. +*/ + +/* Revision history: + name email yy/mm/dd Change + Richard Nash 93/10/22 Created +*/ + +#ifndef _GAMEDB_H +#define _GAMEDB_H + +#include <time.h> +#include "board.h" + +extern char *bstr[]; +extern char *rstr[]; + +#define GAMEFILE_VERSION 3 +#define MAX_GLINE_SIZE 1024 + +#define REL_GAME 0 +#define REL_SPOS 1 +#define REL_REFRESH 2 +#define REL_EXAMINE 3 + +#define GAME_EMPTY 0 +#define GAME_NEW 1 +#define GAME_ACTIVE 2 +#define GAME_EXAMINE 3 /* examine is now 3 */ + +/* +#define GAME_STORED 3 +#define GAME_EXAMINE 4 +*/ + +#define TYPE_UNTIMED 0 +#define TYPE_BLITZ 1 +#define TYPE_STAND 2 +#define TYPE_NONSTANDARD 3 +#define TYPE_WILD 4 +#define TYPE_LIGHT 5 +#define TYPE_BUGHOUSE 6 + +#ifdef TIMESEAL +#define FLAG_CHECKING -1 +#define FLAG_NONE 0 +#define FLAG_CALLED 1 +#define FLAG_ABORT 2 +#endif + +#define END_CHECKMATE 0 +#define END_RESIGN 1 +#define END_FLAG 2 +#define END_AGREEDDRAW 3 +#define END_REPETITION 4 +#define END_50MOVERULE 5 +#define END_ADJOURN 6 +#define END_LOSTCONNECTION 7 +#define END_ABORT 8 +#define END_STALEMATE 9 +#define END_NOTENDED 10 +#define END_COURTESY 11 +#define END_BOTHFLAG 12 +#define END_NOMATERIAL 13 +#define END_FLAGNOMATERIAL 14 +#define END_ADJDRAW 15 +#define END_ADJWIN 16 +#define END_ADJABORT 17 +#define END_COURTESYADJOURN 18 + +#if 0 +typedef unsigned char boardList_t[74]; +#endif + +typedef struct _game { + /* Saved in the game file */ + int wInitTime, wIncrement; + int bInitTime, bIncrement; + time_t timeOfStart; +#ifdef TIMESEAL + int wLastRealTime; + int wRealTime; + int wTimeWhenReceivedMove; + int wTimeWhenMoved; + int bLastRealTime; + int bRealTime; + int bTimeWhenReceivedMove; + int bTimeWhenMoved; + int flag_pending; + unsigned long flag_check_time; +#endif + int wTime; + int bTime; + int clockStopped; + int rated; + int private; + int type; + int passes; /* For simul's */ + int numHalfMoves; + move_t *moveList; /* primary movelist */ + unsigned char FENstartPos[74]; /* Save the starting position. */ + game_state_t game_state; +/* This is now in moveList, and FENstartPos. -- hersco */ +/* + int boardListSize; + boardList_t *boardList; + boardList_t boardList[500]; +*/ + char white_name[18]; /* to hold the playername even after he disconnects */ + char black_name[18]; + int white_rating; + int black_rating; + + /* Not saved in game file */ + int revertHalfMove; + int totalHalfMoves; + int white; + int black; + /* int old_white; */ /* Contains the old game player number */ + /* int old_black; */ /* Contains the old game player number */ + int link; + int status; + int moveListSize; /* Total allocated in *moveList */ + int examHalfMoves; + move_t *examMoveList; /* extra movelist for examine */ + int examMoveListSize; + + unsigned startTime; /* The relative time the game started */ + unsigned lastMoveTime; /* Last time a move was made */ + unsigned lastDecTime; /* Last time a players clock was decremented */ + + int result; + int winner; + +} game; + +extern game *garray; +extern int g_num; + +extern int game_new(void); +extern int game_zero(int); +extern int game_free(int); +extern int game_clear(int); +extern int game_remove(int); +extern int game_finish(int); +extern void MakeFENpos (int, char *); + +extern char *game_time_str(int, int, int, int); +extern char *game_str(int, int, int, int, int, char *, char *); +extern int game_isblitz(int, int, int, int, char *, char *); + +extern void send_board_to(int, int); +extern void send_boards(int); +extern void game_update_time(int); +extern void game_update_times(void); + +/* #define MAXOLDGAMES 50 + +extern int FindOldGameFor(int); +extern int RemoveOldGamesForPlayer(int); +extern int ReallyRemoveOldGamesForPlayer(int); +extern int NewOldGame(int); +Kill this oldgame rubbish - wastes memory - DAV */ + +extern char *movesToString(int, int); +extern char *EndSym(int); +extern char *EndString(int, int); + +extern void game_disconnect(int, int); + +extern int CharToPiece(char); +extern int PieceToChar(int); +extern int got_attr_value(); +extern int ReadGameAttrs(); +extern int game_read(int, int, int); +extern int game_delete(int, int); +extern int game_save(int); +extern void RemHist (char *); + +extern int journal_get_info(int,char,char*,int*, + char*,int*,char*,int*,int*,char*, + char*,char*,char*); +extern void addjournalitem(int,char,char*,int,char*,int,char*,int,int, + char*, char*, char* ,char*); +extern int pgames(int, int, char *); +extern int pjournal(int, int, char *); +extern void game_write_complete(int, int, char *); +extern int game_count(void); + +/* extern time_t time(); */ + +#endif + |