diff options
author | Filippos Karapetis | 2012-11-11 23:31:25 +0200 |
---|---|---|
committer | Filippos Karapetis | 2012-11-11 23:31:25 +0200 |
commit | 1b5e96f42903b0cf3a5456e85a09c2c01eef0538 (patch) | |
tree | b4a4a66b4a1d99963cb73b733187e90ab422759d /engines/saga | |
parent | 3e8758b810cb68ea9ead23b607a56c9c94221379 (diff) | |
download | scummvm-rg350-1b5e96f42903b0cf3a5456e85a09c2c01eef0538.tar.gz scummvm-rg350-1b5e96f42903b0cf3a5456e85a09c2c01eef0538.tar.bz2 scummvm-rg350-1b5e96f42903b0cf3a5456e85a09c2c01eef0538.zip |
SAGA: Fix bug #3564919 - "SAGA: IHNM Spanish: Spiritual Barometer doesn't change"
The Spanish version uses different colors for portrait
backgrounds. Also, portrait colors are now set correctly when
loading games directly from the launcher.
Diffstat (limited to 'engines/saga')
-rw-r--r-- | engines/saga/events.cpp | 19 | ||||
-rw-r--r-- | engines/saga/saga.h | 4 | ||||
-rw-r--r-- | engines/saga/sfuncs_ihnm.cpp | 18 |
3 files changed, 28 insertions, 13 deletions
diff --git a/engines/saga/events.cpp b/engines/saga/events.cpp index ec3ef2f6f9..d98cef0740 100644 --- a/engines/saga/events.cpp +++ b/engines/saga/events.cpp @@ -332,13 +332,22 @@ int Events::handleOneShot(Event *event) { #ifdef ENABLE_IHNM if (_vm->getGameId() == GID_IHNM) { + PalEntry portraitBgColor = _vm->_interface->_portraitBgColor; + byte portraitColor = (_vm->getLanguage() == Common::ES_ESP) ? 253 : 254; + + // Set the portrait bg color, in case a saved state is restored from the + // launcher. In this case, sfSetPortraitBgColor is not called, thus the + // portrait color will always be 0 (black). + if (portraitBgColor.red == 0 && portraitBgColor.green == 0 && portraitBgColor.blue == 0) + portraitBgColor.green = 255; + if (_vm->_spiritualBarometer > 255) - _vm->_gfx->setPaletteColor(kIHNMColorPortrait, 0xff, 0xff, 0xff); + _vm->_gfx->setPaletteColor(portraitColor, 0xff, 0xff, 0xff); else - _vm->_gfx->setPaletteColor(kIHNMColorPortrait, - _vm->_spiritualBarometer * _vm->_interface->_portraitBgColor.red / 256, - _vm->_spiritualBarometer * _vm->_interface->_portraitBgColor.green / 256, - _vm->_spiritualBarometer * _vm->_interface->_portraitBgColor.blue / 256); + _vm->_gfx->setPaletteColor(portraitColor, + _vm->_spiritualBarometer * portraitBgColor.red / 256, + _vm->_spiritualBarometer * portraitBgColor.green / 256, + _vm->_spiritualBarometer * portraitBgColor.blue / 256); } #endif diff --git a/engines/saga/saga.h b/engines/saga/saga.h index 829425aeaf..01cab21f5d 100644 --- a/engines/saga/saga.h +++ b/engines/saga/saga.h @@ -395,9 +395,7 @@ enum ColorId { kITEColorBlue = 0x93, kITEColorLightBlue94 = 0x94, kITEColorLightBlue96 = 0x96, - kITEColorGreen = 0xba, - - kIHNMColorPortrait = 0xfe + kITEColorGreen = 0xba }; enum KnownColor { diff --git a/engines/saga/sfuncs_ihnm.cpp b/engines/saga/sfuncs_ihnm.cpp index 3fbf3b6e67..fdfd0fdf2c 100644 --- a/engines/saga/sfuncs_ihnm.cpp +++ b/engines/saga/sfuncs_ihnm.cpp @@ -168,17 +168,25 @@ void Script::sfSetChapterPoints(SCRIPTFUNC_PARAMS) { _vm->_ethicsPoints[chapter] = thread->pop(); int16 barometer = thread->pop(); static PalEntry cur_pal[PAL_ENTRIES]; + PalEntry portraitBgColor = _vm->_interface->_portraitBgColor; + byte portraitColor = (_vm->getLanguage() == Common::ES_ESP) ? 253 : 254; _vm->_spiritualBarometer = _vm->_ethicsPoints[chapter] * 256 / barometer; _vm->_scene->setChapterPointsChanged(true); // don't save this music when saving in IHNM + // Set the portrait bg color, in case a saved state is restored from the + // launcher. In this case, sfSetPortraitBgColor is not called, thus the + // portrait color will always be 0 (black). + if (portraitBgColor.red == 0 && portraitBgColor.green == 0 && portraitBgColor.blue == 0) + portraitBgColor.green = 255; + if (_vm->_spiritualBarometer > 255) - _vm->_gfx->setPaletteColor(kIHNMColorPortrait, 0xff, 0xff, 0xff); + _vm->_gfx->setPaletteColor(portraitColor, 0xff, 0xff, 0xff); else - _vm->_gfx->setPaletteColor(kIHNMColorPortrait, - _vm->_spiritualBarometer * _vm->_interface->_portraitBgColor.red / 256, - _vm->_spiritualBarometer * _vm->_interface->_portraitBgColor.green / 256, - _vm->_spiritualBarometer * _vm->_interface->_portraitBgColor.blue / 256); + _vm->_gfx->setPaletteColor(portraitColor, + _vm->_spiritualBarometer * portraitBgColor.red / 256, + _vm->_spiritualBarometer * portraitBgColor.green / 256, + _vm->_spiritualBarometer * portraitBgColor.blue / 256); _vm->_gfx->getCurrentPal(cur_pal); _vm->_gfx->setPalette(cur_pal); |