#ifndef STATE_H #define STATE_H #include "tile.h" //! Class containing the game state related to each player. struct PlayerState { //! Player's hand. Concealed tiles is first set, open sets follow in the order they was called in. Tilegroups hand; //! Discarded tiles. Tiles pond; //! Flag indicating whether player has declared riichi. bool riichi; //! Player's score. int score; //! Player's seat wind. int wind; template void serialize(Archive & ar, const unsigned int v) { ar & hand; ar & pond; ar & riichi; ar & score; ar & wind; } }; //! Class containing the game state unrelated to the players. struct GameState { //! List of dora/kandora. Tiles dora; //! Current player, relative to context. 0 = self, 1 = shimocha and so on. int current_player; //! Round (prevalent) wind. int round_wind; //! Round number (of this wind). int round_number; //! Count of riichi sticks on table (current and leftovers). int riichibou; //! Count of honba sticks on table (indicating renchan). int honba; template void serialize(Archive & ar, const unsigned int v) { ar & dora; ar & current_player; ar & round_wind; ar & round_number; ar & riichibou; ar & honba; } }; #endif