diff options
author | Paul Gilbert | 2011-08-11 22:03:57 +1000 |
---|---|---|
committer | Paul Gilbert | 2011-08-11 22:03:57 +1000 |
commit | c9034110363ebc031a37784af913ba107411376d (patch) | |
tree | 49ff46325ca00d950b4b4887da7e31a95f824a7d /engines/tsage | |
parent | 76a18b247b4ee64725f1ae5cae93d5e82a248f53 (diff) | |
download | scummvm-rg350-c9034110363ebc031a37784af913ba107411376d.tar.gz scummvm-rg350-c9034110363ebc031a37784af913ba107411376d.tar.bz2 scummvm-rg350-c9034110363ebc031a37784af913ba107411376d.zip |
TSAGE: Added support for reverse palette fading
Diffstat (limited to 'engines/tsage')
-rw-r--r-- | engines/tsage/core.cpp | 34 | ||||
-rw-r--r-- | engines/tsage/core.h | 15 |
2 files changed, 45 insertions, 4 deletions
diff --git a/engines/tsage/core.cpp b/engines/tsage/core.cpp index d0075d5acf..52c1a5c8be 100644 --- a/engines/tsage/core.cpp +++ b/engines/tsage/core.cpp @@ -1161,6 +1161,20 @@ void PaletteFader::remove() { action->signal(); } +void PaletteFader::setPalette(ScenePalette *palette, int step) { + if (step < 0) { + // Reverse step means moving from dest palette to source, so swap the two palettes + byte tempPal[256 * 3]; + Common::copy(&palette->_palette[0], &palette->_palette[256 * 3], &tempPal[0]); + Common::copy(&this->_palette[0], &this->_palette[256 * 3], &palette->_palette[0]); + Common::copy(&tempPal[0], &tempPal[256 * 3], &this->_palette[0]); + + step = -step; + } + + PaletteModifierCached::setPalette(palette, step); +} + /*--------------------------------------------------------------------------*/ ScenePalette::ScenePalette() { @@ -1314,7 +1328,7 @@ PaletteRotation *ScenePalette::addRotation(int start, int end, int rotationMode, return obj; } -PaletteFader *ScenePalette::addFader(const byte *arrBufferRGB, int palSize, int percent, Action *action) { +PaletteFader *ScenePalette::addFader(const byte *arrBufferRGB, int palSize, int step, Action *action) { PaletteFader *fader = new PaletteFader(); fader->_action = action; for (int i = 0; i < 256 * 3; i += 3) { @@ -1326,7 +1340,7 @@ PaletteFader *ScenePalette::addFader(const byte *arrBufferRGB, int palSize, int arrBufferRGB += 3; } - fader->setPalette(this, percent); + fader->setPalette(this, step); _globals->_scenePalette._listeners.push_back(fader); return fader; } @@ -2274,6 +2288,22 @@ void SceneObject::setup(int visage, int stripFrameNum, int frameNum, int posX, i /*--------------------------------------------------------------------------*/ +void SceneObjectExt2::postInit(SceneObjectList *OwnerList) { + _v8A = -1; + _v8C = -1; + _v8E = -1; + SceneObject::postInit(); +} + +void SceneObjectExt2::synchronize(Serializer &s) { + SceneObject::synchronize(s); + s.syncAsSint16LE(_v8A); + s.syncAsSint16LE(_v8C); + s.syncAsSint16LE(_v8E); +} + +/*--------------------------------------------------------------------------*/ + void SceneObjectList::draw() { Common::Array<SceneObject *> objList; int paneNum = 0; diff --git a/engines/tsage/core.h b/engines/tsage/core.h index b86e2f63fe..959f96bf34 100644 --- a/engines/tsage/core.h +++ b/engines/tsage/core.h @@ -287,7 +287,7 @@ public: PaletteModifierCached(); - void setPalette(ScenePalette *palette, int step); + virtual void setPalette(ScenePalette *palette, int step); virtual Common::String getClassName() { return "PaletteModifierCached"; } virtual void synchronize(Serializer &s); }; @@ -323,6 +323,7 @@ public: virtual void synchronize(Serializer &s); virtual void signal(); virtual void remove(); + virtual void setPalette(ScenePalette *palette, int step); }; /*--------------------------------------------------------------------------*/ @@ -356,7 +357,7 @@ public: void clearListeners(); void fade(const byte *adjustData, bool fullAdjust, int percent); PaletteRotation *addRotation(int start, int end, int rotationMode, int duration = 0, Action *action = NULL); - PaletteFader *addFader(const byte *arrBufferRGB, int palSize, int percent, Action *action); + PaletteFader *addFader(const byte *arrBufferRGB, int palSize, int step, Action *action); static void changeBackground(const Rect &bounds, FadeMode fadeMode); @@ -569,6 +570,16 @@ public: virtual Common::String getClassName() { return "SceneObjectExt"; } }; +class SceneObjectExt2: public SceneObject { +public: + int _v88, _v8A, _v8C, _v8E; + + virtual Common::String getClassName() { return "BF100Object"; } + virtual void synchronize(Serializer &s); + virtual void postInit(SceneObjectList *OwnerList = NULL); +}; + + class SceneText : public SceneObject { public: int _fontNumber; |