Current section

Files

Jump to
islands_engine lib islands engine player.ex
Raw

lib/islands/engine/player.ex

defmodule Islands.Engine.Player do
@moduledoc false
alias __MODULE__
alias Islands.Engine.{Board, Guesses}
@enforce_keys [:name, :board, :guesses]
defstruct [:name, :pid, :board, :guesses]
@type t :: %Player{
name: String.t(),
pid: pid | nil,
board: Board.t(),
guesses: Guesses.t()
}
@spec new(String.t(), Board.t(), Guesses.t()) :: t
def new(name, board \\ Board.new(), guesses \\ Guesses.new())
def new(name, %Board{} = board, %Guesses{} = guesses)
when is_binary(name),
do: %Player{name: name, board: board, guesses: guesses}
def new(_name, _board, _guesses), do: {:error, :invalid_player_args}
@spec update_player_pid(t, pid) :: t
def update_player_pid(player, pid) when is_pid(pid) do
put_in(player.pid, pid)
end
end