aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStrangerke2014-08-31 02:18:02 +0200
committerStrangerke2014-08-31 02:19:05 +0200
commit9d3460e9f707b1d53534e45c19e15bbb247eba70 (patch)
treefe26110b09c5b9e121b5a6f8236de377500d0cdb
parentb39d7df7cb754b975bcbfdb523f451f021847e72 (diff)
downloadscummvm-rg350-9d3460e9f707b1d53534e45c19e15bbb247eba70.tar.gz
scummvm-rg350-9d3460e9f707b1d53534e45c19e15bbb247eba70.tar.bz2
scummvm-rg350-9d3460e9f707b1d53534e45c19e15bbb247eba70.zip
ACCESS: Implement printText()
-rw-r--r--engines/access/access.cpp29
-rw-r--r--engines/access/access.h8
-rw-r--r--engines/access/amazon/amazon_game.cpp33
-rw-r--r--engines/access/font.cpp4
-rw-r--r--engines/access/font.h4
-rw-r--r--engines/access/scripts.cpp2
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);