Riichi.Engine (riichi v0.2.0)

Copy Markdown View Source

Internal Implements the game state machine.

Summary

Types

eval_error()

@type eval_error() :: :invalid_input | :illegal_actor | Riichi.Hand.discard_error()

eval_result()

@type eval_result() :: {:ok, step()} | {:error, eval_error()}

step()

@type step() :: {[Riichi.Event.t()], Riichi.Engine.State.t()}

Functions

force_continue(state)

@spec force_continue(Riichi.Engine.State.t()) :: eval_result()

new(rules, wall \\ nil)

@spec new(Riichi.Rules.t(), Riichi.Wall.t() | nil) :: step()

new_from_round(rules, round_result, wall \\ nil)

@spec new_from_round(
  Riichi.Rules.t(),
  Riichi.Engine.State.RoundResult.t() | nil,
  Riichi.Wall.t() | nil
) ::
  step()

personalize_events(rules, events)

@spec personalize_events(Riichi.Rules.t(), [Riichi.Event.t()]) :: %{
  required(Riichi.Actor.t()) => [Riichi.Event.t()]
}

process_action(state, action)

@spec process_action(Riichi.Engine.State.t(), Riichi.Action.t()) :: eval_result()

skip(state)

@spec skip(Riichi.Engine.State.t()) :: eval_result()

valid_actions(state)