keep score when resume

This commit is contained in:
Viktor Rådberg
2025-11-17 00:54:36 +01:00
parent b530827d05
commit 1d00f04a97
3 changed files with 29 additions and 7 deletions

View File

@@ -123,6 +123,7 @@ const PlayerMenu = ({
saveCurrentGame, saveCurrentGame,
initialGameSettings, initialGameSettings,
setPreStartCompleted, setPreStartCompleted,
gameScore,
} = useGlobalSettings(); } = useGlobalSettings();
const analytics = useAnalytics(); const analytics = useAnalytics();
@@ -165,7 +166,7 @@ const PlayerMenu = ({
}; };
const handleGoToStart = () => { const handleGoToStart = () => {
saveCurrentGame({ players, initialGameSettings }); saveCurrentGame({ players, initialGameSettings, gameScore });
goToStart(); goToStart();
setRandomizingPlayer(true); setRandomizingPlayer(true);
}; };

View File

@@ -64,6 +64,7 @@ const Start = () => {
setPlaying, setPlaying,
savedGame, savedGame,
saveCurrentGame, saveCurrentGame,
setGameScore,
} = useGlobalSettings(); } = useGlobalSettings();
const infoDialogRef = useRef<HTMLDialogElement | null>(null); const infoDialogRef = useRef<HTMLDialogElement | null>(null);
@@ -213,6 +214,9 @@ const Start = () => {
setInitialGameSettings(savedGame.initialGameSettings); setInitialGameSettings(savedGame.initialGameSettings);
setPlayers(savedGame.players); setPlayers(savedGame.players);
if (savedGame.gameScore) {
setGameScore(savedGame.gameScore);
}
saveCurrentGame(null); saveCurrentGame(null);
setRandomizingPlayer(false); setRandomizingPlayer(false);
setShowPlay(true); setShowPlay(true);
@@ -407,15 +411,31 @@ const Start = () => {
{savedGame && ( {savedGame && (
<button <button
className="flex flex-grow basis-0 justify-center self-center items-center bg-secondary-main px-3 py-2 rounded-md text-text-primary min-w-[150px] className="flex flex-grow basis-0 justify-center self-center items-center bg-secondary-main px-3 py-2 rounded-md text-text-primary min-w-[150px]
duration-200 ease-in-out shadow-[1px_2px_4px_0px_rgba(0,0,0,0.3)] hover:bg-secondary-dark font-bold" duration-200 ease-in-out shadow-[1px_2px_4px_0px_rgba(0,0,0,0.3)] hover:bg-secondary-dark font-bold"
onClick={doResumeGame} onClick={doResumeGame}
> >
RESUME&nbsp; <div className="flex flex-col items-center">
<span className="text-xs"> <div>
({savedGame.players.length}&nbsp; RESUME&nbsp;
{savedGame.players.length > 1 ? 'players' : 'player'}) <span className="text-xs">
</span> ({savedGame.players.length}&nbsp;
{savedGame.players.length > 1 ? 'players' : 'player'})
</span>
</div>
{savedGame.gameScore && Object.keys(savedGame.gameScore).length > 0 && (
<div className="text-xs opacity-75">
Score: {Object.entries(savedGame.gameScore)
.map(([playerIndex, score]) => {
const player = savedGame.players.find(
(p) => p.index === Number(playerIndex)
);
return `${player?.name || `P${Number(playerIndex) + 1}`}: ${score}`;
})
.join(' | ')}
</div>
)}
</div>
</button> </button>
)} )}
</StartButtonFooter> </StartButtonFooter>

View File

@@ -12,6 +12,7 @@ type Version = {
export type SavedGame = { export type SavedGame = {
initialGameSettings: InitialGameSettings; initialGameSettings: InitialGameSettings;
players: Player[]; players: Player[];
gameScore?: GameScore;
} | null; } | null;
export type GameScore = { export type GameScore = {