diff options
author | Bastien Bouclet | 2016-07-04 20:40:44 +0200 |
---|---|---|
committer | Bastien Bouclet | 2016-07-04 20:47:16 +0200 |
commit | 0440ff64f15f00597d82841fd1ef6febc905302e (patch) | |
tree | 82e48cd03fef0c208bf02e8b6ade03e6e7a4df0e | |
parent | d35d8efc5041813fd5fdd1fc55025c7835ab358e (diff) | |
download | scummvm-rg350-0440ff64f15f00597d82841fd1ef6febc905302e.tar.gz scummvm-rg350-0440ff64f15f00597d82841fd1ef6febc905302e.tar.bz2 scummvm-rg350-0440ff64f15f00597d82841fd1ef6febc905302e.zip |
MOHAWK: Have the Myst and Riven options dialog share a base class
Now the Riven options dialog has the same features as the Myst one:
- Screen centering
- Save / Load / Quit buttons
-rw-r--r-- | engines/mohawk/dialogs.cpp | 156 | ||||
-rw-r--r-- | engines/mohawk/dialogs.h | 56 |
2 files changed, 128 insertions, 84 deletions
diff --git a/engines/mohawk/dialogs.cpp b/engines/mohawk/dialogs.cpp index 4ec18542ac..8c11e3a5e9 100644 --- a/engines/mohawk/dialogs.cpp +++ b/engines/mohawk/dialogs.cpp @@ -25,7 +25,6 @@ #include "gui/gui-manager.h" #include "gui/saveload.h" -#include "gui/ThemeEngine.h" #include "gui/widget.h" #include "common/system.h" #include "common/translation.h" @@ -89,27 +88,11 @@ enum { kQuitCmd = 'QUIT' }; -#ifdef ENABLE_MYST - -MystOptionsDialog::MystOptionsDialog(MohawkEngine_Myst* vm) : GUI::Dialog(0, 0, 360, 200), _vm(vm) { - // I18N: Option for fast scene switching - _zipModeCheckbox = new GUI::CheckboxWidget(this, 15, 10, 220, 15, _("~Z~ip Mode Activated"), 0, kZipCmd); - _transitionsCheckbox = new GUI::CheckboxWidget(this, 15, 30, 220, 15, _("~T~ransitions Enabled"), 0, kTransCmd); - // I18N: Drop book page - _dropPageButton = new GUI::ButtonWidget(this, 15, 60, 100, 25, _("~D~rop Page"), 0, kDropCmd); - - // Myst ME only has maps - if (_vm->getFeatures() & GF_ME) - _showMapButton = new GUI::ButtonWidget(this, 15, 95, 100, 25, _("Show ~M~ap"), 0, kMapCmd); - else - _showMapButton = 0; - - // Myst demo only has a menu - if (_vm->getFeatures() & GF_DEMO) - _returnToMenuButton = new GUI::ButtonWidget(this, 15, 95, 100, 25, _("Main Men~u~"), 0, kMenuCmd); - else - _returnToMenuButton = 0; +#if defined(ENABLE_MYST) || defined(ENABLE_RIVEN) +MohawkOptionsDialog::MohawkOptionsDialog(MohawkEngine *vm) : + GUI::Dialog(0, 0, 360, 200), + _vm(vm) { _loadButton = new GUI::ButtonWidget(this, 245, 25, 100, 25, _("~L~oad"), 0, kLoadCmd); _saveButton = new GUI::ButtonWidget(this, 245, 60, 100, 25, _("~S~ave"), 0, kSaveCmd); new GUI::ButtonWidget(this, 245, 95, 100, 25, _("~Q~uit"), 0, kQuitCmd); @@ -121,37 +104,20 @@ MystOptionsDialog::MystOptionsDialog(MohawkEngine_Myst* vm) : GUI::Dialog(0, 0, _saveDialog = new GUI::SaveLoadChooser(_("Save game:"), _("Save"), true); } -MystOptionsDialog::~MystOptionsDialog() { +MohawkOptionsDialog::~MohawkOptionsDialog() { delete _loadDialog; delete _saveDialog; } -void MystOptionsDialog::open() { - Dialog::open(); - - _dropPageButton->setEnabled(_vm->_gameState->_globals.heldPage != 0); - - if (_showMapButton) - _showMapButton->setEnabled(_vm->_scriptParser && - _vm->_scriptParser->getMap()); - - // Return to menu button is not enabled on the menu - if (_returnToMenuButton) - _returnToMenuButton->setEnabled(_vm->_scriptParser && - _vm->getCurStack() != kDemoStack); - - // Zip mode is disabled in the demo - if (_vm->getFeatures() & GF_DEMO) - _zipModeCheckbox->setEnabled(false); - - _zipModeCheckbox->setState(_vm->_gameState->_globals.zipMode); - _transitionsCheckbox->setState(_vm->_gameState->_globals.transitions); +void MohawkOptionsDialog::open() { + GUI::Dialog::open(); _loadButton->setEnabled(_vm->canLoadGameStateCurrently()); _saveButton->setEnabled(_vm->canSaveGameStateCurrently()); } -void MystOptionsDialog::save() { + +void MohawkOptionsDialog::save() { int slot = _saveDialog->runModalWithCurrentTarget(); if (slot >= 0) { @@ -166,7 +132,7 @@ void MystOptionsDialog::save() { } } -void MystOptionsDialog::load() { +void MohawkOptionsDialog::load() { int slot = _loadDialog->runModalWithCurrentTarget(); if (slot >= 0) { @@ -175,7 +141,7 @@ void MystOptionsDialog::load() { } } -void MystOptionsDialog::reflowLayout() { +void MohawkOptionsDialog::reflowLayout() { const int screenW = g_system->getOverlayWidth(); const int screenH = g_system->getOverlayHeight(); @@ -183,7 +149,73 @@ void MystOptionsDialog::reflowLayout() { _x = (screenW - getWidth()) / 2; _y = (screenH - getHeight()) / 2; - Dialog::reflowLayout(); + GUI::Dialog::reflowLayout(); +} + + +void MohawkOptionsDialog::handleCommand(GUI::CommandSender *sender, uint32 cmd, uint32 data) { + switch (cmd) { + case kLoadCmd: + load(); + break; + case kSaveCmd: + save(); + break; + case GUI::kCloseCmd: + close(); + break; + default: + GUI::Dialog::handleCommand(sender, cmd, data); + } +} + +#endif + +#ifdef ENABLE_MYST + +MystOptionsDialog::MystOptionsDialog(MohawkEngine_Myst* vm) : MohawkOptionsDialog(vm), _vm(vm) { + // I18N: Option for fast scene switching + _zipModeCheckbox = new GUI::CheckboxWidget(this, 15, 10, 220, 15, _("~Z~ip Mode Activated"), 0, kZipCmd); + _transitionsCheckbox = new GUI::CheckboxWidget(this, 15, 30, 220, 15, _("~T~ransitions Enabled"), 0, kTransCmd); + // I18N: Drop book page + _dropPageButton = new GUI::ButtonWidget(this, 15, 60, 100, 25, _("~D~rop Page"), 0, kDropCmd); + + // Myst ME only has maps + if (_vm->getFeatures() & GF_ME) + _showMapButton = new GUI::ButtonWidget(this, 15, 95, 100, 25, _("Show ~M~ap"), 0, kMapCmd); + else + _showMapButton = 0; + + // Myst demo only has a menu + if (_vm->getFeatures() & GF_DEMO) + _returnToMenuButton = new GUI::ButtonWidget(this, 15, 95, 100, 25, _("Main Men~u~"), 0, kMenuCmd); + else + _returnToMenuButton = 0; +} + +MystOptionsDialog::~MystOptionsDialog() { +} + +void MystOptionsDialog::open() { + MohawkOptionsDialog::open(); + + _dropPageButton->setEnabled(_vm->_gameState->_globals.heldPage != 0); + + if (_showMapButton) + _showMapButton->setEnabled(_vm->_scriptParser && + _vm->_scriptParser->getMap()); + + // Return to menu button is not enabled on the menu + if (_returnToMenuButton) + _returnToMenuButton->setEnabled(_vm->_scriptParser && + _vm->getCurStack() != kDemoStack); + + // Zip mode is disabled in the demo + if (_vm->getFeatures() & GF_DEMO) + _zipModeCheckbox->setEnabled(false); + + _zipModeCheckbox->setState(_vm->_gameState->_globals.zipMode); + _transitionsCheckbox->setState(_vm->_gameState->_globals.transitions); } void MystOptionsDialog::handleCommand(GUI::CommandSender *sender, uint32 cmd, uint32 data) { @@ -200,12 +232,6 @@ void MystOptionsDialog::handleCommand(GUI::CommandSender *sender, uint32 cmd, ui _vm->_needsShowDemoMenu = true; close(); break; - case kLoadCmd: - load(); - break; - case kSaveCmd: - save(); - break; case kQuitCmd: { if (_vm->getGameType() != GType_MAKINGOF) { _vm->_needsShowCredits = true; @@ -223,11 +249,8 @@ void MystOptionsDialog::handleCommand(GUI::CommandSender *sender, uint32 cmd, ui setResult(1); close(); break; - case GUI::kCloseCmd: - close(); - break; default: - GUI::Dialog::handleCommand(sender, cmd, data); + MohawkOptionsDialog::handleCommand(sender, cmd, data); } } @@ -235,19 +258,18 @@ void MystOptionsDialog::handleCommand(GUI::CommandSender *sender, uint32 cmd, ui #ifdef ENABLE_RIVEN -RivenOptionsDialog::RivenOptionsDialog(MohawkEngine_Riven* vm) : GUI::Dialog(120, 120, 360, 200), _vm(vm) { - _zipModeCheckbox = new GUI::CheckboxWidget(this, 15, 10, 300, 15, _("~Z~ip Mode Activated"), 0, kZipCmd); - _waterEffectCheckbox = new GUI::CheckboxWidget(this, 15, 30, 300, 15, _("~W~ater Effect Enabled"), 0, kWaterCmd); - - new GUI::ButtonWidget(this, 95, 160, 120, 25, _("~O~K"), 0, GUI::kOKCmd); - new GUI::ButtonWidget(this, 225, 160, 120, 25, _("~C~ancel"), 0, GUI::kCloseCmd); +RivenOptionsDialog::RivenOptionsDialog(MohawkEngine_Riven* vm) : + MohawkOptionsDialog(vm), + _vm(vm) { + _zipModeCheckbox = new GUI::CheckboxWidget(this, 15, 10, 220, 15, _("~Z~ip Mode Activated"), 0, kZipCmd); + _waterEffectCheckbox = new GUI::CheckboxWidget(this, 15, 30, 220, 15, _("~W~ater Effect Enabled"), 0, kWaterCmd); } RivenOptionsDialog::~RivenOptionsDialog() { } void RivenOptionsDialog::open() { - Dialog::open(); + MohawkOptionsDialog::open(); _zipModeCheckbox->setState(_vm->_vars["azip"] != 0); _waterEffectCheckbox->setState(_vm->_vars["waterenabled"] != 0); @@ -261,11 +283,15 @@ void RivenOptionsDialog::handleCommand(GUI::CommandSender *sender, uint32 cmd, u setResult(1); close(); break; - case GUI::kCloseCmd: + case kQuitCmd: { + Common::Event eventQ; + eventQ.type = Common::EVENT_QUIT; + g_system->getEventManager()->pushEvent(eventQ); close(); break; + } default: - GUI::Dialog::handleCommand(sender, cmd, data); + MohawkOptionsDialog::handleCommand(sender, cmd, data); } } diff --git a/engines/mohawk/dialogs.h b/engines/mohawk/dialogs.h index 6c9862e43f..3cfb628f9d 100644 --- a/engines/mohawk/dialogs.h +++ b/engines/mohawk/dialogs.h @@ -28,7 +28,6 @@ #include "common/events.h" #include "common/str.h" #include "gui/dialog.h" -#include "gui/options.h" namespace GUI { class SaveLoadChooser; @@ -72,18 +71,44 @@ public: virtual void handleKeyDown(Common::KeyState state); }; +#if defined(ENABLE_MYST) || defined(ENABLE_RIVEN) + +class MohawkOptionsDialog : public GUI::Dialog { +public: + MohawkOptionsDialog(MohawkEngine *_vm); + virtual ~MohawkOptionsDialog(); + + virtual void open() override; + virtual void reflowLayout() override; + virtual void handleCommand(GUI::CommandSender *sender, uint32 cmd, uint32 data) override; + +private: + MohawkEngine *_vm; + + GUI::ButtonWidget *_loadButton; + GUI::ButtonWidget *_saveButton; + + GUI::SaveLoadChooser *_loadDialog; + GUI::SaveLoadChooser *_saveDialog; + + void save(); + void load(); +}; + +#endif + #ifdef ENABLE_MYST class MohawkEngine_Myst; -class MystOptionsDialog : public GUI::Dialog { +class MystOptionsDialog : public MohawkOptionsDialog { public: MystOptionsDialog(MohawkEngine_Myst *vm); - ~MystOptionsDialog(); - void open(); + virtual ~MystOptionsDialog(); + + virtual void open() override; + virtual void handleCommand(GUI::CommandSender *sender, uint32 cmd, uint32 data); - virtual void reflowLayout() override; - virtual void handleCommand(GUI::CommandSender*, uint32, uint32); private: MohawkEngine_Myst *_vm; @@ -93,15 +118,6 @@ private: GUI::ButtonWidget *_dropPageButton; GUI::ButtonWidget *_showMapButton; GUI::ButtonWidget *_returnToMenuButton; - - GUI::ButtonWidget *_loadButton; - GUI::ButtonWidget *_saveButton; - - GUI::SaveLoadChooser *_loadDialog; - GUI::SaveLoadChooser *_saveDialog; - - void save(); - void load(); }; #endif @@ -110,15 +126,17 @@ private: class MohawkEngine_Riven; -class RivenOptionsDialog : public GUI::Dialog { +class RivenOptionsDialog : public MohawkOptionsDialog { public: RivenOptionsDialog(MohawkEngine_Riven *vm); - ~RivenOptionsDialog(); - void open(); + virtual ~RivenOptionsDialog(); + + virtual void open() override; + virtual void handleCommand(GUI::CommandSender *sender, uint32 cmd, uint32 data) override; - virtual void handleCommand(GUI::CommandSender*, uint32, uint32); private: MohawkEngine_Riven *_vm; + GUI::CheckboxWidget *_zipModeCheckbox; GUI::CheckboxWidget *_waterEffectCheckbox; }; |