diff options
author | Paul Gilbert | 2014-04-19 22:49:14 -0400 |
---|---|---|
committer | Paul Gilbert | 2014-04-19 22:49:14 -0400 |
commit | 1362414e77bfbd17d7a0224ce5fb7275c793c7c4 (patch) | |
tree | b0b2447e53849b79ee20debbe2b0e0fffaa1742d /engines/mads/scene_data.cpp | |
parent | ad6a80cae796f781e7c8a0e53ad008504c54e266 (diff) | |
download | scummvm-rg350-1362414e77bfbd17d7a0224ce5fb7275c793c7c4.tar.gz scummvm-rg350-1362414e77bfbd17d7a0224ce5fb7275c793c7c4.tar.bz2 scummvm-rg350-1362414e77bfbd17d7a0224ce5fb7275c793c7c4.zip |
MADS: Implement palette animation code
Diffstat (limited to 'engines/mads/scene_data.cpp')
-rw-r--r-- | engines/mads/scene_data.cpp | 32 |
1 files changed, 16 insertions, 16 deletions
diff --git a/engines/mads/scene_data.cpp b/engines/mads/scene_data.cpp index d921465c04..9f4d7d99ec 100644 --- a/engines/mads/scene_data.cpp +++ b/engines/mads/scene_data.cpp @@ -63,16 +63,16 @@ void ARTHeader::load(Common::SeekableReadStream *f) { } f->skip(6 * (256 - palCount)); - // Read unknown??? - palCount = f->readUint16LE(); - for (int i = 0; i < palCount; ++i) { - RGB4 rgb; - rgb._colorCount = f->readByte(); - rgb.g = f->readByte(); - rgb._firstColorIndex = f->readByte(); - rgb.u = f->readByte(); - - _palAnimData.push_back(rgb); + // Read palette animations + int cycleCount = f->readUint16LE(); + for (int i = 0; i < cycleCount; ++i) { + PaletteCycle cycle; + cycle._colorCount = f->readByte(); + cycle._firstListColor = f->readByte(); + cycle._firstColorIndex = f->readByte(); + cycle._ticks = f->readByte(); + + _paletteCycles.push_back(cycle); } } @@ -202,9 +202,9 @@ void SceneInfo::load(int sceneId, int variant, const Common::String &resName, artHeader.load(stream); delete stream; - // Copy out the palette data - for (uint i = 0; i < artHeader._palAnimData.size(); ++i) - _palAnimData.push_back(artHeader._palAnimData[i]); + // Copy out the palette animation data + for (uint i = 0; i < artHeader._paletteCycles.size(); ++i) + _paletteCycles.push_back(artHeader._paletteCycles[i]); if (!(flags & 1)) { if (!_vm->_palette->_paletteUsage.empty()) { @@ -217,9 +217,9 @@ void SceneInfo::load(int sceneId, int variant, const Common::String &resName, if (_usageIndex > 0) { _vm->_palette->_paletteUsage.transform(artHeader._palette); - for (uint i = 0; i < _palAnimData.size(); ++i) { - byte g = _palAnimData[i].g; - _palAnimData[i]._firstColorIndex = artHeader._palette[g]._palIndex; + for (uint i = 0; i < _paletteCycles.size(); ++i) { + byte listColor = _paletteCycles[i]._firstListColor; + _paletteCycles[i]._firstColorIndex = artHeader._palette[listColor]._palIndex; } } } |