Teleport notification

- Create end point to permit the teleport notification. The map url will be /teleport/token_user
- Create message teleport
- Create receive feature in phaser to teleport

TODO
Teleport player on black room.
This commit is contained in:
Gregoire Parant 2020-10-13 11:39:07 +02:00
parent 3c2f134e4e
commit 65406f844e
8 changed files with 96 additions and 19 deletions

View file

@ -49,7 +49,7 @@ import {
SilentMessage,
WebRtcSignalToClientMessage,
WebRtcSignalToServerMessage,
WebRtcStartMessage, WebRtcDisconnectMessage, PlayGlobalMessage, ReportPlayerMessage
WebRtcStartMessage, WebRtcDisconnectMessage, PlayGlobalMessage, ReportPlayerMessage, TeleportMessageMessage
} from "../Messages/generated/messages_pb";
import {UserMovesMessage} from "../Messages/generated/messages_pb";
import Direction = PositionMessage.Direction;
@ -108,22 +108,6 @@ export class IoSocketController {
return true;
}
/**
*
* @param token
*/
/* searchClientByToken(token: string): ExSocketInterface | null {
const clients: ExSocketInterface[] = Object.values(this.Io.sockets.sockets) as ExSocketInterface[];
for (let i = 0; i < clients.length; i++) {
const client = clients[i];
if (client.token !== token) {
continue
}
return client;
}
return null;
}*/
private async authenticate(req: HttpRequest): Promise<{ token: string, userUuid: string }> {
//console.log(socket.handshake.query.token);
@ -921,4 +905,27 @@ export class IoSocketController {
public getWorlds(): Map<string, World> {
return this.Worlds;
}
/**
*
* @param token
*/
searchClientByUuid(uuid: string): ExSocketInterface | null {
for(let socket of this.sockets.values()){
if(socket.userUuid === uuid){
return socket;
}
}
return null;
}
public teleport(userUuid: string) {
let user = this.searchClientByUuid(userUuid);
if(!user){
throw 'User not found';
}
const teleportMessageMessage = new TeleportMessageMessage();
teleportMessageMessage.setMap(`/teleport/${user.userUuid}`);
user.send(teleportMessageMessage.serializeBinary().buffer, true);
}
}