diff --git a/binaries/data/mods/public/gui/replaymenu/replay_actions.js b/binaries/data/mods/public/gui/replaymenu/replay_actions.js
index b97da46518..26f5d9c276 100644
--- a/binaries/data/mods/public/gui/replaymenu/replay_actions.js
+++ b/binaries/data/mods/public/gui/replaymenu/replay_actions.js
@@ -79,6 +79,7 @@ function showReplaySummary()
// Open summary screen
summary.isReplay = true;
summary.gameResult = translate("Scores at the end of the game.");
+ summary.replayDirectory = g_ReplaysFiltered[selected].directory;
Engine.SwitchGuiPage("page_summary.xml", summary);
}
diff --git a/binaries/data/mods/public/gui/session/session.js b/binaries/data/mods/public/gui/session/session.js
index f5eda4b26e..f192856e72 100644
--- a/binaries/data/mods/public/gui/session/session.js
+++ b/binaries/data/mods/public/gui/session/session.js
@@ -472,6 +472,8 @@ function leaveGame(willRejoin)
if (!g_IsReplay)
Engine.SaveReplayMetadata(JSON.stringify(summary));
+ summary.replayDirectory = Engine.GetCurrentReplayDirectory();
+
Engine.EndGame();
if (g_IsController && Engine.HasXmppClient())
diff --git a/binaries/data/mods/public/gui/summary/summary.js b/binaries/data/mods/public/gui/summary/summary.js
index a02be0b949..bc01cdeac6 100644
--- a/binaries/data/mods/public/gui/summary/summary.js
+++ b/binaries/data/mods/public/gui/summary/summary.js
@@ -129,6 +129,26 @@ function updatePanelData(panelInfo)
teamCounterFn(panelInfo.counters);
}
+function startReplay()
+{
+ if (Engine.HasXmppClient())
+ Engine.StopXmppClient();
+
+ Engine.StartVisualReplay(g_GameData.replayDirectory);
+ Engine.SwitchGuiPage("page_loading.xml", {
+ "attribs": Engine.GetReplayAttributes(g_GameData.replayDirectory),
+ "isNetworked" : false,
+ "playerAssignments": {
+ "local" : {
+ "name": translate("You"),
+ "player": -1
+ }
+ },
+ "savedGUIData": "",
+ "isReplay" : true
+ });
+}
+
function init(data)
{
updateObjectPlayerPosition();
@@ -139,6 +159,7 @@ function init(data)
Engine.GetGUIObjectByName("timeElapsed").caption = sprintf(translate("Game time elapsed: %(time)s"), { "time": timeToString(data.timeElapsed) });
Engine.GetGUIObjectByName("summaryText").caption = data.gameResult;
Engine.GetGUIObjectByName("mapName").caption = sprintf(translate("%(mapName)s - %(mapType)s"), { "mapName": translate(data.mapSettings.Name), "mapType": mapSize ? mapSize.LongName : (mapType ? mapType.Title : "") });
+ Engine.GetGUIObjectByName("replayButton").hidden = g_GameData.isInGame || !g_GameData.replayDirectory;
// Panels
g_PlayerCount = data.playerStates.length - 1;
diff --git a/binaries/data/mods/public/gui/summary/summary.xml b/binaries/data/mods/public/gui/summary/summary.xml
index 4ef3b7bc9e..577a138f78 100644
--- a/binaries/data/mods/public/gui/summary/summary.xml
+++ b/binaries/data/mods/public/gui/summary/summary.xml
@@ -157,6 +157,27 @@
+
+