diff --git a/binaries/data/mods/public/gui/common/functions_global_object.js b/binaries/data/mods/public/gui/common/functions_global_object.js index 88b7e08267..a28a8d1ada 100644 --- a/binaries/data/mods/public/gui/common/functions_global_object.js +++ b/binaries/data/mods/public/gui/common/functions_global_object.js @@ -165,3 +165,16 @@ function displayGamestateNotifications() setTimeout(displayGamestateNotifications, 1000); } + +/** + * Also called from the C++ side when ending the game. + */ +function getReplayMetadata() +{ + let extendedSimState = Engine.GuiInterfaceCall("GetExtendedSimulationState"); + return { + "timeElapsed" : extendedSimState.timeElapsed, + "playerStates": extendedSimState.players, + "mapSettings": Engine.GetInitAttributes().settings + }; +} diff --git a/binaries/data/mods/public/gui/session/session.js b/binaries/data/mods/public/gui/session/session.js index 35af7a752e..c34dfa41c1 100644 --- a/binaries/data/mods/public/gui/session/session.js +++ b/binaries/data/mods/public/gui/session/session.js @@ -517,23 +517,12 @@ function resignGame(leaveGameAfterResign) */ function leaveGame(willRejoin) { - let extendedSimState = Engine.GuiInterfaceCall("GetExtendedSimulationState"); - let simData = { - "timeElapsed" : extendedSimState.timeElapsed, - "playerStates": extendedSimState.players, - "mapSettings": g_GameAttributes.settings - }; - - if (!g_IsReplay) - Engine.SaveReplayMetadata(JSON.stringify(simData)); - - if (!willRejoin && - simData.playerStates[Engine.GetPlayerID()] && - simData.playerStates[Engine.GetPlayerID()].state == "active") + if (!willRejoin && !g_IsObserver) resignGame(true); // Before ending the game let replayDirectory = Engine.GetCurrentReplayDirectory(); + let simData = getReplayMetadata(); Engine.EndGame(); diff --git a/binaries/data/mods/public/gui/structree/structree.xml b/binaries/data/mods/public/gui/structree/structree.xml index 4165e1ca52..3305df4ca2 100644 --- a/binaries/data/mods/public/gui/structree/structree.xml +++ b/binaries/data/mods/public/gui/structree/structree.xml @@ -2,6 +2,7 @@