Riichi.Engine.ActionPredicate (riichi v0.2.0)

Copy Markdown View Source

Internal Contains functions listing allowed actions for given engine state. Serves as the backbone for validating submitted actions.

Summary

Types

all_valid_actions()

@type all_valid_actions() :: %{required(Riichi.Actor.t()) => valid_actions()}

valid_actions()

@type valid_actions() :: [Riichi.Action.t()]

Functions

ankan_is_valid_under_riichi(rules, player, ankan)

@spec ankan_is_valid_under_riichi(
  Riichi.Rules.t(),
  Riichi.Player.t(),
  Riichi.Action.Ankan.t()
) ::
  boolean()

banned_discards_after_call(action_or_event, rules)

@spec banned_discards_after_call(
  Riichi.Action.t() | Riichi.Event.t(),
  Riichi.Rules.t()
) :: [
  Riichi.Tile.t()
]

valid_actions(state)

@spec valid_actions(Riichi.Engine.State.t()) :: all_valid_actions()

valid_ankans(state)

@spec valid_ankans(Riichi.Engine.State.t()) :: [Riichi.Action.Ankan.t()]

valid_chiis(state)

@spec valid_chiis(Riichi.Engine.State.t()) :: [Riichi.Action.Chii.t()]

valid_daiminkans(state)

@spec valid_daiminkans(Riichi.Engine.State.t()) :: [Riichi.Action.Daiminkan.t()]

valid_discards(state)

@spec valid_discards(Riichi.Engine.State.t()) :: [Riichi.Action.Discard.t()]

valid_kakans(state)

@spec valid_kakans(Riichi.Engine.State.t()) :: [Riichi.Action.Kakan.t()]

valid_nine_terminal_draw(state)

@spec valid_nine_terminal_draw(Riichi.Engine.State.t()) :: [
  Riichi.Action.NineTerminalDraw.t()
]

valid_pons(state)

@spec valid_pons(Riichi.Engine.State.t()) :: [Riichi.Action.Pon.t()]

valid_riichi_discards(state)

@spec valid_riichi_discards(Riichi.Engine.State.t()) :: [Riichi.Action.Discard.t()]

valid_ron(state)

@spec valid_ron(Riichi.Engine.State.t()) :: [Riichi.Action.Ron.t()]

valid_skips(actor, actions)

@spec valid_skips(Riichi.Actor.t(), [Riichi.Action.t()]) :: [Riichi.Action.Skip.t()]

valid_tsumo(state)

@spec valid_tsumo(Riichi.Engine.State.t()) :: [Riichi.Action.Tsumo.t()]