diff options
author | Strangerke | 2014-08-31 02:18:02 +0200 |
---|---|---|
committer | Strangerke | 2014-08-31 02:19:05 +0200 |
commit | 9d3460e9f707b1d53534e45c19e15bbb247eba70 (patch) | |
tree | fe26110b09c5b9e121b5a6f8236de377500d0cdb /engines/access | |
parent | b39d7df7cb754b975bcbfdb523f451f021847e72 (diff) | |
download | scummvm-rg350-9d3460e9f707b1d53534e45c19e15bbb247eba70.tar.gz scummvm-rg350-9d3460e9f707b1d53534e45c19e15bbb247eba70.tar.bz2 scummvm-rg350-9d3460e9f707b1d53534e45c19e15bbb247eba70.zip |
ACCESS: Implement printText()
Diffstat (limited to 'engines/access')
-rw-r--r-- | engines/access/access.cpp | 29 | ||||
-rw-r--r-- | engines/access/access.h | 8 | ||||
-rw-r--r-- | engines/access/amazon/amazon_game.cpp | 33 | ||||
-rw-r--r-- | engines/access/font.cpp | 4 | ||||
-rw-r--r-- | engines/access/font.h | 4 | ||||
-rw-r--r-- | engines/access/scripts.cpp | 2 |
6 files changed, 54 insertions, 26 deletions
diff --git a/engines/access/access.cpp b/engines/access/access.cpp index a0de5c8e7c..360d434670 100644 --- a/engines/access/access.cpp +++ b/engines/access/access.cpp @@ -296,6 +296,35 @@ void AccessEngine::speakText(ASurface *s, Common::Array<Common::String> msgArr) } } +void AccessEngine::printText(ASurface *s, Common::String &msg) { + Common::String line; + int width = 0; + while (true) { + bool lastLine = _fonts._font2.getLine(msg, s->_maxChars * 6, line, width); + + // Set font colors + _fonts._font2._fontColors[0] = 0; + _fonts._font2._fontColors[1] = 28; + _fonts._font2._fontColors[2] = 29; + _fonts._font2._fontColors[3] = 30; + + _fonts._font2.drawString(s, line, s->_printOrg); + s->_printOrg = Common::Point(s->_printStart.x, s->_printOrg.y + 9); + + if (lastLine) + break; + + _events->waitKeyMouse(); + _buffer2.copyBuffer(s); + s->_printOrg.y = s->_printStart.y; + + if (lastLine) + break; + } + _events->waitKeyMouse(); +} + + void AccessEngine::plotList() { _player->calcPlayer(); plotList1(); diff --git a/engines/access/access.h b/engines/access/access.h index 725e1fc87f..42ba49fd5d 100644 --- a/engines/access/access.h +++ b/engines/access/access.h @@ -113,8 +113,6 @@ protected: */ void doRoom(); - void speakText(ASurface *s, Common::Array<Common::String>msgArr); - /** * Support method that generates a savegame name * @param slot Slot number @@ -271,6 +269,12 @@ public: void freeChar(); /** + * Draw a string on a given surface and update text positioning + */ + void printText(ASurface *s, Common::String &msg); + void speakText(ASurface *s, Common::Array<Common::String>msgArr); + + /** * Load a savegame */ virtual Common::Error loadGameState(int slot); diff --git a/engines/access/amazon/amazon_game.cpp b/engines/access/amazon/amazon_game.cpp index d18729aa19..f633cd8753 100644 --- a/engines/access/amazon/amazon_game.cpp +++ b/engines/access/amazon/amazon_game.cpp @@ -231,23 +231,26 @@ void AmazonEngine::loadEstablish(int sub) { _establishGroup = 0; _eseg = _files->loadFile(_estTable[oldGroup]); - } else { - _eseg = _files->loadFile("ETEXT.DAT"); - } + _establishCtrlTblOfs = READ_LE_UINT16(_eseg->data()); - _establishCtrlTblOfs = READ_LE_UINT16(_eseg->data()); + int ofs = _establishCtrlTblOfs + (sub * 2); + int idx = READ_LE_UINT16(_eseg->data() + ofs); + _narateFile = READ_LE_UINT16(_eseg->data() + idx); + _txtPages = READ_LE_UINT16(_eseg->data() + idx + 2); - int ofs = _establishCtrlTblOfs + (sub * 2); - int idx = READ_LE_UINT16(_eseg->data() + ofs); - _narateFile = READ_LE_UINT16(_eseg->data() + idx); - _txtPages = READ_LE_UINT16(_eseg->data() + idx + 2); - - if (!_txtPages) - return; + if (!_txtPages) + return; - _sndSubFile = READ_LE_UINT16(_eseg->data() + idx + 4); - for (int i = 0; i < _txtPages; ++i) - _countTbl[i] = READ_LE_UINT16(_eseg->data() + idx + 6 + (2 * i)); + _sndSubFile = READ_LE_UINT16(_eseg->data() + idx + 4); + for (int i = 0; i < _txtPages; ++i) + _countTbl[i] = READ_LE_UINT16(_eseg->data() + idx + 6 + (2 * i)); + } else { + _establishGroup = 0; + _narateFile = 0; + _txtPages = 0; + _sndSubFile = 0; + _eseg = _files->loadFile("ETEXT.DAT"); + } } void AmazonEngine::doEstablish(int esatabIndex, int sub) { @@ -279,7 +282,7 @@ void AmazonEngine::doEstablish(int esatabIndex, int sub) { _printEnd = 155; if (_txtPages == 0) { Common::String msg((const char *)_eseg->data() + msgOffset); - _fonts._font2.printText(_screen, msg); + printText(_screen, msg); } else { Common::Array<Common::String> msgArr; for (int i = 0; i < _txtPages; ++i) { diff --git a/engines/access/font.cpp b/engines/access/font.cpp index ba17f19211..75add4129c 100644 --- a/engines/access/font.cpp +++ b/engines/access/font.cpp @@ -159,10 +159,6 @@ int Font::drawChar(ASurface *s, char c, Common::Point &pt) { return ch.w; } -void Font::printText(ASurface *s, const Common::String &msg) { - error("TODO: printText"); -} - /*------------------------------------------------------------------------*/ FontManager::FontManager() { diff --git a/engines/access/font.h b/engines/access/font.h index 9285d323d1..d8517e3720 100644 --- a/engines/access/font.h +++ b/engines/access/font.h @@ -85,10 +85,6 @@ public: */ int drawChar(ASurface *s, char c, Common::Point &pt); - /** - * Draw a string on a given surface and update text positioning - */ - void printText(ASurface *s, const Common::String &msg); }; class FontManager { diff --git a/engines/access/scripts.cpp b/engines/access/scripts.cpp index 2fdb91e35b..0b2150a5a6 100644 --- a/engines/access/scripts.cpp +++ b/engines/access/scripts.cpp @@ -795,7 +795,7 @@ void Scripts::cmdDead() { Common::String &msg = de._msg; _vm->_printEnd = 180; - _vm->_fonts._font2.printText(_vm->_screen, msg); + _vm->printText(_vm->_screen, msg); _vm->_screen->forceFadeOut(); _vm->_sound->newMusic(0, 1); |