mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2025-08-19 21:03:42 -07:00
Add "Delete Selected Save file" in Settings -> General Menu
* Add "Saves" Text Separator. * Renamed "Enable Delete All Saves" checkbox to "Enable Delete All/Selected Saves". * Add "Select Save File To Delete" Slider. * Add "Delete Selected Save File" Button. The User can use the Slider to select the file to delete then press the "Delete Selected Save File" Button to delete the selected file. It will Disable itself and reset SoH.
This commit is contained in:
parent
baaedd7ab0
commit
dff2f76965
3 changed files with 40 additions and 11 deletions
|
@ -47,6 +47,7 @@ DEFINE_HOOK(OnVanillaBehavior, (GIVanillaBehavior flag, bool* result, va_list or
|
|||
DEFINE_HOOK(OnSaveFile, (int32_t fileNum));
|
||||
DEFINE_HOOK(OnLoadFile, (int32_t fileNum));
|
||||
DEFINE_HOOK(OnDeleteFile, (int32_t fileNum));
|
||||
DEFINE_HOOK(OnDeleteSelectedFile, ());
|
||||
DEFINE_HOOK(OnDeleteAllFiles, ());
|
||||
|
||||
DEFINE_HOOK(OnDialogMessage, ());
|
||||
|
|
|
@ -127,6 +127,11 @@ SaveManager::SaveManager() {
|
|||
GameInteractor::Instance->RegisterGameHook<GameInteractor::OnDeleteAllFiles>(
|
||||
[this]() { this->DeleteAllZeldaFiles(); });
|
||||
|
||||
GameInteractor::Instance->RegisterGameHook<GameInteractor::OnDeleteSelectedFile>([this]() {
|
||||
int selectedFileNum = CVarGetInteger(CVAR_SETTING("DeleteSelectedSaveFileNum"), 0);
|
||||
this->DeleteZeldaFile(selectedFileNum - 1 );
|
||||
});
|
||||
|
||||
GameInteractor::Instance->RegisterGameHook<GameInteractor::OnExitGame>(
|
||||
[this](uint32_t fileNum) { ThreadPoolWait(); });
|
||||
|
||||
|
|
|
@ -187,28 +187,51 @@ void SohMenu::AddMenuSettings() {
|
|||
SDL_OpenURL(std::string("file:///" + std::filesystem::absolute(filesPath).string()).c_str());
|
||||
})
|
||||
.Options(ButtonOptions().Tooltip("Opens the folder that contains the save and mods folders, etc."));
|
||||
AddWidget(path, "Enable Delete All Saves", WIDGET_CVAR_CHECKBOX)
|
||||
.CVar(CVAR_SETTING("EnableDeleteAllSaveFilesButton"))
|
||||
|
||||
AddWidget(path, "Saves", WIDGET_SEPARATOR_TEXT);
|
||||
auto deleteSaveFilesDisabledFunc = [](WidgetInfo& info) {
|
||||
info.options->disabled = !CVarGetInteger(CVAR_SETTING("EnableDeleteAllSelectedSaveFiles"), 0);
|
||||
info.options->disabledTooltip =
|
||||
"This button is disabled because \"Enable Delete All/Selected Saves\" is turned off.";
|
||||
};
|
||||
AddWidget(path, "Enable Delete All/Selected Saves", WIDGET_CVAR_CHECKBOX)
|
||||
.CVar(CVAR_SETTING("EnableDeleteAllSelectedSaveFiles"))
|
||||
.RaceDisable(false)
|
||||
.Options(CheckboxOptions()
|
||||
.Tooltip("Turn on to enable the \"Delete All Saves\" button.Turns off automatically "
|
||||
"when \"Delete All Saves\" is pressed")
|
||||
.Tooltip("Turn on to enable the Save deletion options below.Turns off automatically "
|
||||
"when \"Delete All/Selected Saves\" button is pressed")
|
||||
.DefaultValue(false));
|
||||
AddWidget(path, "Delete All Saves", WIDGET_BUTTON)
|
||||
.RaceDisable(false)
|
||||
.PreFunc([](WidgetInfo& info) {
|
||||
info.options->disabled = !CVarGetInteger(CVAR_SETTING("EnableDeleteAllSaveFilesButton"), 0);
|
||||
info.options->disabledTooltip =
|
||||
"This button is disabled because \"Enable Delete All Saves\" is turned off.";
|
||||
})
|
||||
.PreFunc(deleteSaveFilesDisabledFunc)
|
||||
.Callback([](WidgetInfo& info) {
|
||||
GameInteractor::Instance->ExecuteHooks<GameInteractor::OnDeleteAllFiles>();
|
||||
CVarSetInteger(CVAR_SETTING("EnableDeleteAllSaveFilesButton"), 0);
|
||||
CVarSetInteger(CVAR_SETTING("EnableDeleteAllSelectedSaveFiles"), 0);
|
||||
std::reinterpret_pointer_cast<Ship::ConsoleWindow>(
|
||||
Ship::Context::GetInstance()->GetWindow()->GetGui()->GetGuiWindow("Console"))
|
||||
->Dispatch("reset");
|
||||
})
|
||||
.Options(ButtonOptions().Tooltip("Warning deletes all save files"));
|
||||
.Options(ButtonOptions().Tooltip("Warning deletes all save files"));
|
||||
AddWidget(path, "Select Save File To Delete: ", WIDGET_CVAR_SLIDER_INT)
|
||||
.CVar(CVAR_SETTING("DeleteSelectedSaveFileNum"))
|
||||
.PreFunc(deleteSaveFilesDisabledFunc)
|
||||
.Options(IntSliderOptions()
|
||||
.Min(1)
|
||||
.Max(3)
|
||||
.DefaultValue(1)
|
||||
.Format("File %d ")
|
||||
.Tooltip("Select which save file to delete.Then press \"Delete Selected Save File\" to delete."));
|
||||
AddWidget(path, "Delete Selected Save File", WIDGET_BUTTON)
|
||||
.RaceDisable(false)
|
||||
.PreFunc(deleteSaveFilesDisabledFunc)
|
||||
.Callback([](WidgetInfo& info) {
|
||||
GameInteractor::Instance->ExecuteHooks<GameInteractor::OnDeleteSelectedFile>();
|
||||
CVarSetInteger(CVAR_SETTING("EnableDeleteAllSelectedSaveFiles"), 0);
|
||||
std::reinterpret_pointer_cast<Ship::ConsoleWindow>(
|
||||
Ship::Context::GetInstance()->GetWindow()->GetGui()->GetGuiWindow("Console"))
|
||||
->Dispatch("reset");
|
||||
})
|
||||
.Options(ButtonOptions().Tooltip("Warning deletes selected save file"));
|
||||
|
||||
AddWidget(path, "Boot", WIDGET_SEPARATOR_TEXT);
|
||||
AddWidget(path, "Boot Sequence", WIDGET_CVAR_COMBOBOX)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue