Packages
islands_text_client
0.2.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.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/mover.ex
defmodule Islands.Text.Client.Mover do
@moduledoc """
Makes a _Game of Islands_ move.
"""
use PersistConfig
alias Islands.Engine
alias Islands.Text.Client.{IslandType, State}
@board_range Application.get_env(@app, :board_range)
@island_type_codes Application.get_env(@app, :island_type_codes)
@spec make_move(State.t()) :: State.t()
def make_move(%State{move: [code, row, col]} = state)
when code in @island_type_codes and row in @board_range and
col in @board_range do
%State{game_name: game_name, player_id: player_id} = state
island_type = IslandType.new(code)
tally = Engine.position_island(game_name, player_id, island_type, row, col)
put_in(state.tally, tally)
end
def make_move(%State{move: ["all"]} = state) do
%State{game_name: game_name, player_id: player_id} = state
tally = Engine.position_all_islands(game_name, player_id)
put_in(state.tally, tally)
end
def make_move(%State{move: [row, col]} = state)
when row in @board_range and col in @board_range do
%State{game_name: game_name, player_id: player_id} = state
put_in(state.tally, Engine.guess_coord(game_name, player_id, row, col))
end
def make_move(%State{move: ["set"]} = state) do
%State{game_name: game_name, player_id: player_id} = state
put_in(state.tally, Engine.set_islands(game_name, player_id))
end
def make_move(%State{move: ["stop"]} = state) do
%State{game_name: game_name, player_id: player_id} = state
put_in(state.tally, Engine.stop_game(game_name, player_id))
end
end