Fix archive (#2035)

## Description:

Describe the PR.

## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [x] I have added relevant tests to the test directory
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced

## Please put your Discord username so you can be contacted if a bug or
regression is found:

evan
This commit is contained in:
evanpelle
2025-09-09 14:37:06 -07:00
committed by GitHub
parent defb6bb1d4
commit fd0fbfab9e
8 changed files with 83 additions and 47 deletions
+2 -3
View File
@@ -8,7 +8,7 @@ import {
PlayerRecord,
ServerMessage,
} from "../core/Schemas";
import { createGameRecord } from "../core/Util";
import { createPartialGameRecord } from "../core/Util";
import { ServerConfig } from "../core/configuration/Config";
import { getConfig } from "../core/configuration/ConfigLoader";
import { PlayerActions, UnitType } from "../core/game/Game";
@@ -221,7 +221,7 @@ export class ClientGameRunner {
if (this.lobby.gameStartInfo === undefined) {
throw new Error("missing gameStartInfo");
}
const record = createGameRecord(
const record = createPartialGameRecord(
this.lobby.gameStartInfo.gameID,
this.lobby.gameStartInfo.config,
players,
@@ -230,7 +230,6 @@ export class ClientGameRunner {
startTime(),
Date.now(),
update.winner,
this.lobby.serverConfig,
);
endGame(record);
}
+3 -3
View File
@@ -1,11 +1,11 @@
import { GameConfig, GameID, GameRecord } from "../core/Schemas";
import { GameConfig, GameID, PartialGameRecord } from "../core/Schemas";
import { replacer } from "../core/Util";
export interface LocalStatsData {
[key: GameID]: {
lobby: Partial<GameConfig>;
// Only once the game is over
gameRecord?: GameRecord;
gameRecord?: PartialGameRecord;
};
}
@@ -41,7 +41,7 @@ export function startTime() {
return _startTime;
}
export function endGame(gameRecord: GameRecord) {
export function endGame(gameRecord: PartialGameRecord) {
if (localStorage === undefined) {
return;
}
+8 -5
View File
@@ -4,14 +4,18 @@ import {
AllPlayersStats,
ClientMessage,
ClientSendWinnerMessage,
GameRecordSchema,
Intent,
PartialGameRecordSchema,
PlayerRecord,
ServerMessage,
ServerStartGameMessage,
Turn,
} from "../core/Schemas";
import { createGameRecord, decompressGameRecord, replacer } from "../core/Util";
import {
createPartialGameRecord,
decompressGameRecord,
replacer,
} from "../core/Util";
import { LobbyConfig } from "./ClientGameRunner";
import { ReplaySpeedChangeEvent } from "./InputHandler";
import { getPersistentID } from "./Main";
@@ -188,7 +192,7 @@ export class LocalServer {
if (this.lobbyConfig.gameStartInfo === undefined) {
throw new Error("missing gameStartInfo");
}
const record = createGameRecord(
const record = createPartialGameRecord(
this.lobbyConfig.gameStartInfo.gameID,
this.lobbyConfig.gameStartInfo.config,
players,
@@ -196,10 +200,9 @@ export class LocalServer {
this.startedAt,
Date.now(),
this.winner?.winner,
this.lobbyConfig.serverConfig,
);
const result = GameRecordSchema.safeParse(record);
const result = PartialGameRecordSchema.safeParse(record);
if (!result.success) {
const error = z.prettifyError(result.error);
console.error("Error parsing game record", error);