aboutsummaryrefslogtreecommitdiff
path: root/engines/mads/nebular/dialogs_nebular.h
diff options
context:
space:
mode:
authorPaul Gilbert2014-02-22 00:24:39 -0500
committerPaul Gilbert2014-02-22 00:24:39 -0500
commit9f1416c6a358eb1dc860ff1176ae89721d82fc50 (patch)
tree4bc10911d84d88ba65be94cac41ac8c30501b0dc /engines/mads/nebular/dialogs_nebular.h
parent40b3ab62ca8a16c2fd06bfcc691967c4f510d52a (diff)
downloadscummvm-rg350-9f1416c6a358eb1dc860ff1176ae89721d82fc50.tar.gz
scummvm-rg350-9f1416c6a358eb1dc860ff1176ae89721d82fc50.tar.bz2
scummvm-rg350-9f1416c6a358eb1dc860ff1176ae89721d82fc50.zip
MADS: Implemented constructor for copy protection dialog, and support methods
Diffstat (limited to 'engines/mads/nebular/dialogs_nebular.h')
-rw-r--r--engines/mads/nebular/dialogs_nebular.h75
1 files changed, 72 insertions, 3 deletions
diff --git a/engines/mads/nebular/dialogs_nebular.h b/engines/mads/nebular/dialogs_nebular.h
index 6417c2cdc3..3e28ee39b3 100644
--- a/engines/mads/nebular/dialogs_nebular.h
+++ b/engines/mads/nebular/dialogs_nebular.h
@@ -30,6 +30,76 @@ namespace MADS {
namespace Nebular {
+enum {
+ TEXTDIALOG_F8 = 0XF8,
+ TEXTDIALOG_F9 = 0XF8,
+ TEXTDIALOG_FA = 0XF8,
+ TEXTDIALOG_FB = 0XF8,
+ TEXTDIALOG_FC = 0XF8,
+ TEXTDIALOG_FD = 0XF8,
+ TEXTDIALOG_FE = 0XF8,
+ TEXTDIALOG_FONT = 0
+};
+
+#define TEXT_DIALOG_MAX_LINES 20
+
+class TextDialog {
+private:
+ /**
+ * Increments the number of text lines the text dialog uses
+ */
+ void incNumLines();
+
+ /**
+ * Flags the previously added line to be underlined
+ */
+ void underlineLine();
+
+ /**
+ * Append text to the currently end line.
+ */
+ void appendLine(const Common::String &line);
+protected:
+ MADSEngine *_vm;
+ Common::Point _position;
+ Common::String _fontName;
+ int _width;
+ int _innerWidth;
+ int _lineWidth;
+ int _currentX;
+ int _numLines;
+ int _lineSize;
+ Common::String _lines[TEXT_DIALOG_MAX_LINES];
+ int _lineXp[TEXT_DIALOG_MAX_LINES];
+ byte _savedPalette[8 * 3];
+
+ /**
+ * Add a new line to the dialog
+ */
+ void addLine(const Common::String &line, bool underline = false);
+
+ /**
+ * Adds one or more lines, word wrapping the passed text
+ */
+ void wordWrap(const Common::String &line);
+public:
+ /**
+ * Constructor
+ * @param vm Engine reference
+ * @param fontName Font to use for display
+ * @param pos Position for window top-left
+ * @param maxChars Horizontal width of window in characters
+ */
+ TextDialog(MADSEngine *vm, const Common::String &fontName, const Common::Point &pos,
+ int maxChars);
+
+ /**
+ * Destructor
+ */
+ ~TextDialog();
+
+};
+
struct HOGANUS {
int _bookId;
int _pageNum;
@@ -38,15 +108,14 @@ struct HOGANUS {
Common::String _word;
};
-class CopyProtectionDialog {
+class CopyProtectionDialog: public TextDialog {
private:
- MADSEngine *_vm;
HOGANUS _hogEntry;
/**
* Constructor
*/
- CopyProtectionDialog(MADSEngine *vm);
+ CopyProtectionDialog(MADSEngine *vm, bool priorAnswerWrong);
/**
* Get a random copy protection entry from the HOGANUS resource