forking from https://gitea.daggertrout.com/mcdoh/ExMineArchive
This commit is contained in:
51
lib/ex_mine/server.ex
Normal file
51
lib/ex_mine/server.ex
Normal 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
|
||||
Reference in New Issue
Block a user