Taking advantage of the TypeScript Constructor Assignment too to reduce the amount of code!
//add function to refresh position user in real time.
this.refreshUserPosition(Client);
- let messageUserPosition = new MessageUserPosition({
- userId: Client.id,
- roomId: Client.roomId,
- name: Client.name,
- character: Client.character,
- position: new Point(0, 0, 'none')
- });
+ let messageUserPosition = new MessageUserPosition(Client.id, Client.name, Client.character,new Point(0, 0, 'none'));
socket.to(roomId).emit(SockerIoEvent.JOIN_ROOM, messageUserPosition);
} catch (e) {
rooms.refreshUserPosition(rooms, this.Io);
// update position in the world
- let data = {
- userId: Client.id,
- roomId: Client.roomId,
- position: Client.position,
- name: Client.name,
- character: Client.character,
- };
- let messageUserPosition = new MessageUserPosition(data);
+ let messageUserPosition = new MessageUserPosition(Client.id, Client.name, Client.character, Client.position);
let world = this.Worlds.get(Client.roomId);
if (!world) {
return;
+++ /dev/null
-export class Message {
- userId: string;
- name: string;
- character: string;
-
- constructor(data: any) {
- if (!data.userId) {
- console.error("Got invalid message", data);
- throw Error("userId cannot be null");
- }
- this.userId = data.userId;
- this.name = data.name;
- this.character = data.character;
- }
-}
import {PointInterface} from "./PointInterface";
export class Point implements PointInterface{
- x: number;
- y: number;
- direction: string;
-
- constructor(x : number, y : number, direction : string = "none") {
- if(x === null || y === null){
- throw Error("position x and y cannot be null");
- }
- this.x = x;
- this.y = y;
- this.direction = direction;
+ constructor(public x : number, public y : number, public direction : string = "none") {
}
}
-export class MessageUserPosition extends Message{
- position: PointInterface;
-
- constructor(message: any) {
- super(message);
- this.position = new Point(message.position.x, message.position.y, message.position.direction);
+export class MessageUserPosition {
+ constructor(public userId: string, public name: string, public character: string, public position: PointInterface) {
}
}