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,6 +119,11 @@ "registered": msg => { }, "connected": msg => { + Engine.GetGUIObjectByName("chatInput").hidden = false; + + for (let button of ["host", "leaderboard", "userprofile", "toggleBuddy"]) + Engine.GetGUIObjectByName(button + "Button").enabled = true; + Engine.GetGUIObjectByName("chatInput").hidden = false; }, "disconnected": msg => { @@ -133,11 +138,21 @@ Engine.GetGUIObjectByName("chatInput").hidden = true; if (!g_Kicked) + { addChatMessage({ "from": "system", "time": msg.time, "text": translate("Disconnected.") + " " + msg.text }); + + messageBox( + 400, 200, + translate("Lobby is disconnect, you want to reconnect?"), + translate("Confirmation"), + [translate("back to Mainmenu"), translate("Reconnect")], + [returnToMainMenu, reconnectLobby] + ); + } }, "error": msg => { addChatMessage({ @@ -356,6 +371,26 @@ Engine.GetGUIObjectByName("chatInput").tooltip = colorizeAutocompleteHotkey(); } +function reconnectLobby() +{ + if (Engine.HasXmppClient()) + Engine.StopXmppClient(); + + let encryptedPassword = Engine.ConfigDB_GetValue("user", "lobby.password"); + + let room = Engine.ConfigDB_GetValue("user", "lobby.room"); + let history = Number(Engine.ConfigDB_GetValue("user", "lobby.history")); + + addChatMessage({ + "from": "system", + "text": translate("Reconnect.") + }); + + // We just use username as nick for simplicity. + Engine.StartXmppClient(g_Username, encryptedPassword, room, g_Username, history); + Engine.ConnectXmppClient(); +} + function updateLobbyColumns() { let gameRating = Engine.ConfigDB_GetValue("user", "lobby.columns.gamerating") == "true";