Merge pull request #179 from thecodingmachine/fixeventsfiredtwice

Fixing events fired multiple times
This commit is contained in:
David Négrier 2020-06-11 13:44:40 +02:00 committed by GitHub
commit be3bb09f1d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 9 deletions

View File

@ -158,6 +158,16 @@ export class Connection implements ConnectionInterface {
token: this.token
}
});
//listen event
this.disconnectServer();
this.errorMessage();
this.groupUpdatedOrCreated();
this.groupDeleted();
this.onUserJoins();
this.onUserMoved();
this.onUserLeft();
return this.connectSocketServer();
})
.catch((err) => {
@ -178,15 +188,6 @@ export class Connection implements ConnectionInterface {
* @param character
*/
connectSocketServer(): Promise<ConnectionInterface>{
//listen event
this.disconnectServer();
this.errorMessage();
this.groupUpdatedOrCreated();
this.groupDeleted();
this.onUserJoins();
this.onUserMoved();
this.onUserLeft();
return new Promise<ConnectionInterface>((resolve, reject) => {
this.getSocket().emit(EventMessage.SET_PLAYER_DETAILS, {
name: this.name,

View File

@ -188,15 +188,18 @@ export class GameManager {
private timeoutCallback: NodeJS.Timeout|null = null;
reconnectToGameScene(lastPositionShared: PointInterface) {
if (this.reconnectScene === null && this.currentGameScene && this.timeoutCallback === null) {
console.log('Reconnect called without switchToDisconnectedScene called first');
// In case we are asked to reconnect even if switchToDisconnectedScene was not triggered (can happen when a laptop goes to sleep)
this.switchToDisconnectedScene();
// Wait a bit for scene to load. Otherwise, starting ReconnectingSceneName and then starting GameScene one after the other fails for some reason.
this.timeoutCallback = setTimeout(() => {
console.log('Reconnecting to game scene from setTimeout');
this.reconnectToGameScene(lastPositionShared);
this.timeoutCallback = null;
}, 500);
return;
}
console.log('Reconnecting to game scene');
const game : Phaser.Scene = GameScene.createFromUrl(this.oldMapUrlFile, this.oldInstance);
this.reconnectScene?.scene.add(this.oldSceneKey, game, true, { initPosition: lastPositionShared });
}