diff options
Diffstat (limited to 'engines/mads/nebular/dialogs_nebular.h')
-rw-r--r-- | engines/mads/nebular/dialogs_nebular.h | 75 |
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 |