game runs in seperate thread

This commit is contained in:
Evan
2025-01-02 20:22:11 -08:00
parent f988d555bb
commit 8616e9bfcb
17 changed files with 135 additions and 263 deletions
+10 -1
View File
@@ -10,10 +10,12 @@ import { and, bfs, dist, generateID, manhattanDist } from "../core/Util";
import { WinCheckExecution } from "../core/execution/WinCheckExecution";
import { SendAttackIntentEvent, SendSpawnIntentEvent, Transport } from "./Transport";
import { createCanvas } from "./Utils";
import { DisplayMessageEvent, MessageType } from "./graphics/layers/EventsDisplay";
import { MessageType } from '../core/game/Game';
import { DisplayMessageEvent } from '../core/game/Game';
import { WorkerClient } from "../core/worker/WorkerClient";
import { consolex, initRemoteSender } from "../core/Consolex";
import { getConfig, getServerConfig } from "../core/configuration/Config";
import { GameUpdateViewData } from "../core/GameView";
export interface LobbyConfig {
playerName: () => string
@@ -75,6 +77,10 @@ export async function createClientGame(lobbyConfig: LobbyConfig, gameConfig: Gam
const terrainMap = await loadTerrainMap(gameConfig.gameMap);
let game = createGame(terrainMap.map, terrainMap.miniMap, eventBus, config)
const worker = new WorkerClient(lobbyConfig.gameID, gameConfig)
await worker.initialize((gu: GameUpdateViewData) => {
console.log('got update!')
})
consolex.log('going to init path finder')
consolex.log('inited path finder')
@@ -92,6 +98,7 @@ export async function createClientGame(lobbyConfig: LobbyConfig, gameConfig: Gam
new InputHandler(canvas, eventBus),
new Executor(game, lobbyConfig.gameID),
transport,
worker,
)
}
@@ -115,6 +122,7 @@ export class ClientGameRunner {
private input: InputHandler,
private executor: Executor,
private transport: Transport,
private worker: WorkerClient
) { }
public start() {
@@ -175,6 +183,7 @@ export class ClientGameRunner {
return
}
this.isProcessingTurn = true
this.worker.sendTurn(this.turns[this.currTurn])
this.gs.addExecution(...this.executor.createExecs(this.turns[this.currTurn]))
try {
const start = performance.now()
+4 -21
View File
@@ -1,17 +1,15 @@
import { LitElement, html, css } from 'lit';
import { customElement, property, state } from 'lit/decorators.js';
import { EventBus, GameEvent } from "../../../core/EventBus";
import { EventBus } from "../../../core/EventBus";
import {
AllianceExpiredEvent,
AllianceRequestEvent,
AllianceRequestReplyEvent,
AllPlayers,
BrokeAllianceEvent,
EmojiMessageEvent,
BrokeAllianceEvent, DisplayMessageEvent, EmojiMessageEvent,
Game,
Player,
PlayerID,
TargetPlayerEvent,
MessageType,
Player, TargetPlayerEvent,
UnitEvent
} from "../../../core/game/Game";
import { ClientID } from "../../../core/Schemas";
@@ -20,21 +18,6 @@ import { SendAllianceReplyIntentEvent } from "../../Transport";
import { unsafeHTML } from 'lit/directives/unsafe-html.js';
import { onlyImages, sanitize } from '../../../core/Util';
export enum MessageType {
SUCCESS,
INFO,
WARN,
ERROR,
}
export class DisplayMessageEvent implements GameEvent {
constructor(
public readonly message: string,
public readonly type: MessageType,
public readonly playerID: PlayerID | null = null
) { }
}
interface Event {
description: string;
unsafeDescription?: boolean