This commit is contained in:
Gavin McDonald
2018-11-11 14:54:41 -05:00
commit 921b2a603d
13 changed files with 475 additions and 0 deletions

51
lib/ex_mine/server.ex Normal file
View File

@@ -0,0 +1,51 @@
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