Eile Mit Weile
Loading...
Searching...
No Matches
GameState.hpp
1#ifndef EILE_MIT_WEILE_GAMESTATE_HPP
2#define EILE_MIT_WEILE_GAMESTATE_HPP
3
4#include <vector>
5#include <string>
6#include <rapidjson/document.h>
7#include "board/Player.hpp"
8#include "board/Board.hpp"
9#include "common/serialization/serializable.hpp"
10#include "common/serialization/serializable_value.hpp"
11#include "common/serialization/unique_serializable.hpp"
13
23 protected:
24
25 static const int _max_nof_players = 4;
26 static const int _min_nof_players = 2;
28 std::vector<Player*> _players;
35 public:
36 GameState();
38 explicit GameState(std::string id);
42 GameState(std::string id, Board* board, std::vector<Player*>& players, SerializableValue<bool>* is_started,
43 SerializableValue<bool>* is_finished, SerializableValue<int>* current_player_idx,
44 SerializableValue<int>* play_direction);
45 ~GameState();
47 bool IsFull();
48 bool IsStarted();
49 bool IsFinished();
50 bool IsPlayerInGame(Player* player);
51 bool IsAllowedToPlayNow(Player* player);
52 std::vector<Player*>& GetPlayers();
54 int GetPlayerIndex(Player* player);
55 Board* GetBoard();
57 static GameState* FromJson(const rapidjson::Value& json);
66 // TODO: Move these to ServerGameState?
67 void WriteIntoJson(rapidjson::Value& json, rapidjson::Document::AllocatorType& allocator) const override;
68 unsigned int ThrowDice(Player *player, std::string string);
70};
71
72
73#endif //EILE_MIT_WEILE_GAMESTATE_HPP
Data structure for the game board of Eile Mit Weile including operations on it.
Definition Board.hpp:37
Holds the state of one game.
Definition GameState.hpp:22
bool IsPlayerInGame(Player *player)
Definition GameState.cpp:60
Player * GetCurrentPlayer()
Definition GameState.cpp:72
int GetPlayerIndex(Player *player)
Definition GameState.cpp:79
Board * _board
Definition GameState.hpp:27
bool IsFinished()
Definition GameState.cpp:56
bool IsAllowedToPlayNow(Player *player)
Definition GameState.cpp:64
static const int _max_nof_players
Definition GameState.hpp:25
bool IsFull()
Definition GameState.cpp:48
static GameState * FromJson(const rapidjson::Value &json)
Definition GameState.cpp:92
SerializableValue< int > * _play_direction
Definition GameState.hpp:32
GameState()
Definition GameState.cpp:3
std::vector< Player * > _players
Definition GameState.hpp:28
unsigned int ThrowDice(Player *player, std::string string)
Definition GameState.cpp:147
std::vector< Player * > & GetPlayers()
Definition GameState.cpp:68
bool IsStarted()
Definition GameState.cpp:52
void WriteIntoJson(rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) const override
Definition GameState.cpp:117
SerializableValue< bool > * _is_started
Definition GameState.hpp:29
Board * GetBoard()
Definition GameState.cpp:88
SerializableValue< int > * _current_player_idx
Definition GameState.hpp:31
SerializableValue< bool > * _is_finished
Definition GameState.hpp:30
~GameState()
Definition GameState.cpp:32
static const int _min_nof_players
Definition GameState.hpp:26
Holds all relevant information of a player.
Definition Player.hpp:27
A serializable value, used for writing values into json.
Definition serializable_value.hpp:28
Used to serialize game_state objects that need to be identifiable by a unique id.
Definition unique_serializable.hpp:14