mirror of
https://github.com/danbee/chess
synced 2025-03-04 08:39:06 +00:00
Fix turn based problem
This commit is contained in:
parent
f94a41d995
commit
69a9206046
@ -36,10 +36,16 @@ defmodule Chess.Store.Game do
|
|||||||
|> cast(params, required_attrs())
|
|> cast(params, required_attrs())
|
||||||
|> validate_king_in_check(struct, params)
|
|> validate_king_in_check(struct, params)
|
||||||
|> check_game_state(struct, params)
|
|> check_game_state(struct, params)
|
||||||
|
|> change_turn(struct.turn)
|
||||||
end
|
end
|
||||||
|
|
||||||
def change_turn("black"), do: "white"
|
def change_turn(changeset, turn) do
|
||||||
def change_turn("white"), do: "black"
|
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
|
def for_user(user) do
|
||||||
for_user_id(user.id)
|
for_user_id(user.id)
|
||||||
@ -51,9 +57,9 @@ defmodule Chess.Store.Game do
|
|||||||
or_where: game.opponent_id == ^user_id
|
or_where: game.opponent_id == ^user_id
|
||||||
end
|
end
|
||||||
|
|
||||||
def check_game_state(changeset, _struct, params) do
|
def check_game_state(changeset, struct, params) do
|
||||||
changeset
|
changeset
|
||||||
|> put_change(:state, GameState.state(params.board, params.turn))
|
|> put_change(:state, GameState.state(params.board, struct.turn))
|
||||||
end
|
end
|
||||||
|
|
||||||
def validate_king_in_check(changeset, %Game{turn: turn}, %{board: board}) do
|
def validate_king_in_check(changeset, %Game{turn: turn}, %{board: board}) do
|
||||||
|
|||||||
@ -41,7 +41,6 @@ defmodule ChessWeb.GameChannel do
|
|||||||
changeset = Game.move_changeset(
|
changeset = Game.move_changeset(
|
||||||
game, %{
|
game, %{
|
||||||
board: Board.move_piece(game.board, move_params),
|
board: Board.move_piece(game.board, move_params),
|
||||||
turn: Game.change_turn(game.turn)
|
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user