y: user y position on map
*/
socket.on(SockerIoEvent.JOIN_ROOM, (message: string) => {
- let messageUserPosition = this.hydrateMessageReceive(message);
- if (messageUserPosition instanceof Error) {
- return socket.emit(SockerIoEvent.MESSAGE_ERROR, JSON.stringify({message: messageUserPosition.message}))
- }
+ try {
+ let messageUserPosition = this.hydrateMessageReceive(message);
+ if (messageUserPosition instanceof Error) {
+ return socket.emit(SockerIoEvent.MESSAGE_ERROR, JSON.stringify({message: messageUserPosition.message}))
+ }
- let Client = (socket as ExSocketInterface);
+ let Client = (socket as ExSocketInterface);
- if(Client.roomId === messageUserPosition.roomId){
- return;
- }
+ if(Client.roomId === messageUserPosition.roomId){
+ return;
+ }
- //leave previous room
- this.leaveRoom(Client);
+ //leave previous room
+ this.leaveRoom(Client);
- //join new previous room
- this.joinRoom(Client, messageUserPosition);
+ //join new previous room
+ this.joinRoom(Client, messageUserPosition);
- // sending to all clients in room except sender
- this.saveUserInformation(Client, messageUserPosition);
+ // sending to all clients in room except sender
+ this.saveUserInformation(Client, messageUserPosition);
- //add function to refresh position user in real time.
- this.refreshUserPosition(Client);
+ //add function to refresh position user in real time.
+ this.refreshUserPosition(Client);
- socket.to(messageUserPosition.roomId).emit(SockerIoEvent.JOIN_ROOM, messageUserPosition.toString());
+ socket.to(messageUserPosition.roomId).emit(SockerIoEvent.JOIN_ROOM, messageUserPosition.toString());
+ } catch (e) {
+ console.error('An error occurred on "join_room" event');
+ console.error(e);
+ }
});
socket.on(SockerIoEvent.USER_POSITION, (message: string) => {
- let messageUserPosition = this.hydrateMessageReceive(message);
- if (messageUserPosition instanceof Error) {
- return socket.emit(SockerIoEvent.MESSAGE_ERROR, JSON.stringify({message: messageUserPosition.message}));
+ try {
+ let messageUserPosition = this.hydrateMessageReceive(message);
+ if (messageUserPosition instanceof Error) {
+ return socket.emit(SockerIoEvent.MESSAGE_ERROR, JSON.stringify({message: messageUserPosition.message}));
+ }
+
+ let Client = (socket as ExSocketInterface);
+
+ // sending to all clients in room except sender
+ this.saveUserInformation(Client, messageUserPosition);
+
+ //refresh position of all user in all rooms in real time
+ this.refreshUserPosition(Client);
+ } catch (e) {
+ console.error('An error occurred on "user_position" event');
+ console.error(e);
}
-
- let Client = (socket as ExSocketInterface);
-
- // sending to all clients in room except sender
- this.saveUserInformation(Client, messageUserPosition);
-
- //refresh position of all user in all rooms in real time
- this.refreshUserPosition(Client);
- });
+ });
socket.on(SockerIoEvent.WEBRTC_SIGNAL, (message: string) => {
let data: any = JSON.parse(message);
});
socket.on(SockerIoEvent.DISCONNECT, () => {
- let Client = (socket as ExSocketInterface);
- this.sendDisconnectedEvent(Client);
-
- //refresh position of all user in all rooms in real time
- this.refreshUserPosition(Client);
-
- //leave room
- this.leaveRoom(Client);
-
- //leave webrtc room
- socket.leave(Client.webRtcRoomId);
-
- //delete all socket information
- delete Client.userId;
- delete Client.webRtcRoomId;
- delete Client.roomId;
- delete Client.token;
- delete Client.position;
+ try {
+ let Client = (socket as ExSocketInterface);
+ this.sendDisconnectedEvent(Client);
+
+ //refresh position of all user in all rooms in real time
+ this.refreshUserPosition(Client);
+
+ //leave room
+ this.leaveRoom(Client);
+
+ //leave webrtc room
+ socket.leave(Client.webRtcRoomId);
+
+ //delete all socket information
+ delete Client.userId;
+ delete Client.webRtcRoomId;
+ delete Client.roomId;
+ delete Client.token;
+ delete Client.position;
+ } catch (e) {
+ console.error('An error occurred on "disconnect"');
+ console.error(e);
+ }
});
});
}
this.setSize(16, 16); //edit the hitbox to better match the character model
this.setOffset(8, 16);
this.setDepth(-1);
+
+ this.scene.events.on('postupdate', this.postupdate.bind(this));
}
move(x: number, y: number) {
if (this.bubble) {
this.bubble.moveBubble(this.x, this.y);
}
- this.updatePlayerNamePosition(this.x, this.y);
//update depth user
this.setDepth(this.y);
}
- updatePlayerNamePosition(x: number, y: number){
- this.playerName.setPosition(x, y - 25);
+ postupdate(time: number, delta: number) {
+ //super.update(delta);
+ this.playerName.setPosition(this.x, this.y - 25);
}
stop(){
}
destroy(fromScene?: boolean): void {
+ if (this.scene) {
+ this.scene.events.removeListener('postupdate', this.postupdate.bind(this));
+ }
super.destroy(fromScene);
this.playerName.destroy();
}