game_state.hrl 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. -define(PLAYER,
  2. id :: pos_integer(), %% Player Id
  3. seat_num :: integer(),
  4. user_id :: binary(),
  5. is_bot :: boolean(),
  6. info :: #'PlayerInfo'{},
  7. connected :: boolean()
  8. ).
  9. -define(GAME_STATE,
  10. game_id :: pos_integer(),
  11. table_id :: pos_integer(),
  12. table_name :: string(),
  13. players, %% The register of table players
  14. parent :: {atom(), pid()},
  15. parent_mon_ref :: reference(),
  16. relay :: pid(),
  17. mult_factor :: integer(),
  18. slang_flag :: boolean(),
  19. observer_flag :: boolean(),
  20. tournament_type :: atom(), %% standalone | elimination | pointing | lucky
  21. speed :: slow | normal | fast,
  22. game_mode :: standard | color | evenodd | countdown,
  23. social_actions_enabled :: boolean(),
  24. tournament_table :: list(), %% [{TurnNum, TurnRes}], TurnRes = [{PlayerId, Points, Status}]
  25. % game tree
  26. rounds :: undefined | integer(), %% Not defined for countdown game type
  27. tour :: undefined | integer(),
  28. tours :: undefined | integer(),
  29. cur_round :: integer(),
  30. next_series_confirmation :: yes_exit | no_exit | no,
  31. % timeouts
  32. turn_timeout :: integer(),
  33. ready_timeout :: integer(),
  34. round_timeout :: infinity | integer(),
  35. set_timeout :: infinity | integer(),
  36. timeout_timer :: undefined | reference(),
  37. timeout_magic :: term(),
  38. round_timer :: undefined | reference(),
  39. set_timer :: undefined | reference(),
  40. wait_list :: list(),
  41. % pause
  42. pause_mode :: disabled | normal,
  43. paused_statename :: atom(), %% For storing a statename before pause
  44. paused_timeout_value :: integer(), %% For storing remain timeout value
  45. % scoring
  46. scoring_state :: term()).
  47. -record(okey_state, {?GAME_STATE,
  48. reveal_confirmation_timeout :: integer(),
  49. reveal_confirmation :: boolean(),
  50. gosterge_finish_allowed :: undefined | boolean(), %% Only defined for countdown game type
  51. %% Dynamic parameters
  52. desk_rule_pid :: undefined | pid(),
  53. start_seat :: integer(), %% The player who moves first
  54. reveal_confirmation_list :: list(), %% {SeatNum, Answer}
  55. desk_state %% OKEY DESK
  56. }).
  57. -record(tavla_state, {?GAME_STATE,
  58. tables_num :: integer(), %% For paired mode >= 1, otherwise = 1
  59. %% Dynamic parameters
  60. desk_rule_pid :: undefined | pid(),
  61. start_color, %% The player who moves first
  62. desk_state %% TAVLA DESK
  63. }).