more worke on the server
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Andre Henriques 2024-01-17 10:58:37 +00:00
parent 3d835aad6c
commit 25c0503504

View File

@ -117,7 +117,7 @@ defmodule Server do
get_game_state(state, game_id, pid_to_inform) get_game_state(state, game_id, pid_to_inform)
{:make_move, game_id, move, pid_to_inform} -> {:make_move, game_id, move, pid_to_inform} ->
state = try_to_play_checks(state, game_id, move, pid_to_inform) try_to_play_checks(state, game_id, move, pid_to_inform)
end end
@ -155,10 +155,12 @@ defmodule Server do
def try_to_play(state, game_id, move, pid_to_inform) do def try_to_play(state, game_id, move, pid_to_inform) do
name = state.name name = state.name
try_propose {:make_move, game_id, name, move} # TODO create new hand
new_hand = 2
try_propose {:make_move, game_id, name, move, new_hand}
do do
{:decision, {:make_move, ^game_id, ^name, ^move}} -> {:decision, {:make_move, ^game_id, ^name, ^move, ^new_hand}} ->
state = apply_game(state, {:make_move, game_id, name, move}) state = apply_game(state, {:make_move, game_id, name, move, new_hand})
if is_finished(state, game_id) do if is_finished(state, game_id) do
{_, score} = state.games[game_id] {_, score} = state.games[game_id]
@ -170,8 +172,8 @@ defmodule Server do
set_modifed(state, game_id) set_modifed(state, game_id)
{:decision, {:make_move, ^game_id, new_name, new_move}} -> {:decision, {:make_move, ^game_id, new_name, new_move, new_new_hand}} ->
state = apply_game(state, {:make_move, game_id, new_name, new_move}) state = apply_game(state, {:make_move, game_id, new_name, new_move, new_new_hand})
if is_finished(state, game_id) do if is_finished(state, game_id) do
{_, score} = state.games[game_id] {_, score} = state.games[game_id]
@ -258,8 +260,28 @@ defmodule Server do
# Apply Game States # Apply Game States
# #
def apply_game(state, {:make_move, game_id, new_name, new_move}) do def simplify_game_state(game_state) do
raise :todo # TODO actualy do this
game_state
end
def apply_game(state, {:make_move, game_id, player_name, pos_move, new_hand}) do
game = state.games[game_id]
case game do
{:finished, _} ->
raise :game_already_finished
:not_playing_in_game ->
%{state | instance: state.instance + 1 }
game ->
game_state = game.game_state
{b, e} = Enum.split(game_state, pos_move)
game_state = b ++ [ game.hand[player_name] ] ++ e
game_state = simplefy_game_state(game_state)
hand = Map.put(game.hand, player_name, new_hand)
game = %{game| hand: hand, game_state: game_state }
# TODO decide if it's ending state
%{state| games: Map.put(state.games, game_id, game)}
end
end end
def apply_game(state, {:start_game, game_id, participants, new_game_state, hand}) do def apply_game(state, {:start_game, game_id, participants, new_game_state, hand}) do