summaryrefslogtreecommitdiff
path: root/server/src/network/MessageProcessor.ts
blob: 2d9f11f249bbdf27448073ed49fd6cdcd57d274a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import {
  EntityUpdateBody,
  MessageProcessor,
  MessageType
} from '@engine/network';
import { ServerMessage, SessionManager } from '.';
import { Game } from '@engine/Game';

export class ServerMessageProcessor implements MessageProcessor {
  private game: Game;
  private sessionManager: SessionManager;

  constructor(game: Game, sessionManager: SessionManager) {
    this.game = game;
    this.sessionManager = sessionManager;
  }

  public process(message: ServerMessage) {
    switch (message.type) {
      case MessageType.NEW_INPUT: {
        const { sessionId } = message.sessionData;
        const session = this.sessionManager.getSession(sessionId);
        session?.inputSystem.keyPressed(message.body as string);
        break;
      }
      case MessageType.REMOVE_INPUT: {
        const { sessionId } = message.sessionData;
        const session = this.sessionManager.getSession(sessionId);
        session?.inputSystem.keyReleased(message.body as string);
        break;
      }
      default:
        break;
    }
  }
}