diff options
Diffstat (limited to 'engines')
-rw-r--r-- | engines/sherlock/detection_tables.h | 3 | ||||
-rw-r--r-- | engines/sherlock/scalpel/scalpel.cpp | 23 | ||||
-rw-r--r-- | engines/sherlock/scalpel/scalpel.h | 10 | ||||
-rw-r--r-- | engines/sherlock/scalpel/scalpel_user_interface.cpp | 41 |
4 files changed, 60 insertions, 17 deletions
diff --git a/engines/sherlock/detection_tables.h b/engines/sherlock/detection_tables.h index e2b5a3dce9..031e89b5ec 100644 --- a/engines/sherlock/detection_tables.h +++ b/engines/sherlock/detection_tables.h @@ -102,8 +102,7 @@ static const SherlockGameDescription gameDescriptions[] = { Common::EN_ANY, Common::kPlatform3DO, ADGF_UNSTABLE, - GUIO6(GUIO_NOSPEECH, GAMEOPTION_ORIGINAL_SAVES, GAMEOPTION_FADE_STYLE, GAMEOPTION_HELP_STYLE, - GAMEOPTION_PORTRAITS_ON, GAMEOPTION_WINDOW_STYLE) + GUIO4(GAMEOPTION_FADE_STYLE, GAMEOPTION_HELP_STYLE,GAMEOPTION_PORTRAITS_ON, GAMEOPTION_WINDOW_STYLE) }, GType_SerratedScalpel, }, diff --git a/engines/sherlock/scalpel/scalpel.cpp b/engines/sherlock/scalpel/scalpel.cpp index e698ac6ae2..73ee33b9e1 100644 --- a/engines/sherlock/scalpel/scalpel.cpp +++ b/engines/sherlock/scalpel/scalpel.cpp @@ -21,6 +21,8 @@ */ #include "engines/util.h" +#include "gui/saveload.h" +#include "common/translation.h" #include "sherlock/scalpel/scalpel.h" #include "sherlock/scalpel/scalpel_fixed_text.h" #include "sherlock/scalpel/scalpel_map.h" @@ -1218,6 +1220,27 @@ void ScalpelEngine::flushBrumwellMirror() { _screen->slamArea(137, 18, 47, 56); } + +void ScalpelEngine::showScummVMSaveDialog() { + GUI::SaveLoadChooser *dialog = new GUI::SaveLoadChooser(_("Save game:"), _("Save"), true); + + int slot = dialog->runModalWithCurrentTarget(); + if (slot >= 0) { + Common::String desc = dialog->getResultString(); + + saveGameState(slot, desc); + } +} + +void ScalpelEngine::showScummVMRestoreDialog() { + GUI::SaveLoadChooser *dialog = new GUI::SaveLoadChooser(_("Restore game:"), _("Restore"), false); + + int slot = dialog->runModalWithCurrentTarget(); + if (slot >= 0) { + loadGameState(slot); + } +} + } // End of namespace Scalpel } // End of namespace Sherlock diff --git a/engines/sherlock/scalpel/scalpel.h b/engines/sherlock/scalpel/scalpel.h index 6ae8563e61..5c46b16973 100644 --- a/engines/sherlock/scalpel/scalpel.h +++ b/engines/sherlock/scalpel/scalpel.h @@ -128,6 +128,16 @@ public: * This clears the mirror in scene 12 (mansion drawing room) in case anything messed draw over it */ void flushBrumwellMirror(); + + /** + * Show the ScummVM restore savegame dialog + */ + void showScummVMSaveDialog(); + + /** + * Show the ScummVM restore savegame dialog + */ + void showScummVMRestoreDialog(); }; } // End of namespace Scalpel diff --git a/engines/sherlock/scalpel/scalpel_user_interface.cpp b/engines/sherlock/scalpel/scalpel_user_interface.cpp index f384af0324..aed7df8440 100644 --- a/engines/sherlock/scalpel/scalpel_user_interface.cpp +++ b/engines/sherlock/scalpel/scalpel_user_interface.cpp @@ -1273,6 +1273,7 @@ void ScalpelUserInterface::doLookControl() { } void ScalpelUserInterface::doMainControl() { + ScalpelEngine &vm = *(ScalpelEngine *)_vm; Events &events = *_vm->_events; ScalpelInventory &inv = *(ScalpelInventory *)_vm->_inventory; ScalpelSaveManager &saves = *(ScalpelSaveManager *)_vm->_saves; @@ -1382,24 +1383,34 @@ void ScalpelUserInterface::doMainControl() { journalControl(); break; case 'F': - pushButton(10); + if (IS_3DO) { + if (_temp == 10) { + pushButton(10); + vm.showScummVMRestoreDialog(); + } else if (_temp == 11) { + pushButton(11); + vm.showScummVMSaveDialog(); + } + } else { + pushButton(10); - // Create a thumbnail of the current screen before the files dialog is shown, in case - // the user saves the game - saves.createThumbnail(); + // Create a thumbnail of the current screen before the files dialog is shown, in case + // the user saves the game + saves.createThumbnail(); - _selector = _oldSelector = -1; + _selector = _oldSelector = -1; - if (_vm->_showOriginalSavesDialog) { - // Show the original dialog - _menuMode = FILES_MODE; - saves.drawInterface(); - _windowOpen = true; - } else { - // Show the ScummVM GMM instead - _vm->_canLoadSave = true; - _vm->openMainMenuDialog(); - _vm->_canLoadSave = false; + if (_vm->_showOriginalSavesDialog) { + // Show the original dialog + _menuMode = FILES_MODE; + saves.drawInterface(); + _windowOpen = true; + } else { + // Show the ScummVM GMM instead + _vm->_canLoadSave = true; + _vm->openMainMenuDialog(); + _vm->_canLoadSave = false; + } } break; case 'S': |