Index: binaries/data/mods/public/gui/gamesetup/gamesetup.js
===================================================================
--- binaries/data/mods/public/gui/gamesetup/gamesetup.js
+++ binaries/data/mods/public/gui/gamesetup/gamesetup.js
@@ -1008,8 +1008,12 @@
},
"lobbyButton": {
"onPress": () => function() {
- if (Engine.HasXmppClient())
- Engine.PushGuiPage("page_lobby.xml", { "dialog": true });
+ if (!Engine.HasXmppClient())
+ return;
+
+ setLobbyButtonIcon(false);
+ g_LobbyDialogOpened = true;
+ Engine.PushGuiPage("page_lobby.xml", { "dialog": true, "callback": "setLobbyDialogClosed" });
},
"hidden": () => !Engine.HasXmppClient()
},
@@ -1087,6 +1091,10 @@
g_ServerPort = attribs.serverPort;
g_StunEndpoint = attribs.stunEndpoint;
+ setLobbyButtonIcon(false);
+ if (Engine.HasXmppClient())
+ g_UpdateLobbyNotification = setLobbyButtonIcon;
+
if (!g_IsNetworked)
g_PlayerAssignments = {
"local": {
@@ -1108,6 +1116,19 @@
setTimeout(displayGamestateNotifications, 1000);
}
+function setLobbyButtonIcon(notify)
+{
+ Engine.GetGUIObjectByName("lobbyButton").sprite = notify ? "iconBubbleWhite" : "iconBubbleGold";
+
+ Engine.GetGUIObjectByName("lobbyButton").tooltip =
+ sprintf(translate("Show the multiplayer lobby in a dialog window. %(notification)s"), {
+ "notification": notify ? translate("(You have new lobby notifications.)") : ""
+ });
+
+ if (notify)
+ Engine.GetGUIObjectByName("onscreenToolTip").caption = translate("You have new lobby notifications. (Click the lobby icon button.)");
+}
+
function initDefaults()
{
// Remove gaia from both arrays
@@ -1910,8 +1931,12 @@
++g_LoadingState;
}
else if (g_LoadingState == 2)
+ {
handleNetMessages();
+ handleNetLobbyMessagesInBackground();
+ }
+
updateTimers();
let now = Date.now();
Index: binaries/data/mods/public/gui/gamesetup/gamesetup.xml
===================================================================
--- binaries/data/mods/public/gui/gamesetup/gamesetup.xml
+++ binaries/data/mods/public/gui/gamesetup/gamesetup.xml
@@ -4,6 +4,7 @@
+