aboutsummaryrefslogtreecommitdiff
path: root/src/game_tab/Game.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game_tab/Game.hpp')
-rw-r--r--src/game_tab/Game.hpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/game_tab/Game.hpp b/src/game_tab/Game.hpp
index ddf5cf6..6f9bbb7 100644
--- a/src/game_tab/Game.hpp
+++ b/src/game_tab/Game.hpp
@@ -5,13 +5,19 @@
#include "ochess.hpp"
#include <unordered_map>
+/**
+ * @brief Hold an entire chess game
+ * Used in many places in the projects.
+ */
class Game {
+ /// @brief 64 char string that contains all the pieces on the board (used in BoardCanvas)
std::string board;
std::string initial_fen;
std::string result;
std::unordered_map<std::string, std::string> tags;
HalfMove *moves;
HalfMove *current;
+ /// @brief Used by various methods of the class
chessarbiter::ChessArbiter arbiter;
public:
@@ -29,12 +35,15 @@ public:
HalfMove *GetMoves();
std::string GetFen();
std::string GetResult();
+ /// @brief Play the given absolute move
bool Play(std::string move,char promotion='q');
bool IsBlackToPlay();
bool IsCheckmate(bool forBlack);
+ /// @brief Check if a given absolute move consists in a pawn promotion
bool IsPromotionMove(std::string absolute_move);
void Previous();
void Next();
+ /// @brief Delete a move (its mainline and variations recursively)
void DeleteMove(HalfMove *m);
void PromoteMove(HalfMove *m);
void SetMoveAsMainline(HalfMove *m);