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

View File

@@ -64,6 +64,7 @@ const Start = () => {
setPlaying,
savedGame,
saveCurrentGame,
setGameScore,
} = useGlobalSettings();
const infoDialogRef = useRef<HTMLDialogElement | null>(null);
@@ -213,6 +214,9 @@ const Start = () => {
setInitialGameSettings(savedGame.initialGameSettings);
setPlayers(savedGame.players);
if (savedGame.gameScore) {
setGameScore(savedGame.gameScore);
}
saveCurrentGame(null);
setRandomizingPlayer(false);
setShowPlay(true);
@@ -411,11 +415,27 @@ const Start = () => {
duration-200 ease-in-out shadow-[1px_2px_4px_0px_rgba(0,0,0,0.3)] hover:bg-secondary-dark font-bold"
onClick={doResumeGame}
>
RESUME&nbsp;
<span className="text-xs">
({savedGame.players.length}&nbsp;
{savedGame.players.length > 1 ? 'players' : 'player'})
</span>
<div className="flex flex-col items-center">
<div>
RESUME&nbsp;
<span className="text-xs">
({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>
)}
</StartButtonFooter>

View File

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