diff options
author | Benjamin Haisch | 2008-08-11 12:43:00 +0000 |
---|---|---|
committer | Willem Jan Palenstijn | 2011-11-20 22:43:05 +0100 |
commit | dd5567613f4e733b62760c981cb547fe9656fced (patch) | |
tree | f1abfcaa051f6f837a6e5963575a146eb5a9ad44 /engines/toltecs/palette.cpp | |
parent | 21f6dad09a5f773fb4869f604f47e84ac266585c (diff) | |
download | scummvm-rg350-dd5567613f4e733b62760c981cb547fe9656fced.tar.gz scummvm-rg350-dd5567613f4e733b62760c981cb547fe9656fced.tar.bz2 scummvm-rg350-dd5567613f4e733b62760c981cb547fe9656fced.zip |
TOLTECS: - Renamed stuff and cleanups
- Beginnings of the saveload system (incomplete)
Diffstat (limited to 'engines/toltecs/palette.cpp')
-rw-r--r-- | engines/toltecs/palette.cpp | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/engines/toltecs/palette.cpp b/engines/toltecs/palette.cpp index 7c882f1c8a..0f08694db0 100644 --- a/engines/toltecs/palette.cpp +++ b/engines/toltecs/palette.cpp @@ -42,6 +42,8 @@ Palette::Palette(ToltecsEngine *vm) : _vm(vm) { clearFragments(); + memset(_colorTransTable, 0, sizeof(_colorTransTable)); + } Palette::~Palette() { @@ -59,6 +61,16 @@ void Palette::setFullPalette(byte *palette) { _vm->_system->updateScreen(); } +void Palette::getFullPalette(byte *palette) { + byte colors[1024]; + _vm->_system->grabPalette(colors, 0, 256); + for (int i = 0; i < 256; i++) { + palette[i * 3 + 0] = colors[i * 4 + 0] >> 2; + palette[i * 3 + 1] = colors[i * 4 + 1] >> 2; + palette[i * 3 + 2] = colors[i * 4 + 2] >> 2; + } +} + void Palette::setDeltaPalette(byte *palette, byte mask, char deltaValue, int16 count, int16 startIndex) { byte colors[1024]; @@ -154,4 +166,32 @@ void Palette::clearFragments() { _fragments.clear(); } +void Palette::saveState(Common::WriteStream *out) { + + // Save currently active palette + byte palette[768]; + getFullPalette(palette); + out->write(palette, 768); + + out->write(_mainPalette, 768); + out->write(_animPalette, 768); + out->write(_colorTransTable, 256); + + uint16 fragmentCount = _fragments.size(); + out->writeUint16LE(fragmentCount); + for (PaletteFragmentArray::iterator iter = _fragments.begin(); iter != _fragments.end(); iter++) { + PaletteFragment fragment = *iter; + out->writeUint16LE(fragment.id); + out->writeByte(fragment.index); + out->writeByte(fragment.count); + } + out->writeByte(_fragmentIndex); + + +} + +void Palette::loadState(Common::ReadStream *in) { +} + + } // End of namespace Toltecs |