From 69a9206046a1de52dc1f845ae180d78c2e2b7071 Mon Sep 17 00:00:00 2001 From: Dan Barber Date: Fri, 27 Apr 2018 18:29:48 +0100 Subject: [PATCH] Fix turn based problem --- lib/chess/store/game.ex | 14 ++++++++++---- lib/chess_web/channels/game_channel.ex | 1 - 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/lib/chess/store/game.ex b/lib/chess/store/game.ex index cfa04ce..a382cbb 100644 --- a/lib/chess/store/game.ex +++ b/lib/chess/store/game.ex @@ -36,10 +36,16 @@ defmodule Chess.Store.Game do |> cast(params, required_attrs()) |> validate_king_in_check(struct, params) |> check_game_state(struct, params) + |> change_turn(struct.turn) end - def change_turn("black"), do: "white" - def change_turn("white"), do: "black" + def change_turn(changeset, turn) do + changeset + |> put_change(:turn, _change_turn(turn)) + end + + def _change_turn("black"), do: "white" + def _change_turn("white"), do: "black" def for_user(user) do for_user_id(user.id) @@ -51,9 +57,9 @@ defmodule Chess.Store.Game do or_where: game.opponent_id == ^user_id end - def check_game_state(changeset, _struct, params) do + def check_game_state(changeset, struct, params) do changeset - |> put_change(:state, GameState.state(params.board, params.turn)) + |> put_change(:state, GameState.state(params.board, struct.turn)) end def validate_king_in_check(changeset, %Game{turn: turn}, %{board: board}) do diff --git a/lib/chess_web/channels/game_channel.ex b/lib/chess_web/channels/game_channel.ex index 0297259..79bdecb 100644 --- a/lib/chess_web/channels/game_channel.ex +++ b/lib/chess_web/channels/game_channel.ex @@ -41,7 +41,6 @@ defmodule ChessWeb.GameChannel do changeset = Game.move_changeset( game, %{ board: Board.move_piece(game.board, move_params), - turn: Game.change_turn(game.turn) } )