X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=game.js;h=eb1ba807c3e1d9ec5a0e9eda65fceafaff052338;hb=8001b29a6250b40adb530a084e0911a8625a5b44;hp=0946568e9bbd8adc5c99d82832261fa1ac254d5d;hpb=0149bfd84c21bd3c53e6e0e4d4eee96c50b3f232;p=empires-server diff --git a/game.js b/game.js index 0946568..eb1ba80 100644 --- a/game.js +++ b/game.js @@ -158,7 +158,20 @@ class Game { /* No existing player. Add a new one. */ const id = this.next_player_id; - const player = new Player(id, session.id, session.nickname, connection); + let nickname = session.nickname; + if (nickname === "") + nickname = "Guest"; + const nickname_orig = nickname; + + /* Ensure we don't have a name collision with a previous player. */ + let unique_suffix = 1; + while (this.players.find(player => player.name === nickname)) + { + nickname = `${nickname_orig}${unique_suffix.toString().padStart(2, '0')}`; + unique_suffix++; + } + + const player = new Player(id, session.id, nickname, connection); /* Broadcast before adding player to list (to avoid announcing the * new player to itself). */ @@ -211,6 +224,10 @@ class Game { this.broadcast_string(`event: ${type}\ndata: ${data}\n`); } + broadcast_event_object(type, obj) { + this.broadcast_event(type, JSON.stringify(obj)); + } + handle_events(request, response) { /* These headers will keep the connection open so we can stream events. */ const headers = { @@ -293,7 +310,7 @@ class Game { } broadcast_move(move) { - this.broadcast_event("move", move); + this.broadcast_event("move", JSON.stringify(move)); } }