diff --git a/binaries/data/mods/public/gui/session_new/messages.js b/binaries/data/mods/public/gui/session_new/messages.js index f3b5d7eeba..27bcbe3249 100644 --- a/binaries/data/mods/public/gui/session_new/messages.js +++ b/binaries/data/mods/public/gui/session_new/messages.js @@ -27,12 +27,17 @@ function handleNetMessage(message) obj.hidden = false; // TODO: we need to give players some way to exit break; - default: error("Unrecognised netstatus type "+message.status); break; } break; + case "players": + // Find and report all leavings + for (var host in g_PlayerAssignments) + if (! message.hosts[host]) + addChatMessage({ "type": "disconnect", "username": g_PlayerAssignments[host].name }); + break; case "chat": addChatMessage({ "type": "message", "username": message.username, "text": message.text }); break; @@ -98,7 +103,7 @@ function addChatMessage(msg) function removeOldChatMessages() { - clearTimeout(chatTimers[0]); + clearTimeout(chatTimers[0]); // The timer only needs to be cleared when new messages bump old messages off chatTimers.shift(); chatMessages.shift(); getGUIObjectByName("chatText").caption = chatMessages.join("\n"); diff --git a/binaries/data/mods/public/gui/session_new/session.js b/binaries/data/mods/public/gui/session_new/session.js index 8c56635285..d22d300d32 100644 --- a/binaries/data/mods/public/gui/session_new/session.js +++ b/binaries/data/mods/public/gui/session_new/session.js @@ -24,6 +24,8 @@ var g_IsNetworked = false; // Cache the basic player data (name, civ, color) var g_Players = []; +var g_PlayerAssignments = {}; + // Cache dev-mode settings that are frequently or widely used var g_DevSettings = { controlAll: false @@ -44,6 +46,7 @@ function init(initData, hotloadData) if (initData) { g_IsNetworked = initData.isNetworked; // Set network mode + g_PlayerAssignments = initData.playerAssignments; g_Players = getPlayerData(initData.playerAssignments); // Cache the player data } else // Needed for autostart loading option