diff options
author | Paul Gilbert | 2014-03-12 20:54:50 -0400 |
---|---|---|
committer | Paul Gilbert | 2014-03-12 20:54:50 -0400 |
commit | d9bb593b5f39f31f078d9b479d569c56c6eda563 (patch) | |
tree | 9efa5122696249297de5b5d1695a850c38923265 /engines/mads/palette.cpp | |
parent | 98f7ba964369b128f65755c918f4c5e6d1d16dbe (diff) | |
download | scummvm-rg350-d9bb593b5f39f31f078d9b479d569c56c6eda563.tar.gz scummvm-rg350-d9bb593b5f39f31f078d9b479d569c56c6eda563.tar.bz2 scummvm-rg350-d9bb593b5f39f31f078d9b479d569c56c6eda563.zip |
MADS: Implemented PaletteUsage::updateUsage
Diffstat (limited to 'engines/mads/palette.cpp')
-rw-r--r-- | engines/mads/palette.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/engines/mads/palette.cpp b/engines/mads/palette.cpp index aeb97d2ff2..7e0d5bbdb5 100644 --- a/engines/mads/palette.cpp +++ b/engines/mads/palette.cpp @@ -304,6 +304,30 @@ void PaletteUsage::transform(Common::Array<RGB6> &palette) { } } +void PaletteUsage::updateUsage(Common::Array<int> &usageList, int sceneUsageIndex) { + uint32 mask1 = 0xFFFFFFFF; + uint32 mask2 = 0; + + for (uint idx = 0; idx < usageList.size(); ++idx) { + uint32 bitMask = 1 << usageList[idx]; + mask1 ^= bitMask; + mask2 |= bitMask; + _vm->_palette->_rgbList[usageList[idx]] = 0; + } + + uint32 mask3 = 1 << sceneUsageIndex; + + for (uint idx = 0; idx < PALETTE_COUNT; ++idx) { + uint32 mask = mask2 & _vm->_palette->_palFlags[idx]; + if (mask) { + _vm->_palette->_palFlags[idx] = (_vm->_palette->_palFlags[idx] & + mask1) | mask3; + } + } + + _vm->_palette->_rgbList[sceneUsageIndex] = -1; +} + int PaletteUsage::getGamePalFreeIndex(int *palIndex) { *palIndex = -1; int count = 0; |