aboutsummaryrefslogtreecommitdiff
path: root/engines/mohawk/dialogs.cpp
diff options
context:
space:
mode:
authorEugene Sandulenko2009-12-29 23:18:24 +0000
committerEugene Sandulenko2009-12-29 23:18:24 +0000
commit0ea022d076c491d802431ee90b658d5e8c06d0e0 (patch)
tree23953ed8dbd2c1cc798b6aa9aa51df93c7041c7d /engines/mohawk/dialogs.cpp
parent5f1d2a88b51af43d8903866b46a424fe556abb3c (diff)
downloadscummvm-rg350-0ea022d076c491d802431ee90b658d5e8c06d0e0.tar.gz
scummvm-rg350-0ea022d076c491d802431ee90b658d5e8c06d0e0.tar.bz2
scummvm-rg350-0ea022d076c491d802431ee90b658d5e8c06d0e0.zip
Add Mohawk engine code. Part 1/3: main code.
svn-id: r46727
Diffstat (limited to 'engines/mohawk/dialogs.cpp')
-rw-r--r--engines/mohawk/dialogs.cpp148
1 files changed, 148 insertions, 0 deletions
diff --git a/engines/mohawk/dialogs.cpp b/engines/mohawk/dialogs.cpp
new file mode 100644
index 0000000000..8757a613fa
--- /dev/null
+++ b/engines/mohawk/dialogs.cpp
@@ -0,0 +1,148 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * $URL$
+ * $Id$
+ *
+ */
+
+#include "mohawk/mohawk.h"
+#include "mohawk/myst.h"
+#include "mohawk/riven.h"
+#include "mohawk/dialogs.h"
+
+#include "gui/GuiManager.h"
+#include "common/savefile.h"
+
+namespace Mohawk {
+
+// This used to have GUI::Dialog("MohawkDummyDialog"), but that doesn't work with the gui branch merge :P (Sorry, Tanoku!)
+InfoDialog::InfoDialog(MohawkEngine *vm, Common::String message) : _vm(vm), GUI::Dialog(0, 0, 1, 1), _message(message) {
+ _backgroundType = GUI::ThemeEngine::kDialogBackgroundSpecial;
+
+ _text = new GUI::StaticTextWidget(this, 4, 4, 10, 10, _message, Graphics::kTextAlignCenter);
+}
+
+void InfoDialog::setInfoText(Common::String message) {
+ _message = message;
+ _text->setLabel(_message);
+}
+
+void InfoDialog::reflowLayout() {
+ const int screenW = g_system->getOverlayWidth();
+ const int screenH = g_system->getOverlayHeight();
+
+ int width = g_gui.getStringWidth(_message) + 16;
+ int height = g_gui.getFontHeight() + 8;
+
+ _w = width;
+ _h = height;
+ _x = (screenW - width) / 2;
+ _y = (screenH - height) / 2;
+
+ _text->setSize(_w - 8, _h);
+}
+
+PauseDialog::PauseDialog(MohawkEngine *vm, Common::String message) : InfoDialog(vm, message) {
+}
+
+void PauseDialog::handleKeyDown(Common::KeyState state) {
+ if (state.ascii == ' ')
+ close();
+ else
+ InfoDialog::handleKeyDown(state);
+}
+
+enum {
+ kCloseCmd = 'CLOS',
+ kZipCmd = 'ZIPM',
+ kTransCmd = 'TRAN',
+ kWaterCmd = 'WATR'
+};
+
+MystOptionsDialog::MystOptionsDialog(MohawkEngine_Myst* vm) : GUI::OptionsDialog("", 120, 120, 360, 200), _vm(vm) {
+ _zipModeCheckbox = new GUI::CheckboxWidget(this, 15, 10, 300, 15, "Zip Mode Activated", kZipCmd, 'Z');
+ _transistionsCheckbox = new GUI::CheckboxWidget(this, 15, 30, 300, 15, "Transistions Enabled", kTransCmd, 'T');
+
+ new GUI::ButtonWidget(this, 95, 160, 120, 25, "OK", GUI::OptionsDialog::kOKCmd, 'O');
+ new GUI::ButtonWidget(this, 225, 160, 120, 25, "Cancel", kCloseCmd, 'C');
+}
+
+MystOptionsDialog::~MystOptionsDialog() {
+}
+
+void MystOptionsDialog::open() {
+ Dialog::open();
+
+ _zipModeCheckbox->setState(_vm->_zipMode);
+ _transistionsCheckbox->setState(_vm->_transitionsEnabled);
+}
+
+void MystOptionsDialog::handleCommand(GUI::CommandSender *sender, uint32 cmd, uint32 data) {
+ switch (cmd) {
+ case kZipCmd:
+ _vm->_zipMode = _zipModeCheckbox->getState();
+ break;
+ case kTransCmd:
+ _vm->_transitionsEnabled = _transistionsCheckbox->getState();
+ break;
+ case kCloseCmd:
+ close();
+ break;
+ default:
+ GUI::OptionsDialog::handleCommand(sender, cmd, data);
+ }
+}
+
+RivenOptionsDialog::RivenOptionsDialog(MohawkEngine_Riven* vm) : GUI::OptionsDialog("", 120, 120, 360, 200), _vm(vm) {
+ _zipModeCheckbox = new GUI::CheckboxWidget(this, 15, 10, 300, 15, "Zip Mode Activated", kZipCmd, 'Z');
+ _waterEffectCheckbox = new GUI::CheckboxWidget(this, 15, 30, 300, 15, "Water Effect Enabled", kWaterCmd, 'W');
+
+ new GUI::ButtonWidget(this, 95, 160, 120, 25, "OK", GUI::OptionsDialog::kOKCmd, 'O');
+ new GUI::ButtonWidget(this, 225, 160, 120, 25, "Cancel", kCloseCmd, 'C');
+}
+
+RivenOptionsDialog::~RivenOptionsDialog() {
+}
+
+void RivenOptionsDialog::open() {
+ Dialog::open();
+
+ _zipModeCheckbox->setState(*_vm->matchVarToString("azip") != 0);
+ _waterEffectCheckbox->setState(*_vm->matchVarToString("waterenabled") != 0);
+}
+
+void RivenOptionsDialog::handleCommand(GUI::CommandSender *sender, uint32 cmd, uint32 data) {
+ switch (cmd) {
+ case kZipCmd:
+ *_vm->matchVarToString("azip") = _zipModeCheckbox->getState() ? 1 : 0;
+ break;
+ case kWaterCmd:
+ *_vm->matchVarToString("waterenabled") = _waterEffectCheckbox->getState() ? 1 : 0;
+ break;
+ case kCloseCmd:
+ close();
+ break;
+ default:
+ GUI::OptionsDialog::handleCommand(sender, cmd, data);
+ }
+}
+
+} // End of namespace Mohawk