Squashed commit of the following:
commit dfc79cf287823383a25a650d5788ee5250b1c316
Author: GuillaumeSD <47183782+GuillaumeSD@users.noreply.github.com>
Date: Sun May 11 01:32:35 2025 +0200
fix : style
commit bccfa5a3358302c2f037cc2dcfbd0a1df5e2974e
Author: GuillaumeSD <47183782+GuillaumeSD@users.noreply.github.com>
Date: Sun May 11 01:01:12 2025 +0200
feat : players clocks v1
commit 5f65009f200686433904710d5f9ceb1ba166fa9d
Author: GuillaumeSD <47183782+GuillaumeSD@users.noreply.github.com>
Date: Sat May 10 21:58:02 2025 +0200
fix : merge issues
commit f93dc6104e2d3fbb60088f578c2d1f13bf6519e9
Merge: a9f3728 fea1f3f
Author: GuillaumeSD <47183782+GuillaumeSD@users.noreply.github.com>
Date: Sat May 10 21:53:11 2025 +0200
Merge branch 'main' into feat/add-players-clocks
commit a9f372808ef403dfb823c4cf93c837412cc55c53
Author: GuillaumeSD <gsd.lfny@gmail.com>
Date: Mon Jan 6 23:10:28 2025 +0100
fix : rename
commit aedf9c252023bebe4da4327b7526371fa75b7b3e
Author: GuillaumeSD <gsd.lfny@gmail.com>
Date: Sun Jan 5 17:30:27 2025 +0100
feat : add players clocks
This commit is contained in:
@@ -1,11 +1,11 @@
|
||||
import { setGameHeaders } from "@/lib/chess";
|
||||
import { getGameFromPgn, setGameHeaders } from "@/lib/chess";
|
||||
import {
|
||||
playGameEndSound,
|
||||
playIllegalMoveSound,
|
||||
playSoundFromMove,
|
||||
} from "@/lib/sounds";
|
||||
import { Player } from "@/types/game";
|
||||
import { Chess, Move } from "chess.js";
|
||||
import { Chess, Move, DEFAULT_POSITION } from "chess.js";
|
||||
import { PrimitiveAtom, useAtom } from "jotai";
|
||||
import { useCallback } from "react";
|
||||
|
||||
@@ -43,8 +43,9 @@ export const useChessActions = (chessAtom: PrimitiveAtom<Chess>) => {
|
||||
if (game.history().length === 0) {
|
||||
const pgnSplitted = game.pgn().split("]");
|
||||
if (
|
||||
pgnSplitted.at(-1)?.includes("1-0") ||
|
||||
pgnSplitted.at(-1) === "\n *"
|
||||
["1-0", "0-1", "1/2-1/2", "*"].includes(
|
||||
pgnSplitted.at(-1)?.trim() ?? ""
|
||||
)
|
||||
) {
|
||||
newGame.loadPgn(pgnSplitted.slice(0, -1).join("]") + "]");
|
||||
return newGame;
|
||||
@@ -55,11 +56,31 @@ export const useChessActions = (chessAtom: PrimitiveAtom<Chess>) => {
|
||||
return newGame;
|
||||
}, [game]);
|
||||
|
||||
const resetToStartingPosition = useCallback(
|
||||
(pgn?: string) => {
|
||||
const newGame = pgn ? getGameFromPgn(pgn) : copyGame();
|
||||
newGame.load(newGame.getHeaders().FEN || DEFAULT_POSITION, {
|
||||
preserveHeaders: true,
|
||||
});
|
||||
setGame(newGame);
|
||||
},
|
||||
[copyGame, setGame]
|
||||
);
|
||||
|
||||
const makeMove = useCallback(
|
||||
(move: { from: string; to: string; promotion?: string }): Move | null => {
|
||||
(params: {
|
||||
from: string;
|
||||
to: string;
|
||||
promotion?: string;
|
||||
comment?: string;
|
||||
}): Move | null => {
|
||||
const newGame = copyGame();
|
||||
|
||||
try {
|
||||
const { comment, ...move } = params;
|
||||
const result = newGame.move(move);
|
||||
if (comment) newGame.setComment(comment);
|
||||
|
||||
setGame(newGame);
|
||||
playSoundFromMove(result);
|
||||
return result;
|
||||
@@ -103,5 +124,12 @@ export const useChessActions = (chessAtom: PrimitiveAtom<Chess>) => {
|
||||
[setGame]
|
||||
);
|
||||
|
||||
return { setPgn, reset, makeMove, undoMove, goToMove };
|
||||
return {
|
||||
setPgn,
|
||||
reset,
|
||||
makeMove,
|
||||
undoMove,
|
||||
goToMove,
|
||||
resetToStartingPosition,
|
||||
};
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user