diff options
Diffstat (limited to 'client/src/client.ts')
| -rw-r--r-- | client/src/client.ts | 32 |
1 files changed, 22 insertions, 10 deletions
diff --git a/client/src/client.ts b/client/src/client.ts index 77d6676..f166c88 100644 --- a/client/src/client.ts +++ b/client/src/client.ts @@ -1,10 +1,13 @@ import type AkkamonSession from './session'; -import type { GameState } from './GameState'; import { Socket } from './socket'; +import type { GridPhysics } from './GridPhysics'; +import type { RemotePlayerEngine } from './RemotePlayerEngine'; + import { EventType, HeartBeatReplyEvent, - AkkamonEvent + IncomingEvent, + AkkamonEvent, } from './events'; @@ -12,7 +15,8 @@ export class Client { private session: AkkamonSession; - private akkamonState?: GameState; + private gridPhysics?: GridPhysics; + private remotePlayerEngine?: RemotePlayerEngine; constructor( url: string @@ -20,18 +24,21 @@ export class Client this.session = new Socket(url, this); } - getMutableState(): GameState { - return this.akkamonState!; - } - in(eventString: string) { - let event: AkkamonEvent = JSON.parse(eventString); - console.log("-> client is handling incoming event:"); - console.log(event); + let event: IncomingEvent = JSON.parse(eventString); switch (event.type) { case EventType.HEART_BEAT: + if (this.remotePlayerEngine !== undefined) { + this.remotePlayerEngine.push(event.remoteMovementQueues!); + } this.send(new HeartBeatReplyEvent()); break; + case EventType.PLAYERS_NEARBY: + this.ui.setPlayersNearby(); + break; + default: + console.log("ignored incoming event, doesn't match EventType interface."); + break; } } @@ -42,4 +49,9 @@ export class Client this.session.send(JSON.stringify(event)); } } + + setRemotePlayerEngine(engine: RemotePlayerEngine) { + this.remotePlayerEngine = engine; + } + } |
