From ba3bf8e7973c8d40c8d26f52faf4869b681e0b26 Mon Sep 17 00:00:00 2001 From: Restart2008 Date: Sun, 26 Oct 2025 18:18:47 -0700 Subject: [PATCH] fix: Resolve userSettings is null error in worker This commit fixes the "userSettings is null" error that occurred in the worker when trying to join or create a game. - Introduced IUserSettings interface to define the contract for user settings used in the worker. - Updated UserSettings class to implement IUserSettings and provide a getData() method for serialization. - Modified WorkerMessages to include serialized user settings in the InitMessage. - Passed user settings from ClientGameRunner to WorkerClient, and then to the worker. - Updated createGameRunner to accept IUserSettings and pass it to getConfig. - Corrected type inconsistencies across various configuration and theme classes to align with IUserSettings. - Re-added missing imports in relevant files. --- src/client/ClientGameRunner.ts | 2 +- src/core/worker/WorkerClient.ts | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/client/ClientGameRunner.ts b/src/client/ClientGameRunner.ts index 9524e7c1b..fa54d60c1 100644 --- a/src/client/ClientGameRunner.ts +++ b/src/client/ClientGameRunner.ts @@ -162,7 +162,7 @@ async function createClientGame( const worker = new WorkerClient( lobbyConfig.gameStartInfo, lobbyConfig.clientID, - userSettings, + userSettings.getData(), ); await worker.initialize(); const gameView = new GameView( diff --git a/src/core/worker/WorkerClient.ts b/src/core/worker/WorkerClient.ts index f81624b32..715c268d4 100644 --- a/src/core/worker/WorkerClient.ts +++ b/src/core/worker/WorkerClient.ts @@ -7,6 +7,7 @@ import { } from "../game/Game"; import { TileRef } from "../game/GameMap"; import { ErrorUpdate, GameUpdateViewData } from "../game/GameUpdates"; +import { UserSettingsData } from "../game/UserSettings"; import { ClientID, GameStartInfo, Turn } from "../Schemas"; import { generateID } from "../Util"; import { WorkerMessage } from "./WorkerMessages"; @@ -22,7 +23,7 @@ export class WorkerClient { constructor( private gameStartInfo: GameStartInfo, private clientID: ClientID, - private userSettings: UserSettings, + private userSettingsData: UserSettingsData, ) { this.worker = new Worker(new URL("./Worker.worker.ts", import.meta.url)); this.messageHandlers = new Map(); @@ -71,7 +72,7 @@ export class WorkerClient { id: messageId, gameStartInfo: this.gameStartInfo, clientID: this.clientID, - userSettings: this.userSettings.getData(), + userSettings: this.userSettingsData, }); // Add timeout for initialization