diff options
Diffstat (limited to 'client/src/JumpStorm.ts')
-rw-r--r-- | client/src/JumpStorm.ts | 57 |
1 files changed, 55 insertions, 2 deletions
diff --git a/client/src/JumpStorm.ts b/client/src/JumpStorm.ts index bd48483..8075cc8 100644 --- a/client/src/JumpStorm.ts +++ b/client/src/JumpStorm.ts @@ -7,15 +7,63 @@ import { Physics, Input, Collision, + MessageQueueProvider, + MessagePublisher, + NetworkUpdate, } from "@engine/systems"; +class ClientSocketMessageQueueProvider implements MessageQueueProvider { + private socket: WebSocket; + private messages: any[]; + + constructor(socket: WebSocket) { + this.socket = socket; + this.messages = []; + + this.socket.addEventListener("message", (e) => { + console.log(e); + }); + } + + getNewMessages() { + return this.messages; + } + + clearMessages() { + this.messages = []; + } +} + +class ClientSocketMessagePublisher implements MessagePublisher { + private socket: WebSocket; + private messages: any[]; + + constructor(socket: WebSocket) { + this.socket = socket; + this.messages = []; + + this.socket.addEventListener("message", (e) => { + console.log(e); + }); + } + + addMessage(_message: any) {} + + publish() {} +} + export class JumpStorm { private game: Game; - private socket: WebSocket; constructor(ctx: CanvasRenderingContext2D) { this.game = new Game(); - this.socket = new WebSocket("ws://localhost:8080"); + + const socket = new WebSocket("ws://localhost:8080"); + const clientSocketMessageQueueProvider = + new ClientSocketMessageQueueProvider(socket); + const clientSocketMessagePublisher = new ClientSocketMessagePublisher( + socket, + ); [ this.createInputSystem(), @@ -23,6 +71,10 @@ export class JumpStorm { new Physics(), new Collision(), new WallBounds(ctx.canvas.width), + new NetworkUpdate( + clientSocketMessageQueueProvider, + clientSocketMessagePublisher, + ), new Render(ctx), ].forEach((system) => this.game.addSystem(system)); @@ -49,6 +101,7 @@ export class JumpStorm { inputSystem.keyPressed(e.key); } }); + window.addEventListener("keyup", (e) => inputSystem.keyReleased(e.key)); return inputSystem; |