Packages
islands_client_input
0.1.45
0.1.49
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.3
0.1.2
0.1.1
0.1.0
Prompts and accepts a move in the Game of Islands.
Current section
Files
Jump to
Current section
Files
lib/islands/client/input/getter.ex
defmodule Islands.Client.Input.Getter do
@moduledoc """
Gets a prompted input whether in manual or auto mode.
"""
alias IO.ANSI.Plus, as: ANSI
alias Islands.Client.{Input, RandomGuess, State}
alias Islands.Tally
@doc """
Gets a prompted input whether in manual or auto mode.
"""
@spec get_input(ANSI.ansilist(), State.t()) :: Input.t()
def get_input(prompt, %State{mode: :manual} = _state), do: ANSI.gets(prompt)
def get_input(
prompt,
%State{
mode: :auto,
pause: pause,
tally: %Tally{game_state: :players_set, request: request}
} = _state
) do
ANSI.write(prompt)
Process.sleep(pause)
move =
case request do
{:add_player, _, _, _} -> "all"
{:position_all_islands, _} -> "set"
{:position_island, _, _, _, _} -> "set"
end
IO.puts(move)
move
end
def get_input(prompt, %State{mode: :auto, pause: pause} = state) do
ANSI.write(prompt)
Process.sleep(pause)
guess = RandomGuess.new(state)
IO.puts(guess)
guess
end
end