aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBastien Bouclet2016-07-04 20:40:44 +0200
committerBastien Bouclet2016-07-04 20:47:16 +0200
commit0440ff64f15f00597d82841fd1ef6febc905302e (patch)
tree82e48cd03fef0c208bf02e8b6ade03e6e7a4df0e
parentd35d8efc5041813fd5fdd1fc55025c7835ab358e (diff)
downloadscummvm-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.cpp156
-rw-r--r--engines/mohawk/dialogs.h56
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;
};