aboutsummaryrefslogtreecommitdiff
path: root/engines/xeen/dialogs/dialogs.h
diff options
context:
space:
mode:
authorPaul Gilbert2018-03-04 18:12:09 -0500
committerPaul Gilbert2018-03-04 22:40:42 -0500
commitf2b574d64762d23a83cc682da0e622be99080688 (patch)
tree1ccbabbda83e70911dae0d4042223ee81a006d1d /engines/xeen/dialogs/dialogs.h
parent50630efde6d0f42f4d5f371d6818afac64ba86f5 (diff)
downloadscummvm-rg350-f2b574d64762d23a83cc682da0e622be99080688.tar.gz
scummvm-rg350-f2b574d64762d23a83cc682da0e622be99080688.tar.bz2
scummvm-rg350-f2b574d64762d23a83cc682da0e622be99080688.zip
XEEN: Move all the dialog classes to their own sub-folder
Diffstat (limited to 'engines/xeen/dialogs/dialogs.h')
-rw-r--r--engines/xeen/dialogs/dialogs.h137
1 files changed, 137 insertions, 0 deletions
diff --git a/engines/xeen/dialogs/dialogs.h b/engines/xeen/dialogs/dialogs.h
new file mode 100644
index 0000000000..cabc921536
--- /dev/null
+++ b/engines/xeen/dialogs/dialogs.h
@@ -0,0 +1,137 @@
+/* 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.
+ *
+ */
+
+#ifndef XEEN_DIALOGS_H
+#define XEEN_DIALOGS_H
+
+#include "common/array.h"
+#include "common/stack.h"
+#include "common/rect.h"
+#include "xeen/cutscenes.h"
+#include "xeen/sprites.h"
+#include "xeen/xsurface.h"
+
+namespace Xeen {
+
+class XeenEngine;
+
+class UIButton {
+public:
+ Common::Rect _bounds;
+ SpriteResource *_sprites;
+ int _value;
+ uint _frameNum;
+ bool _draw;
+
+ UIButton(const Common::Rect &bounds, int value, uint frameNum, SpriteResource *sprites, bool draw) :
+ _bounds(bounds), _value(value), _frameNum(frameNum),
+ _sprites(sprites), _draw(draw) {}
+
+ UIButton() : _value(0), _frameNum(0), _sprites(nullptr), _draw(false) {}
+};
+
+class ButtonContainer : public Cutscenes {
+private:
+ Common::Stack< Common::Array<UIButton> > _savedButtons;
+protected:
+ Common::Array<UIButton> _buttons;
+ Common::StringArray _textStrings;
+ int _buttonValue;
+
+ bool checkEvents(XeenEngine *vm);
+
+ /**
+ * Draws the scroll in the background
+ * @param rollUp If true, rolls up the scroll. If false, unrolls.
+ * @param fadeIn If true, does an initial fade in
+ * @returns True if key or mouse pressed
+ */
+ virtual bool doScroll(bool rollUp, bool fadeIn);
+
+ /**
+ * Load a set of text strings from the given resource
+ * @param name Name of resource containing strings
+ */
+ void loadStrings(const Common::String &name);
+
+ /**
+ * Load a set of text strings from the given resource
+ * @param name Name of resource containing strings
+ * @param ccMode Optional cc file number to explicitly use
+ */
+ void loadStrings(const Common::String &name, int ccMode);
+public:
+ ButtonContainer(XeenEngine *vm) : Cutscenes(vm), _buttonValue(0) {}
+
+ /**
+ * Saves the current list of buttons
+ */
+ void saveButtons();
+
+ void clearButtons();
+
+ void restoreButtons();
+
+ void addButton(const Common::Rect &bounds, int val,
+ SpriteResource *sprites = nullptr);
+ void addButton(const Common::Rect &bounds, int val,
+ int frameNum, SpriteResource *sprites = nullptr);
+
+ void addPartyButtons(XeenEngine *vm);
+
+ /**
+ * Draws the buttons onto the passed surface
+ */
+ void drawButtons(XSurface *surface);
+};
+
+class SettingsBaseDialog : public ButtonContainer {
+protected:
+ virtual void showContents(SpriteResource &title1, bool mode);
+public:
+ SettingsBaseDialog(XeenEngine *vm) : ButtonContainer(vm) {}
+
+ virtual ~SettingsBaseDialog() {}
+};
+
+class CreditsScreen: public ButtonContainer {
+private:
+ CreditsScreen(XeenEngine *vm) : ButtonContainer(vm) {}
+
+ void execute(const char *content);
+public:
+ static void show(XeenEngine *vm);
+};
+
+class PleaseWait {
+private:
+ Common::String _msg;
+public:
+ PleaseWait(bool isOops = false);
+ ~PleaseWait();
+
+ void show();
+};
+
+} // End of namespace Xeen
+
+#endif /* XEEN_DIALOGS_H */