Index: binaries/data/mods/public/gui/lobby/lobby.js =================================================================== --- binaries/data/mods/public/gui/lobby/lobby.js +++ binaries/data/mods/public/gui/lobby/lobby.js @@ -119,24 +119,26 @@ "system": { // Three cases are handled in prelobby.js "registered": msg => false, - "connected": msg => false, + "connected": msg => { + connectedGuiState(true, msg); + return false; + }, "disconnected": msg => { updateGameList(); updateLeaderboard(); - Engine.GetGUIObjectByName("chatInput").hidden = true; - - for (let button of ["host", "leaderboard", "userprofile", "toggleBuddy"]) - Engine.GetGUIObjectByName(button + "Button").enabled = false; - Engine.GetGUIObjectByName("chatInput").hidden = true; + connectedGuiState(false, msg); if (!g_Kicked) - addChatMessage({ - "from": "system", - "time": msg.time, - "text": translate("Disconnected.") + " " + msg.reason - }); + messageBox( + 400, 200, + ""+ g_Username + "\n\n" + + translate("You are disconnected from the Lobby, do you want to reconnect?") + "\n", + translate("Information"), + [translate("Main Menu"), translate("Stay"), translate("Reconnect")], + [returnToMainMenu, null, reconnectLobby] + ); return true; }, "error": msg => { @@ -403,6 +405,47 @@ g_NetMessageTypes[msg.type][msg.level](msg); } +/* + * Relogin into lobby with known user login credentials from config. + */ +function reconnectLobby() +{ + if (Engine.HasXmppClient()) + Engine.StopXmppClient(); + + addChatMessage({ + "from": "system", + "text": translate("Reconnecting") + }); + + Engine.StartXmppClient( + g_Username, + Engine.ConfigDB_GetValue("user", "lobby.password"), + Engine.ConfigDB_GetValue("user", "lobby.room"), + g_Username, + 0 + ); + + Engine.ConnectXmppClient(); +} + +/* + * Set gui state to connected or disconnected. + */ +function connectedGuiState(connected, msg) +{ + for (let button of ["host", "leaderboard", "userprofile", "toggleBuddy"]) + Engine.GetGUIObjectByName(button + "Button").enabled = connected; + + Engine.GetGUIObjectByName("chatInput").hidden = !connected; + + addChatMessage({ + "from": "system", + "time": msg.time, + "text": connected ? translate("Connected.") : translate("Disconnected.") + (msg.reason ? " " + msg.reason : "") + }); +} + function updateLobbyColumns() { let gameRating = Engine.ConfigDB_GetValue("user", "lobby.columns.gamerating") == "true";