[Scummvm-cvs-logs] scummvm master -> fdad3971e5092e79794900ecc3e89d90a51a4b83
sev-
sev at scummvm.org
Thu Jan 2 21:58:01 CET 2014
This automated email contains information about 5 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
b3a9832b6f FULLPIPE: Plug scene22 in
073fe02b38 FULLPIPE: Implement scene22_setBagState() and updateCursor()
82367c9b40 FULLPIPE: Implement sceneHandler22()
9ee4cf899b FULLPIPE: Implement sceneHandler22_handleDown() and smaller ones
fdad3971e5 FULLPIPE: Implement sceneHandler22_fromStool()
Commit: b3a9832b6f4821092b99defb4b1e5f59a91755d0
https://github.com/scummvm/scummvm/commit/b3a9832b6f4821092b99defb4b1e5f59a91755d0
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-01-02T11:01:34-08:00
Commit Message:
FULLPIPE: Plug scene22 in
Changed paths:
engines/fullpipe/constants.h
engines/fullpipe/module.mk
engines/fullpipe/scenes.cpp
engines/fullpipe/scenes.h
engines/fullpipe/scenes/scene22.cpp
diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index 03c9984..a25e974 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -737,6 +737,12 @@ namespace Fullpipe {
#define ST_GRFB_SIT 1687
#define ST_GRFB_HANG 1638
+// Scene 22
+#define ANI_GIRAFFE_MIDDLE 1981
+#define ANI_MESHOK 1754
+#define ST_GRFM_AFTER 3472
+#define ST_GRFM_NORM 1983
+
// Scene 24
#define ANI_DROP_24 3505
#define ANI_INV_HAMMER 884
diff --git a/engines/fullpipe/module.mk b/engines/fullpipe/module.mk
index 245cbae..6562e9a 100644
--- a/engines/fullpipe/module.mk
+++ b/engines/fullpipe/module.mk
@@ -42,6 +42,7 @@ MODULE_OBJS = \
scenes/scene17.o \
scenes/scene20.o \
scenes/scene21.o \
+ scenes/scene22.o \
scenes/scene24.o \
scenes/scene30.o \
scenes/scene31.o \
diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp
index 65d394f..483d3cf 100644
--- a/engines/fullpipe/scenes.cpp
+++ b/engines/fullpipe/scenes.cpp
@@ -257,6 +257,18 @@ Vars::Vars() {
scene21_wigglePos = 0.0;
scene21_wiggleTrigger = 0;
+ scene22_var01 = 200;
+ scene22_var02 = 200;
+ scene22_var03 = 300;
+ scene22_var04 = 300;
+ scene22_bag = 0;
+ scene22_giraffeMiddle = 0;
+ scene22_var07 = 0;
+ scene22_var08 = 0;
+ scene22_var09 = 0;
+ scene22_var10 = 1;
+ scene22_var11 = 1;
+
scene24_jetIsOn = false;
scene24_flowIsLow = false;
scene24_waterIsOn = false;
diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h
index e3534c8..49c25ac 100644
--- a/engines/fullpipe/scenes.h
+++ b/engines/fullpipe/scenes.h
@@ -361,6 +361,18 @@ public:
double scene21_wigglePos;
bool scene21_wiggleTrigger;
+ int scene22_var01;
+ int scene22_var02;
+ int scene22_var03;
+ int scene22_var04;
+ StaticANIObject *scene22_bag;
+ StaticANIObject *scene22_giraffeMiddle;
+ int scene22_var07;
+ int scene22_var08;
+ int scene22_var09;
+ int scene22_var10;
+ int scene22_var11;
+
bool scene24_jetIsOn;
bool scene24_flowIsLow;
bool scene24_waterIsOn;
diff --git a/engines/fullpipe/scenes/scene22.cpp b/engines/fullpipe/scenes/scene22.cpp
index 970f5b3..7b36c63 100644
--- a/engines/fullpipe/scenes/scene22.cpp
+++ b/engines/fullpipe/scenes/scene22.cpp
@@ -41,12 +41,12 @@ void scene22_initScene(Scene *sc) {
g_vars->scene22_var02 = 200;
g_vars->scene22_var03 = 300;
g_vars->scene22_var04 = 300;
- g_vars->scene22_var05 = Scene_getStaticANIObject1ById(sc, ANI_MESHOK, -1);
+ g_vars->scene22_bag = sc->getStaticANIObject1ById(ANI_MESHOK, -1);
Scene *oldsc = g_fp->_currentScene;
g_fp->_currentScene = sc;
- g_vars->scene22_giraffeMiddle = sc->getStaticANIObject1ById(sc, ANI_GIRAFFE_MIDDLE, -1);
+ g_vars->scene22_giraffeMiddle = sc->getStaticANIObject1ById(ANI_GIRAFFE_MIDDLE, -1);
g_vars->scene22_var07 = 0;
g_vars->scene22_var08 = 0;
g_vars->scene22_var09 = 0;
Commit: 073fe02b38f5aef5b203422c97a6b635c1a9e3c9
https://github.com/scummvm/scummvm/commit/073fe02b38f5aef5b203422c97a6b635c1a9e3c9
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-01-02T11:11:37-08:00
Commit Message:
FULLPIPE: Implement scene22_setBagState() and updateCursor()
Changed paths:
engines/fullpipe/constants.h
engines/fullpipe/scenes/scene22.cpp
diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index a25e974..0ac3cad 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -732,6 +732,8 @@ namespace Fullpipe {
// Scene 21
#define ANI_GIRAFFE_BOTTOM 1633
+#define ANI_INV_BOX 890
+#define ANI_INV_STOOL 1780
#define MSG_SC21_UPDATEASS 4211
#define PIC_SC21_DTRUBA 1823
#define ST_GRFB_SIT 1687
@@ -740,8 +742,11 @@ namespace Fullpipe {
// Scene 22
#define ANI_GIRAFFE_MIDDLE 1981
#define ANI_MESHOK 1754
+#define QU_MSH_CRANEOUT 1811
+#define QU_MSH_MOVE 1812
#define ST_GRFM_AFTER 3472
#define ST_GRFM_NORM 1983
+#define ST_MSH_SIT 1756
// Scene 24
#define ANI_DROP_24 3505
diff --git a/engines/fullpipe/scenes/scene22.cpp b/engines/fullpipe/scenes/scene22.cpp
index 7b36c63..d28ea92 100644
--- a/engines/fullpipe/scenes/scene22.cpp
+++ b/engines/fullpipe/scenes/scene22.cpp
@@ -74,4 +74,35 @@ void scene22_initScene(Scene *sc) {
g_fp->initArcadeKeys("SC_22");
}
+int scene22_updateCursor() {
+ g_fp->updateCursorCommon();
+
+ if (g_fp->_objectIdAtCursor != ANI_HANDLE_L)
+ return g_fp->_cursorId;
+
+ int sel = g_fp->_inventory->getSelectedItemId();
+
+ if (!sel) {
+ g_fp->_cursorId = PIC_CSR_ITN;
+ return g_fp->_cursorId;
+ }
+
+ if (g_vars->scene22_var07 || (sel != ANI_INV_STOOL && sel != ANI_INV_BOX))
+ ; //empty
+ else
+ g_fp->_cursorId = PIC_CSR_ITN_INV;
+
+ return g_fp->_cursorId;
+}
+
+void scene22_setBagState() {
+ if (g_vars->scene22_var10) {
+ 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);
+ } else {
+ g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene22_bag, ST_MSH_SIT, QU_MSH_CRANEOUT, 0);
+ g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene22_bag, ST_MSH_SIT, QU_MSH_MOVE, 1);
+ }
+}
+
} // End of namespace Fullpipe
Commit: 82367c9b4083b52288caece983413c373c84d9ed
https://github.com/scummvm/scummvm/commit/82367c9b4083b52288caece983413c373c84d9ed
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-01-02T12:32:41-08:00
Commit Message:
FULLPIPE: Implement sceneHandler22()
Changed paths:
engines/fullpipe/constants.h
engines/fullpipe/objectnames.h
engines/fullpipe/scenes/scene15.cpp
engines/fullpipe/scenes/scene22.cpp
diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index 0ac3cad..6b82165 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -742,7 +742,15 @@ namespace Fullpipe {
// Scene 22
#define ANI_GIRAFFE_MIDDLE 1981
#define ANI_MESHOK 1754
+#define MSG_SC22_CHECKGMABOOT 4782
+#define MSG_SC22_CRANEOUT_GMA 5218
+#define MSG_SC22_FROMSTOOL 1799
+#define MSG_SC22_HANDLEDOWN 1796
+#define MSG_SC22_HIDESTOOL 2503
+#define MSG_SC22_ONSTOOL 1798
+#define MSG_SC22_SHOWSTOOL 2495
#define QU_MSH_CRANEOUT 1811
+#define QU_MSH_CRANEOUT_GMA 5219
#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 06888b6..594f0a6 100644
--- a/engines/fullpipe/objectnames.h
+++ b/engines/fullpipe/objectnames.h
@@ -166,7 +166,7 @@ namespace Fullpipe {
#define sO_FullPipe "\xcf\xee\xeb\xed\xe0\xff \xd2\xf0\xf3\xe1\xe0" // "Полная Труба"
#define sO_RightStairs_9 "\xcf\xf0\xe0\xe2\xe0\xff \xeb\xe5\xf1\xf2\xed\xe8\xf6\xe0_9" // "Правая лестница_9"
#define sO_RightPipe_17 "\xcf\xf0\xe0\xe2\xe0\xff \xf2\xf0\xf3\xe1\xe0_17" // "Правая труба_17"
-#define sO_Available "\xcf\xf0\xe8\xf1\xf3\xf2\xf1\xf2\xe2\xf3\xe5\xf2" // "Присутствует"
+#define sO_IsPresent "\xcf\xf0\xe8\xf1\xf3\xf2\xf1\xf2\xe2\xf3\xe5\xf2" // "Присутствует"
#define sO_GulpedEgg "\xcf\xf0\xee\xe3\xeb\xee\xf7\xe5\xed\xed\xee\xe5 \xff\xe9\xf6\xee" // "Проглоченное яйцо"
#define sO_GulpedEggs "\xcf\xf0\xee\xe3\xeb\xee\xf7\xe5\xed\xed\xfb\xe5 \xff\xe9\xf6\xe0" // "Проглоченные яйца"
#define sO_BellyInflater "\xcf\xf3\xe7\xee\xe4\xf3\xe2" // "Пузодув"
diff --git a/engines/fullpipe/scenes/scene15.cpp b/engines/fullpipe/scenes/scene15.cpp
index 8310fc8..fa8db64 100644
--- a/engines/fullpipe/scenes/scene15.cpp
+++ b/engines/fullpipe/scenes/scene15.cpp
@@ -82,7 +82,7 @@ void scene15_initScene(Scene *sc) {
g_vars->scene15_ladder = sc->getPictureObjectById(PIC_SC15_LADDER, 0);
g_vars->scene15_boot = sc->getStaticANIObject1ById(ANI_BOOT_15, -1);
- if (g_fp->getObjectState(sO_Boot_15) != g_fp->getObjectEnumState(sO_Boot_15, sO_Available))
+ if (g_fp->getObjectState(sO_Boot_15) != g_fp->getObjectEnumState(sO_Boot_15, sO_IsPresent))
g_vars->scene15_boot->_flags &= 0xFFFB;
g_fp->_currentScene = oldsc;
diff --git a/engines/fullpipe/scenes/scene22.cpp b/engines/fullpipe/scenes/scene22.cpp
index d28ea92..b57cf93 100644
--- a/engines/fullpipe/scenes/scene22.cpp
+++ b/engines/fullpipe/scenes/scene22.cpp
@@ -105,4 +105,123 @@ void scene22_setBagState() {
}
}
+void sceneHandler22_showStool() {
+ warning("STUB: sceneHandler22_showStool()");
+}
+
+void sceneHandler22and23_hideStool() {
+ warning("STUB: sceneHandler22and23_hideStool()");
+}
+
+void sceneHandler22_handleDown() {
+ warning("STUB: sceneHandler22_handleDown()");
+}
+
+void sceneHandler22_sub01(ExCommand *cmd) {
+ warning("STUB: sceneHandler22_sub01(cmd)");
+}
+
+void sceneHandler22_sub02(ExCommand *cmd) {
+ warning("STUB: sceneHandler22_sub02(cmd)");
+}
+
+
+int sceneHandler22(ExCommand *cmd) {
+ if (cmd->_messageKind != 17)
+ return 0;
+
+ switch (cmd->_messageNum) {
+ case MSG_SC22_CRANEOUT_GMA:
+ chainQueue(QU_MSH_CRANEOUT_GMA, 1);
+ break;
+
+ case MSG_SC22_CHECKGMABOOT:
+ if (g_fp->getObjectState(sO_Grandma) == g_fp->getObjectEnumState(sO_Grandma, sO_In_15))
+ g_fp->setObjectState(sO_Boot_15, g_fp->getObjectEnumState(sO_Boot_15, sO_IsPresent));
+
+ break;
+
+ case MSG_SC22_SHOWSTOOL:
+ sceneHandler22_showStool();
+ break;
+
+ case MSG_SC22_HIDESTOOL:
+ sceneHandler22and23_hideStool();
+ break;
+
+ case MSG_SC22_FROMSTOOL:
+ g_vars->scene22_var07 = 0;
+ g_vars->scene22_var08 = 0;
+
+ getCurrSceneSc2MotionController()->setEnabled();
+ g_fp->_behaviorManager->setFlagByStaticAniObject(g_fp->_aniMan, 1);
+ break;
+
+ case MSG_SC22_ONSTOOL:
+ g_vars->scene22_var07 = 1;
+ getCurrSceneSc2MotionController()->clearEnabled();
+ g_fp->_behaviorManager->setFlagByStaticAniObject(g_fp->_aniMan, 0);
+ break;
+
+ case MSG_SC22_HANDLEDOWN:
+ sceneHandler22_handleDown();
+ break;
+
+ case 29:
+ if (!g_vars->scene22_var08) {
+ StaticANIObject *ani = g_fp->_currentScene->getStaticANIObjectAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
+ if (ani && ani->_id == ANI_HANDLE_L) {
+ sceneHandler22_sub02(cmd);
+ return 0;
+ }
+ if (!g_vars->scene22_var07) {
+ if (!ani || !canInteractAny(g_fp->_aniMan, ani, cmd->_keyCode)) {
+ int picId = g_fp->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
+ PictureObject *pic = g_fp->_currentScene->getPictureObjectById(picId, 0);
+
+ if (!pic || !canInteractAny(g_fp->_aniMan, pic, cmd->_keyCode)) {
+ if ((g_fp->_sceneRect.right - cmd->_sceneClickX < 47 && g_fp->_sceneRect.right < g_fp->_sceneWidth - 1)
+ || (cmd->_sceneClickX - g_fp->_sceneRect.left < 47 && g_fp->_sceneRect.left > 0)) {
+ g_fp->processArcade(cmd);
+ return 0;
+ }
+ }
+ }
+ return 0;
+ }
+ if (g_fp->_aniMan->_statics->_staticsId == ST_MAN_RIGHT && !g_fp->_aniMan->_movement) {
+ sceneHandler22_sub01(cmd);
+
+ return 0;
+ }
+ }
+
+ cmd->_messageKind = 0;
+ break;
+
+ case 33:
+ if (g_fp->_aniMan2) {
+ int x = g_fp->_aniMan2->_ox;
+
+ if (x <= g_fp->_sceneWidth - 460) {
+ if (x < g_fp->_sceneRect.left + g_vars->scene22_var01)
+ g_fp->_currentScene->_x = x - g_vars->scene22_var03 - g_fp->_sceneRect.left;
+ } else {
+ g_fp->_currentScene->_x = g_fp->_sceneWidth - x;
+ }
+
+ if (x > g_fp->_sceneRect.right - g_vars->scene22_var01 )
+ g_fp->_currentScene->_x = x + g_vars->scene22_var03 - g_fp->_sceneRect.right;
+
+ g_fp->_behaviorManager->updateBehaviors();
+
+ g_fp->startSceneTrack();
+ }
+
+ break;
+ }
+
+ return 0;
+}
+
} // End of namespace Fullpipe
Commit: 9ee4cf899b26e3bc757bf77c4cda3dd3c67f0fd0
https://github.com/scummvm/scummvm/commit/9ee4cf899b26e3bc757bf77c4cda3dd3c67f0fd0
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-01-02T12:43:51-08:00
Commit Message:
FULLPIPE: Implement sceneHandler22_handleDown() and smaller ones
Changed paths:
engines/fullpipe/constants.h
engines/fullpipe/objectnames.h
engines/fullpipe/scenes/scene22.cpp
diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index 6b82165..dc58682 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 594f0a6..884271b 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 b57cf93..8e1cd9e 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) {
Commit: fdad3971e5092e79794900ecc3e89d90a51a4b83
https://github.com/scummvm/scummvm/commit/fdad3971e5092e79794900ecc3e89d90a51a4b83
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-01-02T12:56:24-08:00
Commit Message:
FULLPIPE: Implement sceneHandler22_fromStool()
Changed paths:
engines/fullpipe/constants.h
engines/fullpipe/scenes/scene22.cpp
diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index dc58682..96abc3a 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -755,6 +755,7 @@ namespace Fullpipe {
#define QU_SC22_FALLBROOM 1786
#define QU_SC22_FALLSACK 1791
#define QU_SC22_FALLSACK_GMA 2613
+#define QU_SC22_FROMSTOOL 1800
#define QU_SC22_SHOWSTOOL 1793
#define QU_MSH_MOVE 1812
#define ST_GRFM_AFTER 3472
diff --git a/engines/fullpipe/scenes/scene22.cpp b/engines/fullpipe/scenes/scene22.cpp
index 8e1cd9e..f4c6009 100644
--- a/engines/fullpipe/scenes/scene22.cpp
+++ b/engines/fullpipe/scenes/scene22.cpp
@@ -153,15 +153,20 @@ void sceneHandler22_handleDown() {
g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene22_bag, ST_MSH_SIT, QU_MSH_MOVE, 0);
}
-void sceneHandler22_sub01(ExCommand *cmd) {
- warning("STUB: sceneHandler22_sub01(cmd)");
+void sceneHandler22_fromStool(ExCommand *cmd) {
+ if (g_fp->_aniMan->isIdle() && !(g_fp->_aniMan->_flags & 0x100)) {
+ MessageQueue *mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC22_FROMSTOOL), 0, 0);
+
+ mq->addExCommandToEnd(new ExCommand(cmd));
+ mq->setFlags(mq->getFlags() | 1);
+ mq->chain(0);
+ }
}
void sceneHandler22_sub02(ExCommand *cmd) {
warning("STUB: sceneHandler22_sub02(cmd)");
}
-
int sceneHandler22(ExCommand *cmd) {
if (cmd->_messageKind != 17)
return 0;
@@ -206,10 +211,12 @@ int sceneHandler22(ExCommand *cmd) {
case 29:
if (!g_vars->scene22_var08) {
StaticANIObject *ani = g_fp->_currentScene->getStaticANIObjectAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
+
if (ani && ani->_id == ANI_HANDLE_L) {
sceneHandler22_sub02(cmd);
return 0;
}
+
if (!g_vars->scene22_var07) {
if (!ani || !canInteractAny(g_fp->_aniMan, ani, cmd->_keyCode)) {
int picId = g_fp->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
@@ -225,8 +232,9 @@ int sceneHandler22(ExCommand *cmd) {
}
return 0;
}
+
if (g_fp->_aniMan->_statics->_staticsId == ST_MAN_RIGHT && !g_fp->_aniMan->_movement) {
- sceneHandler22_sub01(cmd);
+ sceneHandler22_fromStool(cmd);
return 0;
}
More information about the Scummvm-git-logs
mailing list