Current section

Files

Jump to
islands_text_client lib islands text client state.ex
Raw

lib/islands/text/client/state.ex

defmodule Islands.Text.Client.State do
@moduledoc """
Holds the state of a text client playing the _Game of Islands_.
"""
alias __MODULE__
alias Islands.Engine.Game.Tally
alias Islands.Engine.Game
alias Islands.Engine
@enforce_keys [
:game_name,
:player_name,
:player_id,
:mode,
:pause,
:move,
:tally
]
defstruct [
:game_name,
:player_name,
:player_id,
:mode,
:pause,
:move,
:tally
]
@type t :: %State{
game_name: String.t(),
player_name: String.t(),
player_id: Game.player_id(),
mode: :manual | :auto,
pause: 0..10_000,
move: [String.codepoint() | pos_integer | String.t()],
tally: Tally.t()
}
@spec new(String.t(), Game.player_id(), String.t(), atom, pos_integer) :: t
def new(game_name, player_id, player_name, mode, pause) do
%State{
game_name: game_name,
player_name: player_name,
player_id: player_id,
mode: mode,
pause: pause,
move: [],
tally: Engine.tally(game_name, player_id)
}
end
end