From a01b347bbfc2e7aa7295c743eb278df9c05bda90 Mon Sep 17 00:00:00 2001 From: Evan Date: Sat, 7 Dec 2024 21:15:10 -0800 Subject: [PATCH] load mini map synchronously --- TODO.txt | 6 +++--- src/client/GameRunner.ts | 7 ++++--- src/core/game/GameImpl.ts | 15 ++++----------- 3 files changed, 11 insertions(+), 17 deletions(-) diff --git a/TODO.txt b/TODO.txt index 47a96ca23..6d22191ec 100644 --- a/TODO.txt +++ b/TODO.txt @@ -211,11 +211,11 @@ * add cities DONE 12/4/2024 * write multiplayer games to GCS DONE 12/6/2024 * write single player games to GCS DONE 12/7/2024 +* record game difficulty DONE 12/7/2024 +* standardize game ids DONE 12/7/2024 +* bufix: mini map doesn't load in time DONE 12/7/2024 * bugfix: private game host game doesn't start -* bufix: mini map doesn't load in time * record game winner -* record game difficulty -* standardize game ids * record commit hash of game * store metadata in BigQuery * replay stored games diff --git a/src/client/GameRunner.ts b/src/client/GameRunner.ts index 40c891026..644400fd9 100644 --- a/src/client/GameRunner.ts +++ b/src/client/GameRunner.ts @@ -6,7 +6,7 @@ import { Config, getConfig } from "../core/configuration/Config"; import { createRenderer, GameRenderer } from "./graphics/GameRenderer"; import { InputHandler, MouseUpEvent, ZoomEvent, DragEvent, MouseDownEvent } from "./InputHandler" import { ClientID, ClientIntentMessageSchema, ClientJoinMessageSchema, ClientMessageSchema, GameConfig, GameID, Intent, ServerMessage, ServerMessageSchema, ServerSyncMessage, Turn } from "../core/Schemas"; -import { loadTerrainMap, TerrainMapImpl } from "../core/game/TerrainMapLoader"; +import { createMiniMap, loadTerrainMap, TerrainMapImpl } from "../core/game/TerrainMapLoader"; import { and, bfs, dist, manhattanDist } from "../core/Util"; import { WinCheckExecution } from "../core/execution/WinCheckExecution"; import { SendAttackIntentEvent, SendSpawnIntentEvent, Transport } from "./Transport"; @@ -74,9 +74,10 @@ export function joinLobby(lobbyConfig: LobbyConfig, onjoin: () => void): () => v export async function createClientGame(gameConfig: GameConfig, eventBus: EventBus, transport: Transport, gameID: GameID, clientID: ClientID): Promise { const config = getConfig() - const terrainMap = await loadTerrainMap(gameConfig.gameMap) + const terrainMap = await loadTerrainMap(gameConfig.gameMap); + const miniMap = await createMiniMap(terrainMap); - let game = createGame(terrainMap, eventBus, config, gameConfig) + let game = createGame(terrainMap, miniMap, eventBus, config, gameConfig) const worker = new WorkerClient(game, gameConfig.gameMap) console.log('going to init path finder') diff --git a/src/core/game/GameImpl.ts b/src/core/game/GameImpl.ts index 70a7df122..cd7e325ed 100644 --- a/src/core/game/GameImpl.ts +++ b/src/core/game/GameImpl.ts @@ -12,8 +12,8 @@ import { ClientID, GameConfig } from "../Schemas"; import { DisplayMessageEvent, MessageType } from "../../client/graphics/layers/EventsDisplay"; import { UnitImpl } from "./UnitImpl"; -export function createGame(terrainMap: TerrainMapImpl, eventBus: EventBus, config: Config, gameConfig: GameConfig): Game { - return new GameImpl(terrainMap, eventBus, config, gameConfig) +export function createGame(terrainMap: TerrainMapImpl, miniMap: TerrainMap, eventBus: EventBus, config: Config, gameConfig: GameConfig): Game { + return new GameImpl(terrainMap, miniMap, eventBus, config, gameConfig) } export type CellString = string @@ -38,10 +38,10 @@ export class GameImpl implements MutableGame { allianceRequests: AllianceRequestImpl[] = [] alliances_: AllianceImpl[] = [] - private _terrainMiniMap: TerrainMap = null constructor( private _terrainMap: TerrainMapImpl, + private _miniMap: TerrainMap, public eventBus: EventBus, private _config: Config, private _gameConfig: GameConfig, @@ -64,10 +64,6 @@ export class GameImpl implements MutableGame { new Cell(n.coordinates[0], n.coordinates[1]), n.strength )) - createMiniMap(_terrainMap).then(m => { - console.log('mini map loaded!') - this._terrainMiniMap = m - }) } gameConfig(): GameConfig { @@ -438,10 +434,7 @@ export class GameImpl implements MutableGame { } public terrainMiniMap(): TerrainMap { - if (this._terrainMiniMap == null) { - throw Error('mini map not loaded') - } - return this._terrainMiniMap + return this._miniMap } displayMessage(message: string, type: MessageType, playerID: PlayerID | null): void {