SHERLOCK: 3DO: Hook up Save/Load buttons to ScummVM's dialogs

This commit is contained in:
Paul Gilbert 2015-09-06 22:18:47 -04:00
parent 8b3dd18aca
commit 1f5afe5c84
4 changed files with 62 additions and 19 deletions

View file

@ -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,
},

View file

@ -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

View file

@ -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

View file

@ -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);
// 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;
if (_vm->_showOriginalSavesDialog) {
// Show the original dialog
_menuMode = FILES_MODE;
saves.drawInterface();
_windowOpen = true;
if (IS_3DO) {
if (_temp == 10) {
pushButton(10);
vm.showScummVMRestoreDialog();
} else if (_temp == 11) {
pushButton(11);
vm.showScummVMSaveDialog();
}
} else {
// Show the ScummVM GMM instead
_vm->_canLoadSave = true;
_vm->openMainMenuDialog();
_vm->_canLoadSave = false;
pushButton(10);
// 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;
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':