Persistent game #5

Merged
Simponic merged 6 commits from persistent-game into main 2023-01-17 16:00:18 -05:00
Showing only changes of commit 06411cc442 - Show all commits

View File

@ -294,39 +294,41 @@ defmodule Chessh.SSH.Client.Game do
attempted_move attempted_move
) do ) do
{:ok, status} -> {:ok, status} ->
{:ok, fen} = :binbo.get_fen(binbo_pid)
default_changeset = %{
fen: fen,
moves: game.moves + 1,
turn: if(game.turn == :dark, do: :light, else: :dark)
}
case status do case status do
:continue -> :continue ->
{:ok, fen} = :binbo.get_fen(binbo_pid)
{:ok, _new_game} = {:ok, _new_game} =
Game.changeset( Game.changeset(
game, game,
%{ default_changeset
fen: fen,
moves: game.moves + 1,
turn: if(game.turn == :dark, do: :light, else: :dark)
}
) )
|> Repo.update() |> Repo.update()
{:draw, _} -> {:draw, _} ->
Game.changeset( Game.changeset(
game, game,
%{status: :draw} Map.merge(default_changeset, %{status: :draw})
) )
|> Repo.update() |> Repo.update()
{:checkmate, :white_wins} -> {:checkmate, :white_wins} ->
Game.changeset( Game.changeset(
game, game,
%{status: :winner, winner: :light} Map.merge(default_changeset, %{status: :winner, winner: :light})
) )
|> Repo.update() |> Repo.update()
{:checkmate, :black_wins} -> {:checkmate, :black_wins} ->
Game.changeset( Game.changeset(
game, game,
%{status: :winner, winner: :dark} Map.merge(default_changeset, %{status: :winner, winner: :dark})
) )
|> Repo.update() |> Repo.update()
end end