diff options
Diffstat (limited to 'engines/fullpipe')
-rw-r--r-- | engines/fullpipe/constants.h | 4 | ||||
-rw-r--r-- | engines/fullpipe/scenes/scene04.cpp | 47 |
2 files changed, 49 insertions, 2 deletions
diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index 6e9f117fb9..dcc9974af9 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -115,6 +115,8 @@ namespace Fullpipe { #define MV_BTN_CLICK 599 #define MV_CLK_GO 589 #define MV_HND_POINT 602 +#define MV_KZW_STANDUP 563 +#define MV_KZW_TURN 562 #define MV_MAN_GOD 481 #define MV_MAN_GOLADDER 451 #define MV_MAN_GOLADDER2 2844 @@ -278,6 +280,7 @@ namespace Fullpipe { #define ST_IN1MAN_SLEEP 5112 #define ST_KZW_EMPTY 498 #define ST_KZW_RIGHT 559 +#define ST_KZW_SIT 560 #define ST_LBN_0N 2832 #define ST_LBN_0P 2833 #define ST_LBN_1N 2753 @@ -316,6 +319,7 @@ namespace Fullpipe { #define TrubaRight 696 #define TrubaUp 680 #define rMV_MAN_LOOKUP 4775 +#define rMV_KZW_GOR 566 } // End of namespace Fullpipe diff --git a/engines/fullpipe/scenes/scene04.cpp b/engines/fullpipe/scenes/scene04.cpp index f5b376e002..d3abe32a8b 100644 --- a/engines/fullpipe/scenes/scene04.cpp +++ b/engines/fullpipe/scenes/scene04.cpp @@ -550,9 +550,52 @@ void sceneHandler04_raisePlank() { } MessageQueue *sceneHandler04_kozFly3(StaticANIObject *ani, double phase) { - warning("STUB: sceneHandler04_kozFly3()"); + MGM mgm; + MGMInfo mgminfo; - return 0; + mgm.addItem(ANI_KOZAWKA); + + mgminfo.ani = ani; + mgminfo.staticsId2 = ST_KZW_SIT; + mgminfo.x1 = (int)(723.0 - phase * 185.0); + mgminfo.y1 = 486; + mgminfo.field_1C = 10; + mgminfo.field_10 = 1; + mgminfo.flags = 78; + mgminfo.movementId = MV_KZW_JUMP; + + MessageQueue *mq = mgm.genMovement(&mgminfo); + + if (mq) { + ExCommand *ex = new ExCommand(ANI_KOZAWKA, 1, MV_KZW_STANDUP, 0, 0, 0, 1, 0, 0, 0); + ex->_excFlags |= 2; + ex->_keyCode = ani->_okeyCode; + mq->addExCommandToEnd(ex); + + ex = new ExCommand(ANI_KOZAWKA, 1, MV_KZW_TURN, 0, 0, 0, 1, 0, 0, 0); + ex->_excFlags |= 2; + ex->_keyCode = ani->_okeyCode; + mq->addExCommandToEnd(ex); + + for (int i = 0; i < 5; i++) { + ex = new ExCommand(ANI_KOZAWKA, 1, rMV_KZW_GOR, 0, 0, 0, 1, 0, 0, 0); + ex->_excFlags |= 2; + ex->_keyCode = ani->_okeyCode; + mq->addExCommandToEnd(ex); + } + + ex = new ExCommand(ANI_KOZAWKA, 6, 0, 0, 0, 0, 1, 0, 0, 0); + ex->_excFlags |= 3; + ex->_keyCode = ani->_okeyCode; + mq->addExCommandToEnd(ex); + + ex = new ExCommand(ANI_KOZAWKA, 17, MSG_KOZAWRESTART, 0, 0, 0, 1, 0, 0, 0); + ex->_excFlags |= 3; + ex->_keyCode = ani->_okeyCode; + mq->addExCommandToEnd(ex); + } + + return mq; } MessageQueue *sceneHandler04_kozFly5(StaticANIObject *ani, double phase) { |