Packages
islands_engine
0.1.13
0.2.65
0.2.64
0.2.63
0.2.62
0.2.61
0.2.60
0.2.59
0.2.58
0.2.56
0.2.55
0.2.54
0.2.53
0.2.52
0.2.51
0.2.50
0.2.49
0.2.48
0.2.47
0.2.46
0.2.45
0.2.44
0.2.43
0.2.42
0.2.41
0.2.40
0.2.39
0.2.38
0.2.37
0.2.36
0.2.35
0.2.34
0.2.33
0.2.32
0.2.31
0.2.30
0.2.29
0.2.28
0.2.27
0.2.25
0.2.24
0.2.23
0.2.22
0.2.21
0.2.20
0.2.19
0.2.18
0.2.17
0.2.16
0.2.15
0.2.13
0.2.12
0.2.10
0.2.9
0.2.8
0.2.7
0.2.6
0.2.5
0.2.4
0.2.3
0.2.2
0.2.1
0.2.0
0.1.81
0.1.80
0.1.79
0.1.78
0.1.77
0.1.76
0.1.75
0.1.73
0.1.72
0.1.71
0.1.70
0.1.69
0.1.68
0.1.67
0.1.66
0.1.65
0.1.64
0.1.63
0.1.62
0.1.61
0.1.60
0.1.59
0.1.58
0.1.57
0.1.56
0.1.55
0.1.54
0.1.53
0.1.52
0.1.51
0.1.50
0.1.49
0.1.48
0.1.47
0.1.46
0.1.45
0.1.44
0.1.43
0.1.42
0.1.41
0.1.40
0.1.39
0.1.38
0.1.37
0.1.36
0.1.35
0.1.34
0.1.33
0.1.32
0.1.31
0.1.30
0.1.29
0.1.28
0.1.27
0.1.26
0.1.25
0.1.24
0.1.23
0.1.22
0.1.21
0.1.20
0.1.19
0.1.18
0.1.17
0.1.16
0.1.15
0.1.14
0.1.13
0.1.12
0.1.11
0.1.10
0.1.9
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.0
Models the Game of Islands.
Current section
Files
Jump to
Current section
Files
lib/islands/engine/tally.ex
defmodule Islands.Engine.Tally do
@moduledoc false
use PersistConfig
alias __MODULE__
alias Islands.Engine.{Game, Grid, State}
@enforce_keys [
:game_state,
:player1_state,
:player2_state,
:request,
:response,
:board,
:guesses
]
defstruct [
:game_state,
:player1_state,
:player2_state,
:request,
:response,
:board,
:guesses
]
@type t :: %Tally{
game_state: State.game_state(),
player1_state: State.player_state(),
player2_state: State.player_state(),
request: Game.request(),
response: Game.response(),
board: Grid.t(),
guesses: Grid.t()
}
@player_ids Application.get_env(@app, :player_ids)
@spec new(Game.t(), Game.player_id()) :: t
def new(%Game{} = game, player_id) when player_id in @player_ids do
%Tally{
game_state: game.state.game,
player1_state: game.state.player1,
player2_state: game.state.player2,
request: game.request,
response: game.response,
board: game[player_id].board |> Grid.new(),
guesses: game[player_id].guesses |> Grid.new()
}
end
def new(_game, _player_id), do: {:error, :invalid_tally_args}
end