use GameView in renderers

This commit is contained in:
Evan
2025-01-03 10:18:25 -08:00
parent 8616e9bfcb
commit 3e8517363f
21 changed files with 101 additions and 122 deletions
+14 -7
View File
@@ -17,7 +17,7 @@ export class WorkerClient {
this.worker = new Worker(new URL('./Worker.worker.ts', import.meta.url));
}
initialize(gameUpdate: (gu: GameUpdateViewData) => void): Promise<void> {
initialize(): Promise<void> {
return new Promise((resolve, reject) => {
this.worker.postMessage({
type: 'init',
@@ -28,21 +28,28 @@ export class WorkerClient {
const handler = (e: MessageEvent) => {
if (e.data.type === 'initialized') {
this.isInitialized = true;
this.worker.removeEventListener('message', handler)
resolve();
return
}
if (!this.isInitialized) {
reject('Failed to initialize pathfinder');
}
if (e.data.type == "game_update") {
gameUpdate(e.data.gameUpdate)
}
};
this.worker.addEventListener('message', handler);
});
}
start(gameUpdate: (gu: GameUpdateViewData) => void) {
if (!this.isInitialized) {
throw new Error('Failed to initialize pathfinder');
}
const handler = (e: MessageEvent) => {
if (e.data.type == "game_update") {
gameUpdate(e.data.gameUpdate)
}
}
this.worker.addEventListener('message', handler);
}
sendTurn(turn: Turn) {
this.worker.postMessage({
type: "turn",