Riichi.Scoring (riichi v0.2.0)

Copy Markdown View Source

Summary

Types

hand_value()

@type hand_value() ::
  {:ron, non_neg_integer()}
  | {:tsumo, non_neg_integer()}
  | {:tsumo, non_neg_integer(), non_neg_integer()}

t()

@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
}

winnable_event()

Functions

calculate(input)

@spec calculate(Riichi.Scoring.Input.t()) :: t() | nil

nagashi_mangan_delta(rules, dealer, nagashi_actor)

@spec nagashi_mangan_delta(Riichi.Rules.t(), Riichi.Actor.t(), Riichi.Actor.t()) :: %{
  required(Riichi.Actor.t()) => integer()
}

nagashi_mangan_delta_combined(rules, dealer, actors)

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

tile_of_event(event)

@spec tile_of_event(winnable_event()) :: Riichi.Tile.t() | nil

yakuhai_kind(tile, round_wind, seat_wind)

@spec yakuhai_kind(Riichi.Tile.t(), Riichi.Round.wind(), Riichi.Round.wind()) ::
  :double | :single | :none