mirror of
https://gitea.wildfiregames.com/0ad/0ad
synced 2026-06-16 05:13:58 -07:00
Up to now `eslint-plugin-brace-rules` was used to enforce a common brace style for JavaScript code. This plugin was however updated the last time over 9 years ago and will be incompatible with ESLint v10, as that [removes `context.getSourceCode()`][1], the plugin relies on. To keep the eslint config working with ESLint v10, this replaces `eslint-plugin-brace-rules` with the [`@stylistic/brace-style`][2] rule from `@stylistic/eslint-plugin`, a package we already use. While `@stylistic/brace-style` doesn't offer an option to format braces in exactly the same way as before, the "allman" style seems to be the one closest to the existing code. [1]: https://eslint.org/blog/2025/11/eslint-v10.0.0-alpha.0-released/#removed-deprecated-rule-context-members [2]: https://eslint.style/rules/brace-style
66 lines
1.7 KiB
JavaScript
66 lines
1.7 KiB
JavaScript
/**
|
|
* This class manages styling and performance of the savegame delete button.
|
|
*
|
|
* If a savegame was deleted, class instances that subscribed via
|
|
* registerSavegameListChangeHandler will be informed that the list of
|
|
* available savegames have changed.
|
|
*/
|
|
class SavegameDeleter
|
|
{
|
|
constructor()
|
|
{
|
|
this.savegameListChangeHandlers = [];
|
|
|
|
this.deleteGameButton = Engine.GetGUIObjectByName("deleteGameButton");
|
|
this.deleteGameButton.tooltip = this.deleteButtonTooltip();
|
|
}
|
|
|
|
registerSavegameListChangeHandler(savegameListChangeHandler)
|
|
{
|
|
this.savegameListChangeHandlers.push(savegameListChangeHandler);
|
|
}
|
|
|
|
onSelectionChange(gameID, metadata, label)
|
|
{
|
|
this.deleteGameButton.enabled = !!metadata;
|
|
this.deleteGameButton.onPress = () =>
|
|
{
|
|
this.deleteGame(gameID, label);
|
|
};
|
|
}
|
|
|
|
deleteButtonTooltip()
|
|
{
|
|
let tooltip = colorizeHotkey(
|
|
translate("Delete the selected savegame using %(hotkey)s."),
|
|
"session.savedgames.delete");
|
|
|
|
if (tooltip)
|
|
tooltip += colorizeHotkey(
|
|
"\n" + translate("Hold %(hotkey)s to skip the confirmation dialog while deleting."),
|
|
"session.savedgames.noconfirmation");
|
|
|
|
return tooltip;
|
|
}
|
|
|
|
async deleteGame(gameID, label)
|
|
{
|
|
if (!Engine.HotkeyIsPressed("session.savedgames.noconfirmation"))
|
|
{
|
|
const buttonIndex = await messageBox(
|
|
500, 200,
|
|
sprintf(translate("\"%(label)s\""), { "label": label }) + "\n" +
|
|
translate("Saved game will be permanently deleted, are you sure?"),
|
|
translate("DELETE"),
|
|
[translate("No"), translate("Yes")]);
|
|
if (buttonIndex === 0)
|
|
return;
|
|
}
|
|
|
|
if (!Engine.DeleteSavedGame(gameID))
|
|
error("Could not delete saved game: " + gameID);
|
|
|
|
for (const handler of this.savegameListChangeHandlers)
|
|
handler.onSavegameListChange();
|
|
}
|
|
}
|