aboutsummaryrefslogtreecommitdiffstats
path: root/FICS/gamedb.h
diff options
context:
space:
mode:
authorMarkus Uhlin <markus@nifty-networks.net>2025-09-15 18:50:32 +0200
committerMarkus Uhlin <markus@nifty-networks.net>2025-09-15 18:50:32 +0200
commitc3eee8e333866d92e5fd94ae83cef618758c11bb (patch)
tree234a06fd90bd61a6668490a0cbf8870e6c674b81 /FICS/gamedb.h
FICS RPBLC v1.4.61.4.6
Diffstat (limited to 'FICS/gamedb.h')
-rw-r--r--FICS/gamedb.h205
1 files changed, 205 insertions, 0 deletions
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 <stdint.h>
+#include <time.h>
+
+#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