diff --git a/binaries/data/mods/public/gui/common/network.js b/binaries/data/mods/public/gui/common/network.js new file mode 100644 index 0000000000..a46dde84fa --- /dev/null +++ b/binaries/data/mods/public/gui/common/network.js @@ -0,0 +1,19 @@ +function getDisconnectReason(id) +{ + // Must be kept in sync with source/network/NetHost.h + switch (id) + { + case 0: return "Unknown reason"; + case 1: return "Unexpected shutdown"; + case 2: return "Incorrect network protocol version"; + case 3: return "Game has already started"; + default: return "[Invalid value "+id+"]"; + } +} + +function reportDisconnect(reason) +{ + messageBox(400, 200, + "Lost connection to the server.\n\nReason: " + getDisconnectReason(reason) + ".", + "Disconnected", 2); +} diff --git a/binaries/data/mods/public/gui/gamesetup/gamesetup.js b/binaries/data/mods/public/gui/gamesetup/gamesetup.js index 15986d95c2..20ae46590b 100644 --- a/binaries/data/mods/public/gui/gamesetup/gamesetup.js +++ b/binaries/data/mods/public/gui/gamesetup/gamesetup.js @@ -89,8 +89,9 @@ function handleNetMessage(message) case "disconnected": Engine.DisconnectNetworkGame(); Engine.PopGuiPage(); - messageBox(400, 200, "Connection to the server has been lost.", "Disconnected", 2); + reportDisconnect(message.reason); break; + default: error("Unrecognised netstatus type "+message.status); break; @@ -118,7 +119,7 @@ function handleNetMessage(message) break; case "start": - Engine.PushGuiPage("page_loading.xml", { "attribs": g_GameAttributes }); + Engine.SwitchGuiPage("page_loading.xml", { "attribs": g_GameAttributes }); break; case "chat": diff --git a/binaries/data/mods/public/gui/gamesetup/gamesetup.xml b/binaries/data/mods/public/gui/gamesetup/gamesetup.xml index 04fc080dd0..37ed42eca0 100644 --- a/binaries/data/mods/public/gui/gamesetup/gamesetup.xml +++ b/binaries/data/mods/public/gui/gamesetup/gamesetup.xml @@ -2,6 +2,7 @@ +