Index: ./gui/gamesetup/gamesetup.js =================================================================== --- ./gui/gamesetup/gamesetup.js +++ ./gui/gamesetup/gamesetup.js @@ -162,6 +162,7 @@ * To report the game to the lobby bot. */ var g_ServerName; +var g_ServerIP; var g_ServerPort; /** @@ -246,6 +247,7 @@ g_IsNetworked = attribs.type != "offline"; g_IsController = attribs.type != "client"; g_ServerName = attribs.serverName; + g_ServerIP = attribs.serverIP; g_ServerPort = attribs.serverPort; // Replace empty playername when entering a singleplayermatch for the first time @@ -716,6 +718,8 @@ Engine.SwitchGuiPage("page_loading.xml", { "attribs": g_GameAttributes, "isNetworked" : g_IsNetworked, + "serverIP" : g_ServerIP, + "serverPort" : g_ServerPort, "playerAssignments": g_PlayerAssignments, "isController": g_IsController }); Index: ./gui/gamesetup/gamesetup_mp.js =================================================================== --- ./gui/gamesetup/gamesetup_mp.js +++ ./gui/gamesetup/gamesetup_mp.js @@ -17,6 +17,7 @@ * Cached to pass it to the gamesetup of the controller to report the game to the lobby. */ var g_ServerPort; +var g_ServerIP; var g_IsRejoining = false; var g_GameAttributes; // used when rejoining @@ -26,6 +27,8 @@ function init(attribs) { g_UserRating = attribs.rating; + g_ServerPort = attribs.port; + g_ServerIP = attribs.ip; switch (attribs.multiplayerGameType) { @@ -90,8 +93,9 @@ { let joinPlayerName = Engine.GetGUIObjectByName("joinPlayerName").caption; let joinServer = Engine.GetGUIObjectByName("joinServer").caption; + g_ServerIP = joinServer; let joinPort = Engine.GetGUIObjectByName("joinPort").caption; - + g_ServerPort = joinPort; if (startJoin(joinPlayerName, joinServer, getValidPort(joinPort))) switchSetupPage("pageConnecting"); } @@ -173,6 +177,8 @@ Engine.SwitchGuiPage("page_loading.xml", { "attribs": g_GameAttributes, + "serverIP": g_ServerIP, + "serverPort": g_ServerPort, "isNetworked" : true, "isRejoining" : g_IsRejoining, "playerAssignments": g_PlayerAssignments @@ -214,6 +220,7 @@ Engine.SwitchGuiPage("page_gamesetup.xml", { "type": g_GameType, "serverName": g_ServerName, + "serverIP": g_ServerIP, "serverPort": g_ServerPort }); return; // don't process any more messages - leave them for the game GUI loop Index: ./gui/session/session.js =================================================================== --- ./gui/session/session.js +++ ./gui/session/session.js @@ -233,6 +233,9 @@ return g_TechnologyData[technologyName]; } +var g_ServerIP; +var g_ServerPort; + function init(initData, hotloadData) { if (!g_Settings) @@ -241,6 +244,9 @@ Engine.SwitchGuiPage("page_pregame.xml"); return; } + + g_ServerIP = initData.serverIP; + g_ServerPort = initData.serverPort; if (initData) { @@ -1160,6 +1166,19 @@ }); } + + +function toggleReplace() +{ + let selected = Engine.GetGUIObjectByName("viewPlayer").selected; + if (selected <= 1) return; + let player = g_Players[Engine.GetGUIObjectByName("viewPlayer").selected -1 ]; + + Engine.EndGame(); + + Engine.SwitchGuiPage("page_gamesetup_mp.xml", { multiplayerGameType: "join" ,name: player.name, ip: g_ServerIP, port: g_ServerPort}); +} + function showTimeWarpMessageBox() { messageBox( Index: ./gui/session/top_panel/button_replace.xml =================================================================== --- ./gui/session/top_panel/button_replace.xml +++ ./gui/session/top_panel/button_replace.xml @@ -0,0 +1,17 @@ + + + Replace + + + + toggleReplace(); + + + +