From 4ebf89e844e04213d42c685a51584c72557d7d91 Mon Sep 17 00:00:00 2001 From: Dav999-v Date: Wed, 4 Nov 2020 03:45:33 +0100 Subject: [PATCH] Add error message if quicksave fails --- desktop_version/src/Game.cpp | 26 ++++++++++++-------------- desktop_version/src/Game.h | 5 +++-- desktop_version/src/Input.cpp | 13 +++++++++---- desktop_version/src/Render.cpp | 4 ++++ desktop_version/src/Script.cpp | 1 + 5 files changed, 29 insertions(+), 20 deletions(-) diff --git a/desktop_version/src/Game.cpp b/desktop_version/src/Game.cpp index 82b27995..33ee892c 100644 --- a/desktop_version/src/Game.cpp +++ b/desktop_version/src/Game.cpp @@ -225,6 +225,7 @@ void Game::init(void) minutes = 0; hours = 0; gamesaved = false; + gamesavefailed = false; savetime = "00:00"; savearea = "nowhere"; savetrinkets = 0; @@ -5724,12 +5725,12 @@ bool Game::savetele() } -void Game::savequick() +bool Game::savequick() { if (map.custommode || inspecial()) { //Don't trash save data! - return; + return false; } tinyxml2::XMLDocument doc; @@ -5740,16 +5741,14 @@ void Game::savequick() } quicksummary = writemaingamesave(doc); - if(FILESYSTEM_saveTiXml2Document("saves/qsave.vvv", doc)) - { - printf("Game saved\n"); - } - else + if(!FILESYSTEM_saveTiXml2Document("saves/qsave.vvv", doc)) { printf("Could Not Save game!\n"); printf("Failed: %s%s\n", saveFilePath.c_str(), "qsave.vvv"); + return false; } - + printf("Game saved\n"); + return true; } // Returns summary of save @@ -5869,7 +5868,7 @@ std::string Game::writemaingamesave(tinyxml2::XMLDocument& doc) } -void Game::customsavequick(std::string savfile) +bool Game::customsavequick(std::string savfile) { const std::string levelfile = savfile.substr(7); @@ -5998,15 +5997,14 @@ void Game::customsavequick(std::string savfile) customquicksummary = summary; - if(FILESYSTEM_saveTiXml2Document(("saves/"+levelfile+".vvv").c_str(), doc)) - { - printf("Game saved\n"); - } - else + if(!FILESYSTEM_saveTiXml2Document(("saves/"+levelfile+".vvv").c_str(), doc)) { printf("Could Not Save game!\n"); printf("Failed: %s%s%s\n", saveFilePath.c_str(), levelfile.c_str(), ".vvv"); + return false; } + printf("Game saved\n"); + return true; } diff --git a/desktop_version/src/Game.h b/desktop_version/src/Game.h index 6597a016..d73e6367 100644 --- a/desktop_version/src/Game.h +++ b/desktop_version/src/Game.h @@ -97,8 +97,8 @@ public: void resetgameclock(); - void customsavequick(std::string savfile); - void savequick(); + bool customsavequick(std::string savfile); + bool savequick(); void gameclock(); @@ -204,6 +204,7 @@ public: int frames, seconds, minutes, hours; bool gamesaved; + bool gamesavefailed; std::string savetime; std::string savearea; int savetrinkets; diff --git a/desktop_version/src/Input.cpp b/desktop_version/src/Input.cpp index 6e29cb4c..402fa5cc 100644 --- a/desktop_version/src/Input.cpp +++ b/desktop_version/src/Input.cpp @@ -2010,6 +2010,7 @@ void gameinput() //Quit menu, same conditions as in game menu game.gamestate = MAPMODE; game.gamesaved = false; + game.gamesavefailed = false; graphics.resumegamemode = false; game.menupage = 20; // The Map Page BlitSurfaceStandard(graphics.menubuffer,NULL,graphics.backBuffer, NULL); @@ -2040,6 +2041,7 @@ void gameinput() map.cursordelay = 0; map.cursorstate = 0; game.gamesaved = false; + game.gamesavefailed = false; graphics.resumegamemode = false; game.menupage = 0; // The Map Page BlitSurfaceStandard(graphics.menubuffer,NULL,graphics.backBuffer, NULL); @@ -2058,6 +2060,7 @@ void gameinput() //Quit menu, same conditions as in game menu game.gamestate = MAPMODE; game.gamesaved = false; + game.gamesavefailed = false; graphics.resumegamemode = false; game.menupage = 30; // Pause screen @@ -2291,12 +2294,11 @@ void mapmenuactionpress() } break; case 3: - if (!game.gamesaved && !game.inspecial()) + if (!game.gamesaved && !game.gamesavefailed && !game.inspecial()) { game.flashlight = 5; game.screenshake = 10; music.playef(18); - game.gamesaved = true; game.savetime = game.timestring(); game.savearea = map.currentarea(map.area(game.roomx, game.roomy)); @@ -2304,16 +2306,19 @@ void mapmenuactionpress() if (game.roomx >= 102 && game.roomx <= 104 && game.roomy >= 110 && game.roomy <= 111) game.savearea = "The Ship"; + bool success; #if !defined(NO_CUSTOM_LEVELS) if(map.custommodeforreal) { - game.customsavequick(ed.ListOfMetaData[game.playcustomlevel].filename); + success = game.customsavequick(ed.ListOfMetaData[game.playcustomlevel].filename); } else #endif { - game.savequick(); + success = game.savequick(); } + game.gamesaved = success; + game.gamesavefailed = !success; } break; diff --git a/desktop_version/src/Render.cpp b/desktop_version/src/Render.cpp index 8ab45775..39f035bc 100644 --- a/desktop_version/src/Render.cpp +++ b/desktop_version/src/Render.cpp @@ -2215,6 +2215,10 @@ void maprender() { graphics.Print(0, 115, "Cannot Save in Secret Lab", 146, 146, 180, true); } + else if (game.gamesavefailed) + { + graphics.Print(0, 115, "ERROR: Could not save game!", 146, 146, 180, true); + } else if (map.custommode) { if (game.gamesaved) diff --git a/desktop_version/src/Script.cpp b/desktop_version/src/Script.cpp index 9fda1a2b..f85d3d93 100644 --- a/desktop_version/src/Script.cpp +++ b/desktop_version/src/Script.cpp @@ -3614,6 +3614,7 @@ void scriptclass::hardreset() game.minutes = 0; game.hours = 0; game.gamesaved = false; + game.gamesavefailed = false; game.savetime = "00:00"; game.savearea = "nowhere"; game.savetrinkets = 0;