defmodule ExMine.Server do use GenServer alias ExMine.Game def start_link(args) do GenServer.start_link(__MODULE__, args) end def init(%{height: height, width: width}) do {:ok, Game.new_game(height, width)} end def handle_call({:get_height}, _from, game) do {:reply, Game.get_height(game), game} end def handle_call({:get_width}, _from, game) do {:reply, Game.get_width(game), game} end def handle_call({:get_board}, _from, game) do {game, board} = Game.get_board(game) {:reply, board, game} end def handle_call({:get_tile, x, y}, _from, game) do tile = Game.get_tile(game, x, y) {:reply, %{x: x, y: y, tile: tile}, game} end def handle_call({:get_state}, _from, game) do {game, state} = Game.get_state(game) {:reply, state, game} end def handle_call({:make_move, x, y}, _from, game) do game = Game.make_move(game, x, y) {game, board} = Game.get_board(game) {:reply, board, game} end def handle_call({:toggle_flag, x, y}, _from, game) do game = Game.toggle_flag(game, x, y) tile = Game.get_tile(game, x, y) {:reply, %{x: x, y: y, tile: tile}, game} end end