ochess/src/game_tab/Game.hpp

38 lines
903 B
C++
Raw Normal View History

2022-02-23 18:11:55 +01:00
#pragma once
#include "ChessArbiter.hpp"
#include "HalfMove.hpp"
#include "ochess.hpp"
#include <unordered_map>
class Game {
std::string board;
std::string initial_fen;
std::unordered_map<std::string, std::string> tags;
HalfMove *moves;
HalfMove *current;
chessarbiter::ChessArbiter arbiter;
public:
Game();
Game(std::string fen);
Game(HalfMove *m);
std::string GetBoard();
std::string GetTag(std::string tagname);
void SetTag(std::string tagname, std::string value);
void DeleteTag(std::string tagname);
HalfMove *GetCurrentMove();
HalfMove *GetMoves();
std::string GetFen();
bool Play(std::string move);
bool IsBlackToPlay();
void Previous();
void Next();
void DeleteMove(HalfMove *m);
void PromoteMove(HalfMove *m);
void SetMoveAsMainline(HalfMove *m);
void SetCurrent(HalfMove *m);
std::vector<std::string> ListTags();
std::string GetPGN();
};