summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--common/state.h64
1 files changed, 64 insertions, 0 deletions
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<class Archive>
+ 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<class Archive>
+ void serialize(Archive & ar, const unsigned int v) {
+ ar & dora;
+ ar & current_player;
+ ar & round_wind;
+ ar & round_number;
+ ar & riichibou;
+ ar & honba;
+ }
+};
+
+#endif