From 8680f79d48960cf01e0fa6881bfbd413291fec50 Mon Sep 17 00:00:00 2001 From: elexis Date: Wed, 24 May 2017 13:53:00 +0000 Subject: [PATCH] Display the filename of the selected replay in the replay menu to ease sharing of replays. Differential Revision: https://code.wildfiregames.com/D495 Reviewed By: Sandarac This was SVN commit r19650. --- binaries/data/mods/public/gui/page_replaymenu.xml | 1 + binaries/data/mods/public/gui/replaymenu/replay_menu.js | 2 ++ binaries/data/mods/public/gui/replaymenu/replay_menu.xml | 5 ++++- binaries/data/mods/public/gui/replaymenu/sprites.xml | 9 +++++++++ source/ps/scripting/JSInterface_VisualReplay.cpp | 8 +++++++- source/ps/scripting/JSInterface_VisualReplay.h | 3 ++- 6 files changed, 25 insertions(+), 3 deletions(-) create mode 100644 binaries/data/mods/public/gui/replaymenu/sprites.xml diff --git a/binaries/data/mods/public/gui/page_replaymenu.xml b/binaries/data/mods/public/gui/page_replaymenu.xml index 0510474ffb..2b699527f9 100644 --- a/binaries/data/mods/public/gui/page_replaymenu.xml +++ b/binaries/data/mods/public/gui/page_replaymenu.xml @@ -8,5 +8,6 @@ common/sprites.xml common/styles.xml + replaymenu/sprites.xml replaymenu/replay_menu.xml diff --git a/binaries/data/mods/public/gui/replaymenu/replay_menu.js b/binaries/data/mods/public/gui/replaymenu/replay_menu.js index e05ef4df94..80266c8919 100644 --- a/binaries/data/mods/public/gui/replaymenu/replay_menu.js +++ b/binaries/data/mods/public/gui/replaymenu/replay_menu.js @@ -254,6 +254,7 @@ function displayReplayDetails() Engine.GetGUIObjectByName("replayInfoEmpty").hidden = replaySelected; Engine.GetGUIObjectByName("startReplayButton").enabled = replaySelected; Engine.GetGUIObjectByName("deleteReplayButton").enabled = replaySelected; + Engine.GetGUIObjectByName("replayFilename").hidden = !replaySelected; Engine.GetGUIObjectByName("summaryButton").hidden = true; if (!replaySelected) @@ -267,6 +268,7 @@ function displayReplayDetails() Engine.GetGUIObjectByName("sgVictory").caption = translateVictoryCondition(replay.attribs.settings.GameType); Engine.GetGUIObjectByName("sgNbPlayers").caption = sprintf(translate("Players: %(numberOfPlayers)s"), { "numberOfPlayers": replay.attribs.settings.PlayerData.length }); + Engine.GetGUIObjectByName("replayFilename").caption = escapeText(Engine.GetReplayDirectoryName(replay.directory)); let metadata = Engine.GetReplayMetadata(replay.directory); Engine.GetGUIObjectByName("sgPlayersNames").caption = diff --git a/binaries/data/mods/public/gui/replaymenu/replay_menu.xml b/binaries/data/mods/public/gui/replaymenu/replay_menu.xml index 19242509ca..cc7b904143 100644 --- a/binaries/data/mods/public/gui/replaymenu/replay_menu.xml +++ b/binaries/data/mods/public/gui/replaymenu/replay_menu.xml @@ -65,7 +65,7 @@ + + + diff --git a/binaries/data/mods/public/gui/replaymenu/sprites.xml b/binaries/data/mods/public/gui/replaymenu/sprites.xml new file mode 100644 index 0000000000..2b4954eab1 --- /dev/null +++ b/binaries/data/mods/public/gui/replaymenu/sprites.xml @@ -0,0 +1,9 @@ + + + + + + diff --git a/source/ps/scripting/JSInterface_VisualReplay.cpp b/source/ps/scripting/JSInterface_VisualReplay.cpp index dde841d08a..51a9444915 100644 --- a/source/ps/scripting/JSInterface_VisualReplay.cpp +++ b/source/ps/scripting/JSInterface_VisualReplay.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2016 Wildfire Games. +/* Copyright (C) 2017 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -53,6 +53,11 @@ JS::Value JSI_VisualReplay::GetReplayMetadata(ScriptInterface::CxPrivate* pCxPri return VisualReplay::GetReplayMetadata(pCxPrivate, directoryName); } +CStrW JSI_VisualReplay::GetReplayDirectoryName(ScriptInterface::CxPrivate* UNUSED(pCxPrivate), const CStrW& directoryName) +{ + return OsPath(VisualReplay::GetDirectoryName() / directoryName).string(); +} + void JSI_VisualReplay::RegisterScriptFunctions(ScriptInterface& scriptInterface) { scriptInterface.RegisterFunction("GetReplays"); @@ -61,4 +66,5 @@ void JSI_VisualReplay::RegisterScriptFunctions(ScriptInterface& scriptInterface) scriptInterface.RegisterFunction("GetReplayAttributes"); scriptInterface.RegisterFunction("GetReplayMetadata"); scriptInterface.RegisterFunction("HasReplayMetadata"); + scriptInterface.RegisterFunction("GetReplayDirectoryName"); } diff --git a/source/ps/scripting/JSInterface_VisualReplay.h b/source/ps/scripting/JSInterface_VisualReplay.h index 2c97a82ef5..9481cb0456 100644 --- a/source/ps/scripting/JSInterface_VisualReplay.h +++ b/source/ps/scripting/JSInterface_VisualReplay.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2016 Wildfire Games. +/* Copyright (C) 2017 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -30,6 +30,7 @@ namespace JSI_VisualReplay bool HasReplayMetadata(ScriptInterface::CxPrivate* pCxPrivate, const CStrW& directoryName); JS::Value GetReplayMetadata(ScriptInterface::CxPrivate* pCxPrivate, const CStrW& directoryName); void RegisterScriptFunctions(ScriptInterface& scriptInterface); + CStrW GetReplayDirectoryName(ScriptInterface::CxPrivate* pCxPrivate, const CStrW& directoryName); } #endif