diff options
author | Norbert Lange | 2009-08-24 17:51:47 +0000 |
---|---|---|
committer | Norbert Lange | 2009-08-24 17:51:47 +0000 |
commit | 917d4b78b36d6c5a5c25a03e7ee6a1c1b6a85fd5 (patch) | |
tree | e652563203a00f8acecfaafbf93c64dbfbd13f25 /engines/cruise/menu.cpp | |
parent | 5f87d5090cfcb34cda3c1f5d430e0865344d7366 (diff) | |
parent | dd7868acc2512c9761d892e67a4837f4dc38bdc0 (diff) | |
download | scummvm-rg350-917d4b78b36d6c5a5c25a03e7ee6a1c1b6a85fd5.tar.gz scummvm-rg350-917d4b78b36d6c5a5c25a03e7ee6a1c1b6a85fd5.tar.bz2 scummvm-rg350-917d4b78b36d6c5a5c25a03e7ee6a1c1b6a85fd5.zip |
Merge with trunk
svn-id: r43701
Diffstat (limited to 'engines/cruise/menu.cpp')
-rw-r--r-- | engines/cruise/menu.cpp | 42 |
1 files changed, 39 insertions, 3 deletions
diff --git a/engines/cruise/menu.cpp b/engines/cruise/menu.cpp index 7e454e78f8..c620a39b7d 100644 --- a/engines/cruise/menu.cpp +++ b/engines/cruise/menu.cpp @@ -27,8 +27,13 @@ #include "cruise/cruise_main.h" #include "cruise/staticres.h" +#include "engines/metaengine.h" +#include "gui/saveload.h" + namespace Cruise { +extern int currentMouseButton; + menuStruct *menuTable[8]; menuStruct *createMenu(int X, int Y, const char *menuName) { @@ -202,6 +207,38 @@ int processMenu(menuStruct *pMenu) { return -1; } +static void handleSaveLoad(bool saveFlag) { + 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); + int slot = dialog->runModal(plugin, ConfMan.getActiveDomainName()); + + if (slot >= 0) { + if (!saveFlag) + _vm->loadGameState(slot); + else { + Common::String result(dialog->getResultString()); + if (result.empty()) { + // If the user was lazy and entered no save name, come up with a default name. + char buf[20]; + snprintf(buf, 20, "Save %d", slot + 1); + + _vm->saveGameState(slot, buf); + } else { + _vm->saveGameState(slot, result.c_str()); + } + } + } + + delete dialog; +} + int playerMenu(int menuX, int menuY) { int retourMenu; //int restartGame = 0; @@ -251,15 +288,14 @@ int playerMenu(int menuX, int menuY) { freeMenu(menuTable[0]); menuTable[0] = NULL; + currentMouseButton = 0; switch (retourMenu) { case 3: // select save drive break; case 4: // save - saveSavegameData(0, "Default Save"); - break; case 5: // load - loadSavegameData(0); + handleSaveLoad(retourMenu == 4); break; case 6: // restart _vm->sound().fadeOutMusic(); |