diff options
author | Paul Gilbert | 2014-05-03 14:18:33 -0400 |
---|---|---|
committer | Paul Gilbert | 2014-05-03 14:18:33 -0400 |
commit | d38e1aa5006266dedf5e7de6382df8c321009ee7 (patch) | |
tree | 47bbf9c993b33a01aa26ed401a1d20485d468dfc /engines/mads/nebular/dialogs_nebular.cpp | |
parent | 9cd7e8b886c2c72d659cd3439ae4f004126393de (diff) | |
download | scummvm-rg350-d38e1aa5006266dedf5e7de6382df8c321009ee7.tar.gz scummvm-rg350-d38e1aa5006266dedf5e7de6382df8c321009ee7.tar.bz2 scummvm-rg350-d38e1aa5006266dedf5e7de6382df8c321009ee7.zip |
MADS: Reorganise Nebular dialog methods
Diffstat (limited to 'engines/mads/nebular/dialogs_nebular.cpp')
-rw-r--r-- | engines/mads/nebular/dialogs_nebular.cpp | 170 |
1 files changed, 85 insertions, 85 deletions
diff --git a/engines/mads/nebular/dialogs_nebular.cpp b/engines/mads/nebular/dialogs_nebular.cpp index 98e05ade25..dc7d432cb8 100644 --- a/engines/mads/nebular/dialogs_nebular.cpp +++ b/engines/mads/nebular/dialogs_nebular.cpp @@ -33,90 +33,6 @@ namespace MADS { namespace Nebular { -CopyProtectionDialog::CopyProtectionDialog(MADSEngine *vm, bool priorAnswerWrong): - TextDialog(vm, FONT_INTERFACE, Common::Point(-1, -1), 32) { - getHogAnusEntry(_hogEntry); - - if (priorAnswerWrong) { - addLine("ANSWER INCORRECT!", true); - wordWrap("\n"); - addLine("(But we'll give you another chance!)"); - } else { - addLine("REX NEBULAR version 8.43", true); - wordWrap("\n"); - addLine("(Copy Protection, for your convenience)"); - } - wordWrap("\n"); - - wordWrap("Now comes the part that everybody hates. But if we don't"); - wordWrap("do this, nasty rodent-like people will pirate this game"); - wordWrap("and a whole generation of talented designers, programmers,"); - wordWrap("artists, and playtesters will go hungry, and will wander"); - wordWrap("aimlessly through the land at night searching for peace."); - wordWrap("So let's grit our teeth and get it over with. Just get"); - - Common::String line = "out your copy of "; - line += _hogEntry._bookId == 103 ? "the GAME MANUAL" : "REX'S LOGBOOK"; - line += ". See! That was easy. "; - wordWrap(line); - - line = Common::String::format("Next, just turn to page %d. On line %d, find word number %d, ", - _hogEntry._pageNum, _hogEntry._lineNum, _hogEntry._wordNum); - wordWrap(line); - - wordWrap("and type it on the line below (we',27h,'ve even given you"); - wordWrap("first letter as a hint). As soon as you do that, we can get"); - wordWrap("right into this really COOL adventure game!\n"); - wordWrap("\n"); - wordWrap(" "); - addInput(); - wordWrap("\n"); -} - -bool CopyProtectionDialog::show() { - draw(); - _vm->_events->showCursor(); - - // TODO: Replace with text input - while (!_vm->shouldQuit() && !_vm->_events->isKeyPressed() && - !_vm->_events->_mouseClicked) { - _vm->_events->delay(1); - } - - _vm->_events->_pendingKeys.clear(); - return true; -} - -bool CopyProtectionDialog::getHogAnusEntry(HOGANUS &entry) { - File f; - f.open("*HOGANUS.DAT"); - - // Read in the total number of entries, and randomly pick an entry to use - int numEntries = f.readUint16LE(); - int entryIndex = _vm->getRandomNumber(1, numEntries); - - // Read in the encrypted entry - f.seek(28 * entryIndex + 2); - byte entryData[28]; - f.read(entryData, 28); - - // Decrypt it - for (int i = 0; i < 28; ++i) - entryData[i] = ~entryData[i]; - - // Fill out the fields - entry._bookId = entryData[0]; - entry._pageNum = READ_LE_UINT16(&entryData[2]); - entry._lineNum = READ_LE_UINT16(&entryData[4]); - entry._wordNum = READ_LE_UINT16(&entryData[6]); - entry._word = Common::String((char *)&entryData[8]); - - f.close(); - return true; -} - -/*------------------------------------------------------------------------*/ - bool DialogsNebular::show(int msgId) { MADSAction &action = _vm->_game->_scene._action; Common::StringArray msg = _vm->_game->getMessage(msgId); @@ -330,6 +246,91 @@ void DialogsNebular::showDialog() { /*------------------------------------------------------------------------*/ +CopyProtectionDialog::CopyProtectionDialog(MADSEngine *vm, bool priorAnswerWrong) : +TextDialog(vm, FONT_INTERFACE, Common::Point(-1, -1), 32) { + getHogAnusEntry(_hogEntry); + + if (priorAnswerWrong) { + addLine("ANSWER INCORRECT!", true); + wordWrap("\n"); + addLine("(But we'll give you another chance!)"); + } + else { + addLine("REX NEBULAR version 8.43", true); + wordWrap("\n"); + addLine("(Copy Protection, for your convenience)"); + } + wordWrap("\n"); + + wordWrap("Now comes the part that everybody hates. But if we don't"); + wordWrap("do this, nasty rodent-like people will pirate this game"); + wordWrap("and a whole generation of talented designers, programmers,"); + wordWrap("artists, and playtesters will go hungry, and will wander"); + wordWrap("aimlessly through the land at night searching for peace."); + wordWrap("So let's grit our teeth and get it over with. Just get"); + + Common::String line = "out your copy of "; + line += _hogEntry._bookId == 103 ? "the GAME MANUAL" : "REX'S LOGBOOK"; + line += ". See! That was easy. "; + wordWrap(line); + + line = Common::String::format("Next, just turn to page %d. On line %d, find word number %d, ", + _hogEntry._pageNum, _hogEntry._lineNum, _hogEntry._wordNum); + wordWrap(line); + + wordWrap("and type it on the line below (we',27h,'ve even given you"); + wordWrap("first letter as a hint). As soon as you do that, we can get"); + wordWrap("right into this really COOL adventure game!\n"); + wordWrap("\n"); + wordWrap(" "); + addInput(); + wordWrap("\n"); +} + +bool CopyProtectionDialog::show() { + draw(); + _vm->_events->showCursor(); + + // TODO: Replace with text input + while (!_vm->shouldQuit() && !_vm->_events->isKeyPressed() && + !_vm->_events->_mouseClicked) { + _vm->_events->delay(1); + } + + _vm->_events->_pendingKeys.clear(); + return true; +} + +bool CopyProtectionDialog::getHogAnusEntry(HOGANUS &entry) { + File f; + f.open("*HOGANUS.DAT"); + + // Read in the total number of entries, and randomly pick an entry to use + int numEntries = f.readUint16LE(); + int entryIndex = _vm->getRandomNumber(1, numEntries); + + // Read in the encrypted entry + f.seek(28 * entryIndex + 2); + byte entryData[28]; + f.read(entryData, 28); + + // Decrypt it + for (int i = 0; i < 28; ++i) + entryData[i] = ~entryData[i]; + + // Fill out the fields + entry._bookId = entryData[0]; + entry._pageNum = READ_LE_UINT16(&entryData[2]); + entry._lineNum = READ_LE_UINT16(&entryData[4]); + entry._wordNum = READ_LE_UINT16(&entryData[6]); + entry._word = Common::String((char *)&entryData[8]); + + f.close(); + return true; +} + +/*------------------------------------------------------------------------*/ + ScreenDialog::DialogLine::DialogLine() { _state = 0; _textDisplayIndex = -1; @@ -503,7 +504,6 @@ finish: ++_lineIndex; } - void ScreenDialog::initVars() { _v1 = -1; _selectedLine = -1; |