aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
Diffstat (limited to 'engines')
-rw-r--r--engines/fullpipe/scenes/scene18and19.cpp13
-rw-r--r--engines/fullpipe/statics.cpp5
-rw-r--r--engines/fullpipe/statics.h1
3 files changed, 18 insertions, 1 deletions
diff --git a/engines/fullpipe/scenes/scene18and19.cpp b/engines/fullpipe/scenes/scene18and19.cpp
index 93bf00077c..0f03a68cad 100644
--- a/engines/fullpipe/scenes/scene18and19.cpp
+++ b/engines/fullpipe/scenes/scene18and19.cpp
@@ -49,7 +49,18 @@ struct Swinger {
};
void scene18_preload() {
- warning("WARNING: scene18_preload()");
+ g_fp->_scene3 = 0;
+
+ for (SceneTagList::iterator s = g_fp->_gameProject->_sceneTagList->begin(); s != g_fp->_gameProject->_sceneTagList->end(); ++s) {
+ if (s->_sceneId == SC_18) {
+ g_fp->_scene3 = s->_scene;
+ s->_scene = 0;
+
+ g_fp->_scene3->getStaticANIObject1ById(ANI_WHIRLIGIG_18, -1)->freeMovementsPixelData();
+
+ break;
+ }
+ }
}
void scene19_preload(Scene *sc, int key) {
diff --git a/engines/fullpipe/statics.cpp b/engines/fullpipe/statics.cpp
index bdb46b9b3a..86082c620d 100644
--- a/engines/fullpipe/statics.cpp
+++ b/engines/fullpipe/statics.cpp
@@ -509,6 +509,11 @@ void StaticANIObject::loadMovementsPixelData() {
((Movement *)_movements[i])->loadPixelData();
}
+void StaticANIObject::freeMovementsPixelData() {
+ for (uint i = 0; i < _movements.size(); i++)
+ ((Movement *)_movements[i])->freePixelData();
+}
+
Statics *StaticANIObject::addReverseStatics(Statics *st) {
Statics *res = getStaticsById(st->_staticsId ^ 0x4000);
diff --git a/engines/fullpipe/statics.h b/engines/fullpipe/statics.h
index b7eee2e60e..8328e7679b 100644
--- a/engines/fullpipe/statics.h
+++ b/engines/fullpipe/statics.h
@@ -224,6 +224,7 @@ public:
void initMovements();
void loadMovementsPixelData();
+ void freeMovementsPixelData();
void preloadMovements(MovTable *mt);
void setSomeDynamicPhaseIndex(int val) { _someDynamicPhaseIndex = val; }