From 391b6e2ad7541100191c2f2d4dd9ea5163de8f19 Mon Sep 17 00:00:00 2001 From: Vegard Storheil Eriksen Date: Fri, 3 Dec 2010 10:31:26 +0100 Subject: Add PlayerState and GameState-structs to bundle together related information. --- common/state.h | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 common/state.h diff --git a/common/state.h b/common/state.h new file mode 100644 index 0000000..d9b24c4 --- /dev/null +++ b/common/state.h @@ -0,0 +1,64 @@ +#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 -- cgit v1.2.3