Summary
Types
@type hand_value() :: {:ron, non_neg_integer()} | {:tsumo, non_neg_integer()} | {:tsumo, non_neg_integer(), non_neg_integer()}
@type t() :: %Riichi.Scoring{ declared_riichi?: boolean() | nil, dora_indicators: [Riichi.Tile.t()] | nil, fu: non_neg_integer() | nil, han: non_neg_integer() | nil, has_yaku?: boolean() | nil, interpretation: Riichi.Decomposer.decomposed_hand() | nil, total_value: non_neg_integer() | nil, ura_dora_indicators: [Riichi.Tile.t()] | nil, value: hand_value() | nil, winning_tile: Riichi.Tile.t() | nil, yaku: Riichi.Scoring.Yaku.yaku_values() | nil }
@type winnable_event() :: Riichi.Event.Draw.t() | Riichi.Event.Discard.t() | Riichi.Event.Ankan.t() | Riichi.Event.Kakan.t()
Functions
@spec calculate(Riichi.Scoring.Input.t()) :: t() | nil
@spec nagashi_mangan_delta(Riichi.Rules.t(), Riichi.Actor.t(), Riichi.Actor.t()) :: %{ required(Riichi.Actor.t()) => integer() }
@spec nagashi_mangan_delta_combined(Riichi.Rules.t(), Riichi.Actor.t(), [ Riichi.Actor.t() ]) :: %{ required(Riichi.Actor.t()) => integer() }
@spec tile_of_event(winnable_event()) :: Riichi.Tile.t() | nil
@spec yakuhai_kind(Riichi.Tile.t(), Riichi.Round.wind(), Riichi.Round.wind()) :: :double | :single | :none