From 9f1416c6a358eb1dc860ff1176ae89721d82fc50 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sat, 22 Feb 2014 00:24:39 -0500 Subject: MADS: Implemented constructor for copy protection dialog, and support methods --- engines/mads/nebular/dialogs_nebular.h | 75 ++++++++++++++++++++++++++++++++-- 1 file changed, 72 insertions(+), 3 deletions(-) (limited to 'engines/mads/nebular/dialogs_nebular.h') 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 -- cgit v1.2.3