src/chess/rules.h

changeset 78
ceb9197b3c6d
parent 69
c8f2c280cff7
--- a/src/chess/rules.h	Mon Jun 02 19:32:37 2025 +0200
+++ b/src/chess/rules.h	Mon Jun 02 19:40:24 2025 +0200
@@ -30,8 +30,9 @@
 #ifndef RULES_H
 #define	RULES_H
 
+#include "game-info.h"
+
 #include <stdint.h>
-#include <sys/time.h>
 
 #define VALID_MOVE_SYNTAX      0
 #define VALID_MOVE_SEMANTICS   0 /* use same code for a success */
@@ -44,83 +45,8 @@
 #define KING_MOVES_INTO_CHECK  7
 #define RULES_VIOLATED        10
 
-
-#define PIECE_MASK       0x0F
-#define COLOR_MASK       0x30
 #define ENPASSANT_THREAT 0x40
 
-#define WHITE 0x10
-#define BLACK 0x20
-
-#define PAWN   0x01
-#define ROOK   0x02
-#define KNIGHT 0x03
-#define BISHOP 0x04
-#define QUEEN  0x05
-#define KING   0x06
-
-#define WPAWN   (WHITE|PAWN)
-#define WROOK   (WHITE|ROOK)
-#define WKNIGHT (WHITE|KNIGHT)
-#define WBISHOP (WHITE|BISHOP)
-#define WQUEEN  (WHITE|QUEEN)
-#define WKING   (WHITE|KING)
-#define BPAWN   (BLACK|PAWN)
-#define BROOK   (BLACK|ROOK)
-#define BKNIGHT (BLACK|KNIGHT)
-#define BBISHOP (BLACK|BISHOP)
-#define BQUEEN  (BLACK|QUEEN)
-#define BKING   (BLACK|KING)
-
-typedef uint8_t Board[8][8];
-
-struct movetimeval {
-    uint64_t tv_sec;
-    int32_t tv_usec;
-};
-
-typedef struct {
-    uint8_t piece;
-    uint8_t fromfile;
-    uint8_t fromrow;
-    uint8_t tofile;
-    uint8_t torow;
-    uint8_t promotion;
-    uint8_t check;
-    uint8_t capture;
-    struct movetimeval timestamp;
-    struct movetimeval movetime;
-    char string[8];
-} Move;
-
-typedef struct MoveList MoveList;
-
-struct MoveList {
-    Move move;
-    MoveList* next;
-};
-
-    
-typedef struct {
-    uint8_t servercolor;
-    uint8_t timecontrol;
-    uint16_t time;
-    uint16_t addtime;
-} GameInfo;
-
-typedef struct {
-    Board board;
-    MoveList* movelist;
-    MoveList* lastmove;
-    unsigned int movecount; /* number of (half-)moves (counting BOTH colors) */
-    _Bool checkmate;
-    _Bool stalemate;
-    _Bool remis;
-    _Bool resign;
-} GameState;
-
-#define opponent_color(color) ((color)==WHITE?BLACK:WHITE)
-
 #define POS_UNSPECIFIED UINT8_MAX
 #define mdst(b,m) b[(m)->torow][(m)->tofile]
 #define msrc(b,m) b[(m)->fromrow][(m)->fromfile]
@@ -143,22 +69,6 @@
 #define fileidx_s(c) (isfile(c)?fileidx(c):POS_UNSPECIFIED)
 #define rowidx_s(c) (isrow(c)?rowidx(c):POS_UNSPECIFIED)
 
-#define is_game_running(gamestate) !((gamestate)->checkmate || \
-    (gamestate)->resign || (gamestate)->stalemate || (gamestate)->remis)
-
-
-/**
- * Initializes a game state and prepares the chess board.
- * @param gamestate the game state to initialize
- */
-void gamestate_init(GameState *gamestate);
-
-/**
- * Cleans up a game state and frees the memory for the movement list.
- * @param gamestate the game state to clean up
- */
-void gamestate_cleanup(GameState *gamestate);
-
 /**
  * Maps a character to a piece.
  * 

mercurial