diff options
Diffstat (limited to 'engines/supernova/screen.cpp')
-rw-r--r-- | engines/supernova/screen.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/engines/supernova/screen.cpp b/engines/supernova/screen.cpp index 7dc04b0c82..8aacbe83b0 100644 --- a/engines/supernova/screen.cpp +++ b/engines/supernova/screen.cpp @@ -107,6 +107,7 @@ Marquee::Marquee(Screen *screen, MarqueeId id, const char *text) , _textBegin(text) , _delay(0) , _loop(false) + , _oldColor(nullptr) , _screen(screen) { if (_screen->_vm->_MSPart == 1) { _color = kColorLightBlue; @@ -117,6 +118,10 @@ Marquee::Marquee(Screen *screen, MarqueeId id, const char *text) _y = 1; } } else if (_screen->_vm->_MSPart == 2) { + byte purple[3] = {0x9b, 0x00, 0xfb}; + _oldColor = new byte[3]; + _screen->_vm->_system->getPaletteManager()->grabPalette(_oldColor, kColorPurple, 1); + _screen->_vm->_system->getPaletteManager()->setPalette(purple, kColorPurple, 1); _color = kColorPurple; if (id == kMarqueeIntro) { _y = 191; @@ -133,6 +138,13 @@ Marquee::Marquee(Screen *screen, MarqueeId id, const char *text) _screen->_textColor = _color; } +Marquee::~Marquee() { + if (_screen->_vm->_MSPart == 2) { + _screen->_vm->_system->getPaletteManager()->setPalette(_oldColor, kColorPurple, 1); + delete _oldColor; + } +} + void Marquee::clearText() { _screen->renderBox(_x, _y - 1, _textWidth + 1, 9, kColorBlack); } |