feat : play UI v1

This commit is contained in:
GuillaumeSD
2024-03-20 20:37:58 +01:00
parent f5bf7ecfdb
commit 33c6764a8f
4 changed files with 31 additions and 20 deletions

View File

@@ -35,17 +35,5 @@ export const useScreenSize = () => {
}; };
}, []); }, []);
const getBoardSize = () => { return screenSize;
const width = screenSize.width;
const height = screenSize.height;
// 1200 is the lg layout breakpoint
if (window?.innerWidth < 1200) {
return Math.min(width, height - 150);
}
return Math.min(width - 600, height * 0.95);
};
return { ...screenSize, boardSize: getBoardSize() };
}; };

View File

@@ -16,14 +16,14 @@ export default function Play() {
<Grid <Grid
container container
item item
marginTop={{ xs: 0, lg: "2.5em" }} marginTop={{ xs: 0, md: "2.5em" }}
justifyContent="center" justifyContent="center"
alignItems="center" alignItems="center"
borderRadius={2} borderRadius={2}
border={1} border={1}
borderColor={"secondary.main"} borderColor={"secondary.main"}
xs={12} xs={12}
lg md
sx={{ sx={{
backgroundColor: "secondary.main", backgroundColor: "secondary.main",
borderColor: "primary.main", borderColor: "primary.main",
@@ -33,7 +33,7 @@ export default function Play() {
padding={3} padding={3}
rowGap={3} rowGap={3}
style={{ style={{
maxWidth: "1100px", maxWidth: "400px",
}} }}
> >
<GameInProgress /> <GameInProgress />

View File

@@ -20,7 +20,7 @@ import SquareRenderer, { moveClassificationColors } from "./squareRenderer";
export default function Board() { export default function Board() {
const boardRef = useRef<HTMLDivElement>(null); const boardRef = useRef<HTMLDivElement>(null);
const { boardSize } = useScreenSize(); const screenSize = useScreenSize();
const board = useAtomValue(boardAtom); const board = useAtomValue(boardAtom);
const boardOrientation = useAtomValue(boardOrientationAtom); const boardOrientation = useAtomValue(boardOrientationAtom);
const showBestMoveArrow = useAtomValue(showBestMoveArrowAtom); const showBestMoveArrow = useAtomValue(showBestMoveArrowAtom);
@@ -91,6 +91,18 @@ export default function Board() {
return []; return [];
}, [position, showBestMoveArrow]); }, [position, showBestMoveArrow]);
const boardSize = useMemo(() => {
const width = screenSize.width;
const height = screenSize.height;
// 1200 is the lg layout breakpoint
if (window?.innerWidth < 1200) {
return Math.min(width, height - 150);
}
return Math.min(width - 600, height * 0.95);
}, [screenSize]);
return ( return (
<Grid <Grid
item item

View File

@@ -12,7 +12,7 @@ import {
} from "../states"; } from "../states";
import { Square } from "react-chessboard/dist/chessboard/types"; import { Square } from "react-chessboard/dist/chessboard/types";
import { useChessActions } from "@/hooks/useChessActions"; import { useChessActions } from "@/hooks/useChessActions";
import { useEffect, useRef } from "react"; import { useEffect, useMemo, useRef } from "react";
import PlayerInfo from "./playerInfo"; import PlayerInfo from "./playerInfo";
import { useScreenSize } from "@/hooks/useScreenSize"; import { useScreenSize } from "@/hooks/useScreenSize";
import { Color, EngineName } from "@/types/enums"; import { Color, EngineName } from "@/types/enums";
@@ -23,7 +23,7 @@ import { useGameData } from "@/hooks/useGameData";
export default function Board() { export default function Board() {
const boardRef = useRef<HTMLDivElement>(null); const boardRef = useRef<HTMLDivElement>(null);
const { boardSize } = useScreenSize(); const screenSize = useScreenSize();
const engine = useEngine(EngineName.Stockfish16); const engine = useEngine(EngineName.Stockfish16);
const game = useAtomValue(gameAtom); const game = useAtomValue(gameAtom);
const playerColor = useAtomValue(playerColorAtom); const playerColor = useAtomValue(playerColorAtom);
@@ -106,6 +106,18 @@ export default function Board() {
setPlayableSquares([]); setPlayableSquares([]);
}; };
const boardSize = useMemo(() => {
const width = screenSize.width;
const height = screenSize.height;
// 900 is the md layout breakpoint
if (window?.innerWidth < 900) {
return Math.min(width, height - 150);
}
return Math.min(width - 300, height * 0.85);
}, [screenSize]);
return ( return (
<Grid <Grid
item item
@@ -114,7 +126,6 @@ export default function Board() {
justifyContent="center" justifyContent="center"
alignItems="center" alignItems="center"
width={boardSize} width={boardSize}
maxWidth="85vh"
> >
<PlayerInfo <PlayerInfo
color={playerColor === Color.White ? Color.Black : Color.White} color={playerColor === Color.White ? Color.Black : Color.White}