Changeset View
Changeset View
Standalone View
Standalone View
binaries/data/mods/public/gui/replaymenu/replay_actions.js
Show All 33 Lines | function createReplaySelectionData(selectedDirectory) | ||||
}; | }; | ||||
} | } | ||||
/** | /** | ||||
* Starts the selected visual replay, or shows an error message in case of incompatibility. | * Starts the selected visual replay, or shows an error message in case of incompatibility. | ||||
*/ | */ | ||||
function startReplay() | function startReplay() | ||||
{ | { | ||||
var selected = Engine.GetGUIObjectByName("replaySelection").selected; | let selected = Engine.GetGUIObjectByName("replaySelection").selected; | ||||
if (selected == -1) | if (!selected.length) | ||||
return; | return; | ||||
var replay = g_ReplaysFiltered[selected]; | let replay = g_ReplaysFiltered[selected[0]]; | ||||
if (isReplayCompatible(replay)) | if (isReplayCompatible(replay)) | ||||
reallyStartVisualReplay(replay.directory); | reallyStartVisualReplay(replay.directory); | ||||
else | else | ||||
displayReplayCompatibilityError(replay); | displayReplayCompatibilityError(replay); | ||||
} | } | ||||
/** | /** | ||||
* Attempts the visual replay, regardless of the compatibility. | * Attempts the visual replay, regardless of the compatibility. | ||||
▲ Show 20 Lines • Show All 45 Lines • ▼ Show 20 Lines | function displayReplayCompatibilityError(replay) | ||||
messageBox(500, 200, errMsg, translate("Incompatible replay")); | messageBox(500, 200, errMsg, translate("Incompatible replay")); | ||||
} | } | ||||
/** | /** | ||||
* Opens the summary screen of the given replay, if its data was found in that directory. | * Opens the summary screen of the given replay, if its data was found in that directory. | ||||
*/ | */ | ||||
function showReplaySummary() | function showReplaySummary() | ||||
{ | { | ||||
var selected = Engine.GetGUIObjectByName("replaySelection").selected; | let selected = Engine.GetGUIObjectByName("replaySelection").selected; | ||||
if (selected == -1) | if (!selected.length) | ||||
return; | return; | ||||
// Load summary screen data from the selected replay directory | // Load summary screen data from the selected replay directory | ||||
let simData = Engine.GetReplayMetadata(g_ReplaysFiltered[selected].directory); | let simData = Engine.GetReplayMetadata(g_ReplaysFiltered[selected[0]].directory); | ||||
if (!simData) | if (!simData) | ||||
{ | { | ||||
messageBox(500, 200, translate("No summary data available."), translate("Error")); | messageBox(500, 200, translate("No summary data available."), translate("Error")); | ||||
return; | return; | ||||
} | } | ||||
Engine.SwitchGuiPage("page_summary.xml", { | Engine.SwitchGuiPage("page_summary.xml", { | ||||
"sim": simData, | "sim": simData, | ||||
"gui": { | "gui": { | ||||
"dialog": false, | "dialog": false, | ||||
"isReplay": true, | "isReplay": true, | ||||
"replayDirectory": g_ReplaysFiltered[selected].directory, | "replayDirectory": g_ReplaysFiltered[selected[0]].directory, | ||||
"replaySelectionData": createReplaySelectionData(g_ReplaysFiltered[selected].directory) | "replaySelectionData": createReplaySelectionData(g_ReplaysFiltered[selected].directory) | ||||
}, | }, | ||||
"selectedData": g_SummarySelectedData | "selectedData": g_SummarySelectedData | ||||
}); | }); | ||||
} | } | ||||
function reloadCache() | function reloadCache() | ||||
{ | { | ||||
let selected = Engine.GetGUIObjectByName("replaySelection").selected; | let selected = Engine.GetGUIObjectByName("replaySelection").selected; | ||||
loadReplays(selected > -1 ? createReplaySelectionData(g_ReplaysFiltered[selected].directory) : "", true); | loadReplays(selected.length ? createReplaySelectionData(g_ReplaysFiltered[selected[0]].directory) : "", true); | ||||
} | } | ||||
/** | /** | ||||
* Callback. | * Callback. | ||||
*/ | */ | ||||
function deleteReplayButtonPressed() | function deleteReplayButtonPressed() | ||||
{ | { | ||||
if (!Engine.GetGUIObjectByName("deleteReplayButton").enabled) | if (!Engine.GetGUIObjectByName("deleteReplayButton").enabled) | ||||
return; | return; | ||||
if (Engine.HotkeyIsPressed("session.savedgames.noconfirmation")) | if (Engine.HotkeyIsPressed("session.savedgames.noconfirmation")) | ||||
deleteReplayWithoutConfirmation(); | deleteReplayWithoutConfirmation(); | ||||
else | else | ||||
deleteReplay(); | deleteReplay(); | ||||
} | } | ||||
/** | /** | ||||
* Shows a confirmation dialog and deletes the selected replay from the disk in case. | * Shows a confirmation dialog and deletes the selected replay from the disk in case. | ||||
*/ | */ | ||||
function deleteReplay() | function deleteReplay() | ||||
{ | { | ||||
// Get selected replay | // Get selected replay | ||||
var selected = Engine.GetGUIObjectByName("replaySelection").selected; | let replaySelection = Engine.GetGUIObjectByName("replaySelection"); | ||||
Stan: Let | |||||
if (selected == -1) | if (!replaySelection.selected.length) | ||||
return; | return; | ||||
let directories = []; | |||||
var replay = g_ReplaysFiltered[selected]; | let directoryNames = []; | ||||
for (let selected of replaySelection.selected) | |||||
{ | |||||
directories.push(g_ReplaysFiltered[selected].directory); | |||||
directoryNames.push(Engine.GetReplayDirectoryName(g_ReplaysFiltered[selected].directory)); | |||||
} | |||||
messageBox( | messageBox( | ||||
500, 200, | 500, 200, | ||||
translate("Are you sure you want to delete this replay permanently?") + "\n" + | translatePlural("Are you sure you want to delete this replay permanently?", | ||||
Not Done Inline ActionsFor of Stan: For of | |||||
escapeText(Engine.GetReplayDirectoryName(replay.directory)), | "Are you sure you want to delete these replays permanently?", | ||||
translate("Delete replay"), | directories.length | ||||
) + "\n" + | |||||
escapeText(directoryNames.join("\n")), | |||||
translatePlural("Delete replay", "Delete replays", directories.length), | |||||
[translate("No"), translate("Yes")], | [translate("No"), translate("Yes")], | ||||
[null, function() { reallyDeleteReplay(replay.directory); }] | [null, function() { reallyDeleteReplay(directories); }] | ||||
); | ); | ||||
} | } | ||||
/** | /** | ||||
* Attempts to delete the selected replay from the disk. | * Attempts to delete the selected replay from the disk. | ||||
*/ | */ | ||||
function deleteReplayWithoutConfirmation() | function deleteReplayWithoutConfirmation() | ||||
{ | { | ||||
var selected = Engine.GetGUIObjectByName("replaySelection").selected; | let replaySelection = Engine.GetGUIObjectByName("replaySelection"); | ||||
if (selected > -1) | if (!replaySelection.selected.length) | ||||
Not Done Inline ActionsLet Stan: Let | |||||
reallyDeleteReplay(g_ReplaysFiltered[selected].directory); | return; | ||||
let directories = []; | |||||
for (selected of replaySelection.selected) | |||||
directories.push(g_ReplaysFiltered[selected].directory); | |||||
reallyDeleteReplay(directories); | |||||
} | } | ||||
Not Done Inline Actionsremove braces Stan: remove braces | |||||
/** | /** | ||||
* Attempts to delete the given replay directory from the disk. | * Attempts to delete the given replay directory from the disk. | ||||
* | * | ||||
* @param replayDirectory {string} | * @param replayDirectories {string[]} | ||||
*/ | */ | ||||
function reallyDeleteReplay(replayDirectory) | function reallyDeleteReplay(replayDirectories) | ||||
{ | { | ||||
var replaySelection = Engine.GetGUIObjectByName("replaySelection"); | let replaySelection = Engine.GetGUIObjectByName("replaySelection"); | ||||
var selectedIndex = replaySelection.selected; | |||||
for (let replayDirectory of replayDirectories) | |||||
if (!Engine.DeleteReplay(replayDirectory)) | if (!Engine.DeleteReplay(replayDirectory)) | ||||
Not Done Inline Actionsremove braces. Stan: remove braces. | |||||
error("Could not delete replay!"); | error("Could not delete replay!"); | ||||
// Refresh replay list | // Refresh replay list | ||||
init(); | init(); | ||||
replaySelection.selected = Math.min(selectedIndex, g_ReplaysFiltered.length - 1); | replaySelection.selected = Math.min(selectedIndex, g_ReplaysFiltered.length - 1); | ||||
Not Done Inline ActionsRefers to selectedIndex, but that was deleted. elexis: Refers to `selectedIndex`, but that was deleted. | |||||
} | } |
Wildfire Games · Phabricator
Let