]> git.cworth.org Git - lmno-server/commitdiff
Don't send a re-connecting player a player-enter event for themself
authorCarl Worth <cworth@cworth.org>
Sat, 27 Jun 2020 17:26:29 +0000 (10:26 -0700)
committerCarl Worth <cworth@cworth.org>
Sat, 27 Jun 2020 17:26:29 +0000 (10:26 -0700)
It's rather ugly that we've got these semantics where the client
doesn't want to see a player-enter event for itself. This is causing
too many special cases in the code (such as the current commit).

So we'll want to change that at some point. But for now we make the
case of a player reconnecting match the semantics. Specifically we
move the add_connection call down _after_ the broadcast of the
player-enter event. This fixes the current client so that it doesn't
display its own name twice when reclaiming a pre-existing player.

game.js

diff --git a/game.js b/game.js
index 5386cd212d902b7fb5e2266b26a4c8690ef7b3d2..0023257e796c1f56e49e2fe62742c6ec1f35454b 100644 (file)
--- a/game.js
+++ b/game.js
@@ -165,7 +165,6 @@ class Game {
     /* First see if we already have a player object for this session. */
     const existing = this.players_by_session[session.id];
     if (existing) {
-      existing.add_connection(connection);
       if (! existing.active) {
         /* If we're re-activating a previously idled player, then we
          * need to alert everyone that this player is now back.
@@ -174,6 +173,7 @@ class Game {
         this.active_players++;
         this.broadcast_event("player-enter", existing.info_json());
       }
+      existing.add_connection(connection);
       return existing;
     }