game_state.hrl 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  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(table_state, {?GAME_STATE}).
  48. -record(okey_state, {?GAME_STATE,
  49. reveal_confirmation_timeout :: integer(),
  50. reveal_confirmation :: boolean(),
  51. gosterge_finish_allowed :: undefined | boolean(), %% Only defined for countdown game type
  52. %% Dynamic parameters
  53. desk_rule_pid :: undefined | pid(),
  54. start_seat :: integer(), %% The player who moves first
  55. reveal_confirmation_list :: list(), %% {SeatNum, Answer}
  56. desk_state %% OKEY DESK
  57. }).
  58. -record(tavla_state, {?GAME_STATE,
  59. tables_num :: integer(), %% For paired mode >= 1, otherwise = 1
  60. %% Dynamic parameters
  61. desk_rule_pid :: undefined | pid(),
  62. start_color, %% The player who moves first
  63. desk_state %% TAVLA DESK
  64. }).