aboutsummaryrefslogtreecommitdiff
path: root/engines/tsage
diff options
context:
space:
mode:
authorPaul Gilbert2011-08-11 22:03:57 +1000
committerPaul Gilbert2011-08-11 22:03:57 +1000
commitc9034110363ebc031a37784af913ba107411376d (patch)
tree49ff46325ca00d950b4b4887da7e31a95f824a7d /engines/tsage
parent76a18b247b4ee64725f1ae5cae93d5e82a248f53 (diff)
downloadscummvm-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.cpp34
-rw-r--r--engines/tsage/core.h15
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;