aboutsummaryrefslogtreecommitdiff
path: root/engines/tsage/scenes.cpp
diff options
context:
space:
mode:
authorPaul Gilbert2011-09-10 11:22:39 +1000
committerPaul Gilbert2011-09-10 11:22:39 +1000
commitb3773f7c378ccf1ff43091af16c068944f357479 (patch)
tree93538cb9e6eb57c649ba707a199ed619aefc3296 /engines/tsage/scenes.cpp
parentc75da8051cd81548d112201c347c422fa570ea0b (diff)
downloadscummvm-rg350-b3773f7c378ccf1ff43091af16c068944f357479.tar.gz
scummvm-rg350-b3773f7c378ccf1ff43091af16c068944f357479.tar.bz2
scummvm-rg350-b3773f7c378ccf1ff43091af16c068944f357479.zip
TSAGE: Cleaned up the savegame code, and enabled it for Blue Force
Diffstat (limited to 'engines/tsage/scenes.cpp')
-rw-r--r--engines/tsage/scenes.cpp49
1 files changed, 49 insertions, 0 deletions
diff --git a/engines/tsage/scenes.cpp b/engines/tsage/scenes.cpp
index e8b3189481..d68f5c2ee5 100644
--- a/engines/tsage/scenes.cpp
+++ b/engines/tsage/scenes.cpp
@@ -20,11 +20,15 @@
*
*/
+#include "common/config-manager.h"
+#include "common/translation.h"
+#include "gui/saveload.h"
#include "tsage/scenes.h"
#include "tsage/globals.h"
#include "tsage/ringworld/ringworld_logic.h"
#include "tsage/tsage.h"
#include "tsage/saveload.h"
+#include "tsage/staticres.h"
namespace TsAGE {
@@ -505,6 +509,51 @@ void Scene::setZoomPercents(int yStart, int minPercent, int yEnd, int maxPercent
/*--------------------------------------------------------------------------*/
+void Game::restartGame() {
+ if (MessageDialog::show(RESTART_MSG, CANCEL_BTN_STRING, RESTART_BTN_STRING) == 1)
+ _globals->_game->restart();
+}
+
+void Game::saveGame() {
+ if (!_vm->canSaveGameStateCurrently())
+ MessageDialog::show(SAVING_NOT_ALLOWED_MSG, OK_BTN_STRING);
+ else {
+ // Show the save dialog
+ handleSaveLoad(true, _globals->_sceneHandler->_saveGameSlot, _globals->_sceneHandler->_saveName);
+ }
+}
+
+void Game::restoreGame() {
+ if (!_vm->canLoadGameStateCurrently())
+ MessageDialog::show(RESTORING_NOT_ALLOWED_MSG, OK_BTN_STRING);
+ else {
+ // Show the load dialog
+ handleSaveLoad(false, _globals->_sceneHandler->_loadGameSlot, _globals->_sceneHandler->_saveName);
+ }
+}
+
+void Game::quitGame() {
+ if (MessageDialog::show(QUIT_CONFIRM_MSG, CANCEL_BTN_STRING, QUIT_BTN_STRING) == 1)
+ _vm->quitGame();
+}
+
+void Game::handleSaveLoad(bool saveFlag, int &saveSlot, Common::String &saveName) {
+ const EnginePlugin *plugin = 0;
+ EngineMan.findGame(_vm->getGameId(), &plugin);
+ GUI::SaveLoadChooser *dialog;
+ if (saveFlag)
+ dialog = new GUI::SaveLoadChooser(_("Save game:"), _("Save"));
+ else
+ dialog = new GUI::SaveLoadChooser(_("Load game:"), _("Load"));
+
+ dialog->setSaveMode(saveFlag);
+
+ saveSlot = dialog->runModalWithPluginAndTarget(plugin, ConfMan.getActiveDomainName());
+ saveName = dialog->getResultString();
+
+ delete dialog;
+}
+
void Game::execute() {
// Main game loop
bool activeFlag = false;