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 @@