Internal Contains functions listing allowed actions for given engine state. Serves as the backbone for validating submitted actions.
Summary
Types
@type all_valid_actions() :: %{required(Riichi.Actor.t()) => valid_actions()}
@type valid_actions() :: [Riichi.Action.t()]
Functions
@spec ankan_is_valid_under_riichi( Riichi.Rules.t(), Riichi.Player.t(), Riichi.Action.Ankan.t() ) :: boolean()
@spec banned_discards_after_call( Riichi.Action.t() | Riichi.Event.t(), Riichi.Rules.t() ) :: [ Riichi.Tile.t() ]
@spec valid_actions(Riichi.Engine.State.t()) :: all_valid_actions()
@spec valid_ankans(Riichi.Engine.State.t()) :: [Riichi.Action.Ankan.t()]
@spec valid_chiis(Riichi.Engine.State.t()) :: [Riichi.Action.Chii.t()]
@spec valid_daiminkans(Riichi.Engine.State.t()) :: [Riichi.Action.Daiminkan.t()]
@spec valid_discards(Riichi.Engine.State.t()) :: [Riichi.Action.Discard.t()]
@spec valid_kakans(Riichi.Engine.State.t()) :: [Riichi.Action.Kakan.t()]
@spec valid_nine_terminal_draw(Riichi.Engine.State.t()) :: [ Riichi.Action.NineTerminalDraw.t() ]
@spec valid_pons(Riichi.Engine.State.t()) :: [Riichi.Action.Pon.t()]
@spec valid_riichi_discards(Riichi.Engine.State.t()) :: [Riichi.Action.Discard.t()]
@spec valid_ron(Riichi.Engine.State.t()) :: [Riichi.Action.Ron.t()]
@spec valid_skips(Riichi.Actor.t(), [Riichi.Action.t()]) :: [Riichi.Action.Skip.t()]
@spec valid_tsumo(Riichi.Engine.State.t()) :: [Riichi.Action.Tsumo.t()]