diff options
author | Niels Martin Hansen <nielsm@indvikleren.dk> | 2019-02-01 20:17:28 +0100 |
---|---|---|
committer | PeterN <peter@fuzzle.org> | 2019-02-01 21:49:36 +0000 |
commit | 0bca36340147c3d2411ad473624b28df3b670fbe (patch) | |
tree | b471952c9454e151ccd88b892f71e0ba5d7684e9 | |
parent | 5a5861f245a25ea4e2b3ad56640d1d8728324383 (diff) | |
download | openttd-0bca36340147c3d2411ad473624b28df3b670fbe.tar.xz |
Add: Warn before overwriting an existing save file
-rw-r--r-- | src/fios_gui.cpp | 24 | ||||
-rw-r--r-- | src/lang/english.txt | 2 |
2 files changed, 24 insertions, 2 deletions
diff --git a/src/fios_gui.cpp b/src/fios_gui.cpp index e149d07b4..63bb589d7 100644 --- a/src/fios_gui.cpp +++ b/src/fios_gui.cpp @@ -281,6 +281,18 @@ private: QueryString filter_editbox; ///< Filter editbox; SmallVector<bool, 32> fios_items_shown; ///< Map of the filtered out fios items + static void SaveGameConfirmationCallback(Window *w, bool confirmed) + { + /* File name has already been written to _file_to_saveload */ + if (confirmed) _switch_mode = SM_SAVE_GAME; + } + + static void SaveHeightmapConfirmationCallback(Window *w, bool confirmed) + { + /* File name has already been written to _file_to_saveload */ + if (confirmed) _switch_mode = SM_SAVE_HEIGHTMAP; + } + public: /** Generate a default save filename. */ @@ -731,11 +743,19 @@ public: } } else if (this->IsWidgetLowered(WID_SL_SAVE_GAME)) { // Save button clicked if (this->abstract_filetype == FT_SAVEGAME || this->abstract_filetype == FT_SCENARIO) { - _switch_mode = SM_SAVE_GAME; FiosMakeSavegameName(_file_to_saveload.name, this->filename_editbox.text.buf, lastof(_file_to_saveload.name)); + if (FioCheckFileExists(_file_to_saveload.name, Subdirectory::SAVE_DIR)) { + ShowQuery(STR_SAVELOAD_OVERWRITE_TITLE, STR_SAVELOAD_OVERWRITE_WARNING, this, SaveLoadWindow::SaveGameConfirmationCallback); + } else { + _switch_mode = SM_SAVE_GAME; + } } else { - _switch_mode = SM_SAVE_HEIGHTMAP; FiosMakeHeightmapName(_file_to_saveload.name, this->filename_editbox.text.buf, lastof(_file_to_saveload.name)); + if (FioCheckFileExists(_file_to_saveload.name, Subdirectory::SAVE_DIR)) { + ShowQuery(STR_SAVELOAD_OVERWRITE_TITLE, STR_SAVELOAD_OVERWRITE_WARNING, this, SaveLoadWindow::SaveHeightmapConfirmationCallback); + } else { + _switch_mode = SM_SAVE_HEIGHTMAP; + } } /* In the editor set up the vehicle engines correctly (date might have changed) */ diff --git a/src/lang/english.txt b/src/lang/english.txt index be465cf22..56cc0522c 100644 --- a/src/lang/english.txt +++ b/src/lang/english.txt @@ -2779,6 +2779,8 @@ STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}No infor STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING1} STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING} STR_SAVELOAD_FILTER_TITLE :{BLACK}Filter string: +STR_SAVELOAD_OVERWRITE_TITLE :{WHITE}Overwrite File +STR_SAVELOAD_OVERWRITE_WARNING :{YELLOW}Are you sure you want to overwrite the existing file? STR_SAVELOAD_OSKTITLE :{BLACK}Enter a name for the savegame |