diff options
-rw-r--r-- | engines/mads/nebular/menu_nebular.cpp | 11 | ||||
-rw-r--r-- | engines/mads/nebular/menu_nebular.h | 1 |
2 files changed, 9 insertions, 3 deletions
diff --git a/engines/mads/nebular/menu_nebular.cpp b/engines/mads/nebular/menu_nebular.cpp index d7d98a55cf..a217ba684d 100644 --- a/engines/mads/nebular/menu_nebular.cpp +++ b/engines/mads/nebular/menu_nebular.cpp @@ -639,8 +639,9 @@ void TextView::processText() { // Add the new line to the list of pending lines TextLine tl; - tl._pos = Common::Point(xStart, 155); + tl._pos = Common::Point(xStart, MADS_SCENE_HEIGHT); tl._line = _currentLine; + tl._textDisplayIndex = -1; _textLines.push_back(tl); } @@ -740,14 +741,18 @@ void TextView::doFrame() { } // Scroll all active text lines up - scene._textDisplay.reset(); for (int i = _textLines.size() - 1; i >= 0; --i) { TextLine &tl = _textLines[i]; + if (tl._textDisplayIndex != -1) + // Expire the text line that's already on-screen + scene._textDisplay.expire(tl._textDisplayIndex); + tl._pos.y--; if (tl._pos.y < 0) { _textLines.remove_at(i); } else { - scene._textDisplay.add(tl._pos.x, tl._pos.y, 0x605, -1, tl._line, _font); + tl._textDisplayIndex = scene._textDisplay.add(tl._pos.x, tl._pos.y, + 0x605, -1, tl._line, _font); } } diff --git a/engines/mads/nebular/menu_nebular.h b/engines/mads/nebular/menu_nebular.h index ede4a23970..a22cb422b8 100644 --- a/engines/mads/nebular/menu_nebular.h +++ b/engines/mads/nebular/menu_nebular.h @@ -151,6 +151,7 @@ public: struct TextLine { Common::Point _pos; Common::String _line; + int _textDisplayIndex; }; /** |