aboutsummaryrefslogtreecommitdiff
path: root/engines/fullpipe
diff options
context:
space:
mode:
authorEugene Sandulenko2014-01-02 22:43:51 +0200
committerEugene Sandulenko2014-01-02 22:43:51 +0200
commit9ee4cf899b26e3bc757bf77c4cda3dd3c67f0fd0 (patch)
treec9b803c0342760d72da8de2a8756e5f05566e295 /engines/fullpipe
parent82367c9b4083b52288caece983413c373c84d9ed (diff)
downloadscummvm-rg350-9ee4cf899b26e3bc757bf77c4cda3dd3c67f0fd0.tar.gz
scummvm-rg350-9ee4cf899b26e3bc757bf77c4cda3dd3c67f0fd0.tar.bz2
scummvm-rg350-9ee4cf899b26e3bc757bf77c4cda3dd3c67f0fd0.zip
FULLPIPE: Implement sceneHandler22_handleDown() and smaller ones
Diffstat (limited to 'engines/fullpipe')
-rw-r--r--engines/fullpipe/constants.h5
-rw-r--r--engines/fullpipe/objectnames.h2
-rw-r--r--engines/fullpipe/scenes/scene22.cpp42
3 files changed, 45 insertions, 4 deletions
diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index 6b82165f33..dc586823e0 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -742,6 +742,7 @@ namespace Fullpipe {
// Scene 22
#define ANI_GIRAFFE_MIDDLE 1981
#define ANI_MESHOK 1754
+#define ANI_TABURETTE 1745
#define MSG_SC22_CHECKGMABOOT 4782
#define MSG_SC22_CRANEOUT_GMA 5218
#define MSG_SC22_FROMSTOOL 1799
@@ -751,6 +752,10 @@ namespace Fullpipe {
#define MSG_SC22_SHOWSTOOL 2495
#define QU_MSH_CRANEOUT 1811
#define QU_MSH_CRANEOUT_GMA 5219
+#define QU_SC22_FALLBROOM 1786
+#define QU_SC22_FALLSACK 1791
+#define QU_SC22_FALLSACK_GMA 2613
+#define QU_SC22_SHOWSTOOL 1793
#define QU_MSH_MOVE 1812
#define ST_GRFM_AFTER 3472
#define ST_GRFM_NORM 1983
diff --git a/engines/fullpipe/objectnames.h b/engines/fullpipe/objectnames.h
index 594f0a6a3f..884271b350 100644
--- a/engines/fullpipe/objectnames.h
+++ b/engines/fullpipe/objectnames.h
@@ -230,7 +230,7 @@ namespace Fullpipe {
#define sO_IsGone "\xd3\xe5\xf5\xe0\xeb\xe0" // "Уехала"
#define sO_FallenTwice "\xd3\xef\xe0\xeb \xe4\xe2\xe0" // "Упал два"
#define sO_FallenOnce "\xd3\xef\xe0\xeb \xf0\xe0\xe7" // "Упал раз"
-#define sO_FallenBrush "\xd3\xef\xe0\xeb\xe0 \xf9\xe5\xf2\xea\xe0" // "Упала щетка"
+#define sO_BrushHasFallen "\xd3\xef\xe0\xeb\xe0 \xf9\xe5\xf2\xea\xe0" // "Упала щетка"
#define sO_NotBroken "\xd6\xe5\xeb\xe0" // "Цела"
#define sO_IsScratchingBelly "\xd7\xe5\xf8\xe5\xf2 \xef\xf3\xe7\xee" // "Чешет пузо"
#define sO_Level0 "\xdd\xf2\xe0\xe6 0" // "Этаж 0"
diff --git a/engines/fullpipe/scenes/scene22.cpp b/engines/fullpipe/scenes/scene22.cpp
index b57cf9399b..8e1cd9e9df 100644
--- a/engines/fullpipe/scenes/scene22.cpp
+++ b/engines/fullpipe/scenes/scene22.cpp
@@ -106,15 +106,51 @@ void scene22_setBagState() {
}
void sceneHandler22_showStool() {
- warning("STUB: sceneHandler22_showStool()");
+ chainQueue(QU_SC22_SHOWSTOOL, 0);
}
void sceneHandler22and23_hideStool() {
- warning("STUB: sceneHandler22and23_hideStool()");
+ g_fp->_currentScene->getStaticANIObject1ById(ANI_TABURETTE, -1)->hide();
}
void sceneHandler22_handleDown() {
- warning("STUB: sceneHandler22_handleDown()");
+ if (g_vars->scene22_bag->_statics->_staticsId == ST_MSH_SIT) {
+ chainQueue(QU_MSH_CRANEOUT, 1);
+ g_vars->scene22_var08 = 0;
+ } else {
+ ++g_vars->scene22_var11;
+
+ int qid;
+
+ if (g_vars->scene22_var11 == 3) {
+ chainQueue(QU_SC22_FALLSACK_GMA, 1);
+ qid = QU_SC22_FALLBROOM;
+ } else {
+ qid = QU_SC22_FALLSACK;
+ }
+
+ chainQueue(qid, 1);
+
+ int state;
+
+ if (g_vars->scene22_var11) {
+ if (g_vars->scene22_var11 == 1) {
+ state = g_fp->getObjectEnumState(sO_Bag_22, sO_FallenOnce);
+ } else if (g_vars->scene22_var11 == 2) {
+ state = g_fp->getObjectEnumState(sO_Bag_22, sO_FallenTwice);
+ } else {
+ state = g_fp->getObjectEnumState(sO_Bag_22, sO_BrushHasFallen);
+ }
+ } else {
+ state = g_fp->getObjectEnumState(sO_Bag_22, sO_NotFallen);
+ }
+
+ g_fp->setObjectState(sO_Bag_22, state);
+ }
+ g_vars->scene22_var10 = 1;
+
+ g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene22_bag, ST_MSH_SIT, QU_MSH_CRANEOUT, 1);
+ g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene22_bag, ST_MSH_SIT, QU_MSH_MOVE, 0);
}
void sceneHandler22_sub01(ExCommand *cmd) {