aboutsummaryrefslogtreecommitdiff
path: root/engines/toltecs/palette.cpp
diff options
context:
space:
mode:
authorBenjamin Haisch2008-08-11 12:43:00 +0000
committerWillem Jan Palenstijn2011-11-20 22:43:05 +0100
commitdd5567613f4e733b62760c981cb547fe9656fced (patch)
treef1abfcaa051f6f837a6e5963575a146eb5a9ad44 /engines/toltecs/palette.cpp
parent21f6dad09a5f773fb4869f604f47e84ac266585c (diff)
downloadscummvm-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.cpp40
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