aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEugene Sandulenko2013-11-29 09:29:34 +0100
committerEugene Sandulenko2013-11-29 09:29:34 +0100
commitbe7325c309766721403bd4a21b8df4bbc514f4dd (patch)
tree15447d73cc29f6b7791a3bc7359c9789bf7d845b
parentba52b4aca701bdf7bead7a50baccee9868a3406c (diff)
downloadscummvm-rg350-be7325c309766721403bd4a21b8df4bbc514f4dd.tar.gz
scummvm-rg350-be7325c309766721403bd4a21b8df4bbc514f4dd.tar.bz2
scummvm-rg350-be7325c309766721403bd4a21b8df4bbc514f4dd.zip
FULLPIPE: Implement sceneHandler04_dropBottle()
-rw-r--r--engines/fullpipe/constants.h1
-rw-r--r--engines/fullpipe/scenes.cpp1
-rw-r--r--engines/fullpipe/scenes.h5
-rw-r--r--engines/fullpipe/scenes/scene04.cpp27
4 files changed, 30 insertions, 4 deletions
diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index 91593684e4..e1ec51a947 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -259,6 +259,7 @@ namespace Fullpipe {
#define ST_EGTR_MID1 2863
#define ST_EGTR_MID2 2869
#define ST_EGTR_SLIM 336
+#define ST_HND_EMPTY 603
#define ST_IN1MAN_SLEEP 5112
#define ST_KZW_EMPTY 498
#define ST_LBN_0N 2832
diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp
index 5b55d40752..9d5d168395 100644
--- a/engines/fullpipe/scenes.cpp
+++ b/engines/fullpipe/scenes.cpp
@@ -96,6 +96,7 @@ Vars::Vars() {
scene04_var19 = 0;
scene04_var20 = 0;
scene04_var24 = 0;
+ scene04_var26 = 0;
selector = 0;
}
diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h
index 217cfd9a5c..ed0da0a9db 100644
--- a/engines/fullpipe/scenes.h
+++ b/engines/fullpipe/scenes.h
@@ -90,8 +90,8 @@ public:
Common::Point scene04_jumpRotateKozyawki[20];
Common::List<StaticANIObject *> scene04_kozyawkiObjList;
- Common::Array<GameObject *> scene04_bottleObjList;
- Common::Array<StaticANIObject *> scene04_kozyawkiAni;
+ Common::List<GameObject *> scene04_bottleObjList;
+ Common::List<StaticANIObject *> scene04_kozyawkiAni;
int scene04_ladder;
bool scene04_coinPut;
@@ -122,6 +122,7 @@ public:
int scene04_var19;
int scene04_var20;
StaticANIObject *scene04_var24;
+ int scene04_var26;
PictureObject *selector;
};
diff --git a/engines/fullpipe/scenes/scene04.cpp b/engines/fullpipe/scenes/scene04.cpp
index 30b5f0a254..f2fbfd3ef4 100644
--- a/engines/fullpipe/scenes/scene04.cpp
+++ b/engines/fullpipe/scenes/scene04.cpp
@@ -160,7 +160,7 @@ void scene04_initScene(Scene *sc) {
}
g_vars->scene04_var02 = 0;
- g_vars->scene04_soundPlaying = 0;
+ g_vars->scene04_soundPlaying = false;
g_vars->scene04_var04 = 0;
g_vars->scene04_walkingKozyawka = 0;
g_vars->scene04_var06 = 2;
@@ -283,7 +283,30 @@ void sceneHandler04_clickPlank() {
}
void sceneHandler04_dropBottle() {
- warning("sceneHandler04_dropBottle()");
+ g_vars->scene04_var12 = 1;
+ g_vars->scene04_var26 = 10;
+ g_vars->scene04_var06 = 0;
+
+ while (g_vars->scene04_kozyawkiAni.size()) {
+ StaticANIObject *koz = g_vars->scene04_kozyawkiAni.front();
+ g_vars->scene04_kozyawkiAni.pop_front();
+
+ for (Common::List<GameObject *>::iterator it = g_vars->scene04_bottleObjList.begin(); it != g_vars->scene04_bottleObjList.end(); ++it)
+ if (*it == koz) {
+ g_vars->scene04_bottleObjList.erase(it);
+ break;
+ }
+
+ koz->queueMessageQueue(0);
+ koz->hide();
+
+ g_vars->scene04_kozyawkiObjList.push_back(koz);
+ }
+
+ g_vars->scene04_hand->changeStatics2(ST_HND_EMPTY);
+
+ g_vars->scene04_hand->setOXY(429, 21);
+ g_vars->scene04_hand->_priority = 15;
}
void sceneHandler04_gotoLadder(int par) {