From c3eee8e333866d92e5fd94ae83cef618758c11bb Mon Sep 17 00:00:00 2001 From: Markus Uhlin Date: Mon, 15 Sep 2025 18:50:32 +0200 Subject: FICS RPBLC v1.4.6 --- FICS/gamedb.h | 205 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 205 insertions(+) create mode 100644 FICS/gamedb.h (limited to 'FICS/gamedb.h') diff --git a/FICS/gamedb.h b/FICS/gamedb.h new file mode 100644 index 0000000..8dc84d3 --- /dev/null +++ b/FICS/gamedb.h @@ -0,0 +1,205 @@ +/* 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 + Markus Uhlin 23/12/20 Cleaned up the file + Markus Uhlin 24/04/29 Added missing parameter lists +*/ + +#ifndef _GAMEDB_H +#define _GAMEDB_H + +#include +#include + +#include "board.h" +#include "command.h" + +extern const char *bstr[7]; +extern const char *rstr[2]; + +#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 + +enum { + TYPE_UNRATED = 0, + TYPE_RATED +}; + +#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 + +typedef struct _game { + /* + * Saved in the game file. + */ + int wInitTime, wIncrement; + int bInitTime, bIncrement; + time_t timeOfStart; + +#ifdef TIMESEAL + int bLastRealTime; + int bRealTime; + int bTimeWhenMoved; + int bTimeWhenReceivedMove; + int flag_pending; + int wLastRealTime; + int wRealTime; + int wTimeWhenMoved; + int wTimeWhenReceivedMove; + 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; + 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 link; + int status; + int moveListSize; // Total allocated in '*moveList' + int examHalfMoves; + move_t *examMoveList; // Extra movelist for examine + int examMoveListSize; + + uint64_t startTime; // The relative time the game started + uint64_t lastMoveTime; // Last time a move was made + uint64_t lastDecTime; // Last time a players clock was + // decremented + + int result; + int winner; +} game; + +struct JGI_context { + int p; + char from_spot; + char WhiteName[MAX_LOGIN_NAME + 1]; + int WhiteRating; + char BlackName[MAX_LOGIN_NAME + 1]; + int BlackRating; + char type[100]; + int t; + int i; + char eco[100]; + char ending[100]; + char result[100]; +}; + +extern game *garray; +extern int g_num; + +extern char *EndString(int, int); +extern char *EndSym(int); +extern char *game_str(int, int, int, int, int, char *, char *); +extern char *game_time_str(int, int, int, int); +extern char *movesToString(int, int); +extern int CharToPiece(char); +extern int PieceToChar(int); +extern int ReadGameAttrs(FILE *, char *, int); +extern int game_clear(int); +extern int game_count(void); +extern int game_delete(int, int); +extern int game_finish(int); +extern int game_free(int); +extern int game_isblitz(int, int, int, int, char *, char *); +extern int game_new(void); +extern int game_read(int, int, int); +extern int game_remove(int); +extern int game_save(int); +extern int game_zero(int); +extern int got_attr_value(int, char *, char *, FILE *, char *); +extern int journal_get_info(struct JGI_context *, const char *); +extern int pgames(int, int, char *); +extern int pjournal(int, int, char *); +extern void MakeFENpos(int, char *, size_t); +extern void RemHist(char *); +extern void addjournalitem(int, char, char *, int, char *, int, char *, + int, int, char *, char *, char *, char *); +extern void game_disconnect(int, int); +extern void game_update_time(int); +extern void game_update_times(void); +extern void game_write_complete(int, int, char *); +extern void send_board_to(int, int); +extern void send_boards(int); + +#endif -- cgit v1.2.3