Packages
islands_text_client
0.1.49
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.57
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.26
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.14
0.2.13
0.2.12
0.2.11
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.99
0.1.98
0.1.97
0.1.96
0.1.95
0.1.94
0.1.93
0.1.91
0.1.90
0.1.89
0.1.88
0.1.87
0.1.86
0.1.85
0.1.84
0.1.83
0.1.82
0.1.81
0.1.80
0.1.79
0.1.78
0.1.77
0.1.76
0.1.75
0.1.74
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.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.3
0.1.2
0.1.1
0.1.0
Text client for the Game of Islands.
Current section
Files
Jump to
Current section
Files
lib/islands/text_client/summary.ex
defmodule Islands.TextClient.Summary do
@moduledoc """
Displays the summary of a _Game of Islands_.
"""
alias IO.ANSI.Plus, as: ANSI
alias IO.ANSI.Table
alias Islands.Engine.Game.{Grid, Tally}
alias Islands.TextClient.State
alias Islands.TextClient.Summary.{Message, Score}
@margins [margins: [left: 35, top: -12]]
@spec display(State.t(), ANSI.ansilist()) :: State.t()
def display(state, message \\ [])
def display(%State{tally: %Tally{response: response}} = state, []) do
state |> Message.for(response) |> do_display(state)
end
def display(state, message), do: do_display(message, state)
## Private functions
@spec do_display(ANSI.ansilist(), State.t()) :: State.t()
defp do_display(
message,
%State{
tally: %Tally{
board: board,
guesses: guesses,
board_score: board_score,
guesses_score: guesses_score
}
} = state
) do
message |> ANSI.format() |> IO.puts()
board_score |> Score.for() |> ANSI.format() |> IO.puts()
guesses_score |> Score.for() |> ANSI.format() |> IO.puts()
board |> Grid.to_maps() |> Table.format()
guesses |> Grid.to_maps() |> Table.format(@margins)
# Default function => &Islands.Engine.Grid.Format.for/1
# fun = &Islands.TextClient.Summary.Format.for/1
# board |> Grid.to_maps(fun) |> Table.format()
# guesses |> Grid.to_maps(fun) |> Table.format(@margins)
state
end
end