defmodule Islands.Text.Client.Starter do @moduledoc """ Allows to start the _Game of Islands_. """ import Islands.Text.Client.Guard alias Islands.Client.{Player, RPC, State} alias Islands.Player, as: Gamer @spec start(String.t(), String.t(), Gamer.gender(), Keyword.t()) :: no_return def start(game_name, player_name, gender, options \\ []) when valid_game_args(game_name, player_name, gender, options) do game_name |> RPC.new_game(player_name, gender) |> State.new(:player1, player_name, gender, options) |> Player.play() end end