-define(PLAYER, id :: pos_integer(), %% Player Id seat_num :: integer(), user_id :: binary(), is_bot :: boolean(), info :: #'PlayerInfo'{}, connected :: boolean() ). -define(GAME_STATE, game_id :: pos_integer(), table_id :: pos_integer(), table_name :: string(), players, %% The register of table players parent :: {atom(), pid()}, parent_mon_ref :: reference(), relay :: pid(), mult_factor :: integer(), slang_flag :: boolean(), observer_flag :: boolean(), tournament_type :: atom(), %% standalone | elimination | pointing | lucky speed :: slow | normal | fast, game_mode :: standard | color | evenodd | countdown, social_actions_enabled :: boolean(), tournament_table :: list(), %% [{TurnNum, TurnRes}], TurnRes = [{PlayerId, Points, Status}] % game tree rounds :: undefined | integer(), %% Not defined for countdown game type tour :: undefined | integer(), tours :: undefined | integer(), cur_round :: integer(), next_series_confirmation :: yes_exit | no_exit | no, % timeouts turn_timeout :: integer(), ready_timeout :: integer(), round_timeout :: infinity | integer(), set_timeout :: infinity | integer(), timeout_timer :: undefined | reference(), timeout_magic :: term(), round_timer :: undefined | reference(), set_timer :: undefined | reference(), wait_list :: list(), % pause pause_mode :: disabled | normal, paused_statename :: atom(), %% For storing a statename before pause paused_timeout_value :: integer(), %% For storing remain timeout value % scoring scoring_state :: term()). -record(table_state, {?GAME_STATE}). -record(okey_state, {?GAME_STATE, reveal_confirmation_timeout :: integer(), reveal_confirmation :: boolean(), gosterge_finish_allowed :: undefined | boolean(), %% Only defined for countdown game type %% Dynamic parameters desk_rule_pid :: undefined | pid(), start_seat :: integer(), %% The player who moves first reveal_confirmation_list :: list(), %% {SeatNum, Answer} desk_state %% OKEY DESK }). -record(tavla_state, {?GAME_STATE, tables_num :: integer(), %% For paired mode >= 1, otherwise = 1 %% Dynamic parameters desk_rule_pid :: undefined | pid(), start_color, %% The player who moves first desk_state %% TAVLA DESK }).