aboutsummaryrefslogtreecommitdiff
path: root/engines/fullpipe/scenes.cpp
diff options
context:
space:
mode:
authorKamil Zbróg2013-11-26 18:53:03 +0000
committerKamil Zbróg2013-11-26 18:53:03 +0000
commit15bb1c61eda48f09253ccb8d2a42ccad59f3b00a (patch)
treec2f5ac2907225730c6f1cdaa000f549ef7951183 /engines/fullpipe/scenes.cpp
parent446c57d281e592653c9935c896d33334d23f0519 (diff)
parente1afc7d0d777dad4b7ca0a58f0bb0324b24f9584 (diff)
downloadscummvm-rg350-15bb1c61eda48f09253ccb8d2a42ccad59f3b00a.tar.gz
scummvm-rg350-15bb1c61eda48f09253ccb8d2a42ccad59f3b00a.tar.bz2
scummvm-rg350-15bb1c61eda48f09253ccb8d2a42ccad59f3b00a.zip
Merge remote-tracking branch 'sync/master' into prince-malik
Conflicts: engines/configure.engines engines/engines.mk engines/plugins_table.h
Diffstat (limited to 'engines/fullpipe/scenes.cpp')
-rw-r--r--engines/fullpipe/scenes.cpp1269
1 files changed, 46 insertions, 1223 deletions
diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp
index c266a819ed..6771fe8ec8 100644
--- a/engines/fullpipe/scenes.cpp
+++ b/engines/fullpipe/scenes.cpp
@@ -23,44 +23,19 @@
#include "fullpipe/fullpipe.h"
#include "fullpipe/utils.h"
-#include "fullpipe/gfx.h"
#include "fullpipe/objects.h"
#include "fullpipe/statics.h"
-#include "fullpipe/scene.h"
#include "fullpipe/gameloader.h"
-#include "fullpipe/sound.h"
#include "fullpipe/motion.h"
#include "fullpipe/input.h"
-#include "fullpipe/messages.h"
#include "fullpipe/behavior.h"
#include "fullpipe/constants.h"
-#include "fullpipe/objectnames.h"
#include "fullpipe/scenes.h"
-#include "fullpipe/modal.h"
#include "fullpipe/interaction.h"
namespace Fullpipe {
-int defaultUpdateCursor();
-void setElevatorButton(const char *name, int state);
-
-int sceneIntro_updateCursor();
-void sceneIntro_initScene(Scene *sc);
-int sceneHandlerIntro(ExCommand *cmd);
-
-void scene01_fixEntrance();
-void scene01_initScene(Scene *sc, int entrance);
-int sceneHandler01(ExCommand *cmd);
-
-void scene03_setEaterState();
-int scene03_updateCursor();
-void scene03_initScene(Scene *sc);
-int sceneHandler03(ExCommand *cmd);
-
-void sceneDbgMenu_initScene(Scene *sc);
-int sceneHandlerDbgMenu(ExCommand *cmd);
-
Vars::Vars() {
sceneIntro_aniin1man = 0;
sceneIntro_needSleep = true;
@@ -76,9 +51,52 @@ Vars::Vars() {
scene01_picSc01Osk = 0;
scene01_picSc01Osk2 = 0;
+ scene02_guvTheDrawer = 0;
+ scene02_boxDelay = 0;
+ scene02_boxOpen = false;
+
scene03_eggeater = 0;
scene03_domino = 0;
+ scene04_bottle = 0;
+ scene04_hand = 0;
+ scene04_plank = 0;
+ scene04_clock = 0;
+ scene04_hand = 0;
+ scene04_spring = 0;
+ scene04_mamasha = 0;
+ scene04_boot = 0;
+ scene04_speaker = 0;
+
+ scene04_ladder = 0;
+ scene04_coinPut = false;
+ scene04_soundPlaying = false;
+ scene04_dynamicPhaseIndex = 0;
+
+ scene04_sceneClickX = 0;
+ scene04_sceneClickY = 0;
+
+ scene04_var01 = 0;
+ scene04_var02 = 0;
+ scene04_var04 = 0;
+ scene04_var05 = 0;
+ scene04_var06 = 0;
+ scene04_var07 = 0;
+ scene04_var08 = 0;
+ scene04_var09 = 0;
+ scene04_var10 = 0;
+ scene04_var11 = 0;
+ scene04_var12 = 0;
+ scene04_var13 = 0;
+ scene04_var14 = 0;
+ scene04_var15 = 0;
+ scene04_var16 = 0;
+ scene04_var17 = 0;
+ scene04_var18 = 0;
+ scene04_var19 = 0;
+ scene04_var20 = 0;
+ scene04_var24 = 0;
+
selector = 0;
}
@@ -207,7 +225,6 @@ bool FullpipeEngine::sceneSwitcher(EntranceInfo *entrance) {
_updateCursorCallback = defaultUpdateCursor;
break;
-#if 0
case SC_2:
sceneVar = _gameLoader->_gameVar->getSubVarByName("SC_2");
scene->preloadMovements(sceneVar);
@@ -218,7 +235,6 @@ bool FullpipeEngine::sceneSwitcher(EntranceInfo *entrance) {
addMessageHandler(sceneHandler02, 2);
_updateCursorCallback = defaultUpdateCursor;
break;
-#endif
case SC_3:
sceneVar = _gameLoader->_gameVar->getSubVarByName("SC_3");
@@ -232,7 +248,6 @@ bool FullpipeEngine::sceneSwitcher(EntranceInfo *entrance) {
_updateCursorCallback = scene03_updateCursor;
break;
-#if 0
case SC_4:
sceneVar = _gameLoader->_gameVar->getSubVarByName("SC_4");
scene->preloadMovements(sceneVar);
@@ -244,6 +259,7 @@ bool FullpipeEngine::sceneSwitcher(EntranceInfo *entrance) {
_updateCursorCallback = scene04_updateCursor;
break;
+#if 0
case SC_5:
sceneVar = _gameLoader->_gameVar->getSubVarByName("SC_5");
scene->preloadMovements(sceneVar);
@@ -679,1207 +695,14 @@ bool FullpipeEngine::sceneSwitcher(EntranceInfo *entrance) {
return true;
}
-void setElevatorButton(const char *name, int state) {
- GameVar *var = g_fullpipe->getGameLoaderGameVar()->getSubVarByName("OBJSTATES")->getSubVarByName(sO_LiftButtons);
-
- if (var)
- var->setSubVarAsInt(name, state);
-}
-
-void global_messageHandler_KickStucco() {
- warning("STUB: global_messageHandler_KickStucco()");
-}
-
-void global_messageHandler_KickMetal() {
- warning("STUB: global_messageHandler_KickMetal()");
-}
-
-int global_messageHandler1(ExCommand *cmd) {
- debug(0, "global_messageHandler1: %d %d", cmd->_messageKind, cmd->_messageNum);
-
- if (cmd->_excFlags & 0x10000) {
- if (cmd->_messageNum == MV_MAN_TOLADDER)
- cmd->_messageNum = MV_MAN_TOLADDER2;
- if (cmd->_messageNum == MV_MAN_STARTLADDER)
- cmd->_messageNum = MV_MAN_STARTLADDER2;
- if (cmd->_messageNum == MV_MAN_GOLADDER)
- cmd->_messageNum = MV_MAN_GOLADDER2;
- if (cmd->_messageNum == MV_MAN_STOPLADDER)
- cmd->_messageNum = MV_MAN_STOPLADDER2;
- }
-
- if (g_fullpipe->_inputDisabled) {
- if (cmd->_messageKind == 17) {
- switch (cmd->_messageNum) {
- case 29:
- case 30:
- case 36:
- case 106:
- cmd->_messageKind = 0;
- break;
- default:
- break;
- }
- }
- } else if (cmd->_messageKind == 17) {
- switch (cmd->_messageNum) {
- case MSG_MANSHADOWSON:
- g_fullpipe->_aniMan->_shadowsOn = 1;
- break;
- case MSG_HMRKICK_STUCCO:
- global_messageHandler_KickStucco();
- break;
- case MSG_MANSHADOWSOFF:
- g_fullpipe->_aniMan->_shadowsOn = 0;
- break;
- case MSG_DISABLESAVES:
- g_fullpipe->disableSaves(cmd);
- break;
- case MSG_ENABLESAVES:
- g_fullpipe->enableSaves();
- break;
- case MSG_HMRKICK_METAL:
- global_messageHandler_KickMetal();
- break;
- case 29: // left mouse
- if (g_fullpipe->_inventoryScene) {
- if (getGameLoaderInventory()->handleLeftClick(cmd))
- cmd->_messageKind = 0;
- }
- break;
- case 107: // right mouse
- if (getGameLoaderInventory()->getSelectedItemId()) {
- getGameLoaderInventory()->unselectItem(0);
- cmd->_messageKind = 0;
- }
- break;
- case 36: // keydown
- g_fullpipe->defHandleKeyDown(cmd->_keyCode);
-
- switch (cmd->_keyCode) {
- case '\x1B': // ESC
- if (g_fullpipe->_currentScene) {
- getGameLoaderInventory()->unselectItem(0);
- g_fullpipe->openMainMenu();
- cmd->_messageKind = 0;
- }
- break;
- case 't':
- g_fullpipe->stopAllSounds();
- cmd->_messageKind = 0;
- break;
- case 'u':
- g_fullpipe->toggleMute();
- cmd->_messageKind = 0;
- break;
- case ' ':
- if (getGameLoaderInventory()->getIsLocked()) {
- if (getGameLoaderInventory()->getIsInventoryOut()) {
- getGameLoaderInventory()->setIsLocked(0);
- }
- } else {
- getGameLoaderInventory()->slideOut();
- getGameLoaderInventory()->setIsLocked(1);
- }
- break;
- case '\t':
- if (g_fullpipe->_flgCanOpenMap)
- g_fullpipe->openMap();
- cmd->_messageKind = 0;
- break;
- case 'p':
- if (g_fullpipe->_flgCanOpenMap)
- g_fullpipe->openHelp();
- cmd->_messageKind = 0;
- break;
- default:
- break;
- }
- break;
- case 33:
- if (!g_fullpipe->_inventoryScene)
- break;
-
- int invItem;
-
- if (g_fullpipe->_updateFlag && (invItem = g_fullpipe->_inventory->getHoveredItem(&g_fullpipe->_mouseScreenPos))) {
- g_fullpipe->_cursorId = PIC_CSR_ITN;
- if (!g_fullpipe->_currSelectedInventoryItemId && !g_fullpipe->_aniMan->_movement &&
- !(g_fullpipe->_aniMan->_flags & 0x100) && g_fullpipe->_aniMan->isIdle()) {
- int st = g_fullpipe->_aniMan->_statics->_staticsId;
- ExCommand *newex = 0;
-
- if (st == ST_MAN_RIGHT) {
- newex = new ExCommand(g_fullpipe->_aniMan->_id, 1, rMV_MAN_LOOKUP, 0, 0, 0, 1, 0, 0, 0);
- } else if (st == (0x4000 | ST_MAN_RIGHT)) {
- newex = new ExCommand(g_fullpipe->_aniMan->_id, 1, MV_MAN_LOOKUP, 0, 0, 0, 1, 0, 0, 0);
- }
-
- if (newex) {
- newex->_keyCode = g_fullpipe->_aniMan->_okeyCode;
- newex->_excFlags |= 3;
- newex->postMessage();
- }
- }
-
- if (g_fullpipe->_currSelectedInventoryItemId != invItem)
- g_fullpipe->playSound(SND_CMN_070, 0);
-
- g_fullpipe->_currSelectedInventoryItemId = invItem;
- g_fullpipe->setCursor(g_fullpipe->_cursorId);
- break;
- }
- if (g_fullpipe->_updateCursorCallback)
- g_fullpipe->_updateCursorCallback();
-
- g_fullpipe->_currSelectedInventoryItemId = 0;
- g_fullpipe->setCursor(g_fullpipe->_cursorId);
- break;
- case 65: // open map
- if (cmd->_field_2C == 11 && cmd->_field_14 == ANI_INV_MAP && g_fullpipe->_flgCanOpenMap)
- g_fullpipe->openMap();
- break;
- default:
- break;
- }
- }
-
- if (cmd->_messageKind == 56) {
- getGameLoaderInventory()->rebuildItemRects();
-
- ExCommand *newex = new ExCommand(0, 35, SND_CMN_031, 0, 0, 0, 1, 0, 0, 0);
-
- newex->_field_14 = 1;
- newex->_excFlags |= 3;
- newex->postMessage();
-
- return 1;
- } else if (cmd->_messageKind == 57) {
- getGameLoaderInventory()->rebuildItemRects();
-
- return 1;
- }
-
- return 0;
-}
-
-void staticANIObjectCallback(int *arg) {
- (*arg)--;
-}
-
-int global_messageHandler2(ExCommand *cmd) {
- if (cmd->_messageKind != 17)
- return 0;
-
- int res = 0;
- StaticANIObject *ani;
-
- switch (cmd->_messageNum) {
- case 0x44c8:
- error("0x44c8");
- // Unk3_sub_4477A0(&unk3, _parentId, _field_14 != 0);
- break;
-
- case 28:
- ani = g_fullpipe->_currentScene->getStaticANIObject1ById(cmd->_parentId, cmd->_keyCode);
- if (ani)
- ani->_priority = cmd->_field_14;
- break;
-
- case 25:
- ani = g_fullpipe->_currentScene->getStaticANIObject1ById(cmd->_parentId, cmd->_keyCode);
- if (ani) {
- if (cmd->_field_14) {
- ani->setFlags40(true);
- ani->_callback2 = staticANIObjectCallback;
- } else {
- ani->setFlags40(false);
- ani->_callback2 = 0;
- }
- }
- break;
-
- case 26:
- ani = g_fullpipe->_currentScene->getStaticANIObject1ById(cmd->_parentId, cmd->_keyCode);
- if (ani) {
- Movement *mov = ani->_movement;
- if (mov)
- mov->_currDynamicPhase->_field_68 = 0;
- }
- break;
-
- default:
-#if 0
- // We never put anything into _defMsgArray
- while (::iterator it = g_fullpipe->_defMsgArray.begin(); it != g_fullpipe->_defMsgArray.end(); ++it)
- if (((ExCommand *)*it)->_field_24 == _messageNum) {
- ((ExCommand *)*it)->firef34(v13);
- res = 1;
- }
-#endif
-
- //debug_msg(_messageNum);
-
- if (!g_fullpipe->_soundEnabled || cmd->_messageNum != 33 || g_fullpipe->_currSoundListCount <= 0)
- return res;
-
- for (int snd = 0; snd < g_fullpipe->_currSoundListCount; snd++) {
- SoundList *s = g_fullpipe->_currSoundList1[snd];
- int ms = s->getCount();
- for (int i = 0; i < ms; i++) {
- s->getSoundByIndex(i)->setPanAndVolumeByStaticAni();
- }
- }
- }
-
- return res;
-}
-
-int global_messageHandler3(ExCommand *cmd) {
- int result = 0;
-
- if (cmd->_messageKind == 17) {
- switch (cmd->_messageNum) {
- case 29:
- case 30:
- case 31:
- case 32:
- case 36:
- if (g_fullpipe->_inputDisabled)
- cmd->_messageKind = 0;
- break;
- default:
- break;
- }
- }
-
- StaticANIObject *ani, *ani2;
-
- switch (cmd->_messageKind) {
- case 17:
- switch (cmd->_messageNum) {
- case 61:
- return g_fullpipe->_gameLoader->preloadScene(cmd->_parentId, cmd->_keyCode);
- case 62:
- return g_fullpipe->_gameLoader->gotoScene(cmd->_parentId, cmd->_keyCode);
- case 64:
- if (g_fullpipe->_currentScene && g_fullpipe->_msgObjectId2
- && (!(cmd->_keyCode & 4) || g_fullpipe->_msgObjectId2 != cmd->_field_14 || g_fullpipe->_msgId != cmd->_field_20)) {
- ani = g_fullpipe->_currentScene->getStaticANIObject1ById(g_fullpipe->_msgObjectId2, g_fullpipe->_msgId);
- if (ani) {
- ani->_flags &= 0xFF7F;
- ani->_flags &= 0xFEFF;
- ani->deleteFromGlobalMessageQueue();
- }
- }
- g_fullpipe->_msgX = 0;
- g_fullpipe->_msgY = 0;
- g_fullpipe->_msgObjectId2 = 0;
- g_fullpipe->_msgId = 0;
- if ((cmd->_keyCode & 1) || (cmd->_keyCode & 2)) {
- g_fullpipe->_msgX = cmd->_x;
- g_fullpipe->_msgY = cmd->_y;
- }
- if (cmd->_keyCode & 4) {
- g_fullpipe->_msgObjectId2 = cmd->_field_14;
- g_fullpipe->_msgId = cmd->_field_20;
- }
- return result;
- case 29:
- if (!g_fullpipe->_currentScene)
- return result;
-
- if (g_fullpipe->_gameLoader->_interactionController->_flag24) {
- ani = g_fullpipe->_currentScene->getStaticANIObjectAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
- ani2 = g_fullpipe->_currentScene->getStaticANIObject1ById(g_fullpipe->_gameLoader->_field_FA, -1);
- if (ani) {
- if (g_fullpipe->_msgObjectId2 == ani->_id && g_fullpipe->_msgId == ani->_okeyCode) {
- cmd->_messageKind = 0;
- return result;
- }
- if (canInteractAny(ani2, ani, cmd->_keyCode)) {
- handleObjectInteraction(ani2, ani, cmd->_keyCode);
- return 1;
- }
- } else {
- int id = g_fullpipe->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
- PictureObject *pic = g_fullpipe->_currentScene->getPictureObjectById(id, 0);
- if (pic) {
- if (g_fullpipe->_msgObjectId2 == pic->_id && g_fullpipe->_msgId == pic->_okeyCode) {
- cmd->_messageKind = 0;
- return result;
- }
- if (!ani2 || canInteractAny(ani2, pic, cmd->_keyCode)) {
- if (!ani2 || (ani2->isIdle() && !(ani2->_flags & 0x80) && !(ani2->_flags & 0x100)))
- handleObjectInteraction(ani2, pic, cmd->_keyCode);
- return 1;
- }
- }
- }
- }
- if (getSc2MctlCompoundBySceneId(g_fullpipe->_currentScene->_sceneId)->_isEnabled && cmd->_keyCode <= 0) {
- if (g_fullpipe->_msgX != cmd->_sceneClickX || g_fullpipe->_msgY != cmd->_sceneClickY) {
- ani = g_fullpipe->_currentScene->getStaticANIObject1ById(g_fullpipe->_gameLoader->_field_FA, -1);
- if (!ani || (ani->isIdle() && !(ani->_flags & 0x80) && !(ani->_flags & 0x100))) {
- result = startWalkTo(g_fullpipe->_gameLoader->_field_FA, -1, cmd->_sceneClickX, cmd->_sceneClickY, 0);
- if (result) {
- ExCommand *ex = new ExCommand(g_fullpipe->_gameLoader->_field_FA, 17, 64, 0, 0, 0, 1, 0, 0, 0);
-
- ex->_keyCode = 1;
- ex->_excFlags |= 3;
- ex->_x = cmd->_sceneClickX;
- ex->_y = cmd->_sceneClickY;
- ex->postMessage();
- }
- }
- } else {
- cmd->_messageKind = 0;
- }
- }
- return result;
- default:
- return result;
- }
- case 58:
- g_fullpipe->setCursor(cmd->_keyCode);
- return result;
- case 59:
- setInputDisabled(1);
- return result;
- case 60:
- setInputDisabled(0);
- return result;
- case 56:
- if (cmd->_field_2C) {
- ani = g_fullpipe->_currentScene->getStaticANIObject1ById(cmd->_parentId, cmd->_keyCode);
- if (ani) {
- getGameLoaderInventory()->addItem2(ani);
- result = 1;
- }
- } else {
- result = 1;
- getGameLoaderInventory()->addItem(cmd->_parentId, 1);
- }
- getGameLoaderInventory()->rebuildItemRects();
- return result;
- case 57:
- if (cmd->_field_2C) {
- if (!cmd->_field_20) {
- getGameLoaderInventory()->removeItem2(g_fullpipe->_currentScene, cmd->_parentId, cmd->_x, cmd->_y, cmd->_field_14);
- getGameLoaderInventory()->rebuildItemRects();
- return 1;
- }
- ani = g_fullpipe->_currentScene->getStaticANIObject1ById(g_fullpipe->_gameLoader->_field_FA, -1);
- if (ani) {
- getGameLoaderInventory()->removeItem2(g_fullpipe->_currentScene, cmd->_parentId, ani->_ox + cmd->_x, ani->_oy + cmd->_y, ani->_priority + cmd->_field_14);
- getGameLoaderInventory()->rebuildItemRects();
- return 1;
- }
- } else {
- getGameLoaderInventory()->removeItem(cmd->_parentId, 1);
- }
- getGameLoaderInventory()->rebuildItemRects();
- return 1;
- case 55:
- if (g_fullpipe->_currentScene) {
- GameObject *obj;
- if (cmd->_field_14)
- obj = g_fullpipe->_currentScene->getStaticANIObject1ById(cmd->_x, cmd->_y);
- else
- obj = g_fullpipe->_currentScene->getPictureObjectById(cmd->_x, cmd->_y);
- handleObjectInteraction(g_fullpipe->_currentScene->getStaticANIObject1ById(cmd->_parentId, cmd->_keyCode), obj, cmd->_field_20);
- result = 1;
- }
- return result;
- case 51:
- return startWalkTo(cmd->_parentId, cmd->_keyCode, cmd->_x, cmd->_y, cmd->_field_20);
- case 52:
- return doSomeAnimation(cmd->_parentId, cmd->_keyCode, cmd->_field_20);
- case 53:
- return doSomeAnimation2(cmd->_parentId, cmd->_keyCode);
- case 63:
- if (cmd->_objtype == kObjTypeObjstateCommand) {
- ObjstateCommand *c = (ObjstateCommand *)cmd;
- result = 1;
- g_fullpipe->setObjectState(c->_objCommandName, c->_value);
- }
- return result;
- default:
- return result;
- }
-}
-
-int global_messageHandler4(ExCommand *cmd) {
- StaticANIObject *ani = 0;
-
- switch (cmd->_messageKind) {
- case 18: {
- MessageQueue *mq = new MessageQueue(g_fullpipe->_currentScene->getMessageQueueById(cmd->_messageNum), cmd->_parId, 0);
-
- if (cmd->_excFlags & 1)
- mq->_flag1 = 1;
- else
- mq->_flag1 = 0;
-
- mq->sendNextCommand();
- break;
- }
- case 2:
- if (!g_fullpipe->_currentScene)
- break;
-
- ani = g_fullpipe->_currentScene->getStaticANIObject1ById(cmd->_parentId, cmd->_keyCode);
- if (!ani)
- break;
-
- ani->trySetMessageQueue(cmd->_messageNum, cmd->_parId);
- break;
-
- case 1: {
- if (!g_fullpipe->_currentScene)
- break;
-
- ani = g_fullpipe->_currentScene->getStaticANIObject1ById(cmd->_parentId, cmd->_keyCode);
- if (!ani)
- break;
-
- int flags = cmd->_field_14;
- if (flags <= 0)
- flags = -1;
-
- if (cmd->_excFlags & 1)
- ani->startAnim(cmd->_messageNum, 0, flags);
- else
- ani->startAnim(cmd->_messageNum, cmd->_parId, flags);
-
- break;
- }
- case 8:
- if (!g_fullpipe->_currentScene)
- break;
-
- ani = g_fullpipe->_currentScene->getStaticANIObject1ById(cmd->_parentId, cmd->_keyCode);
- if (!ani)
- break;
-
- ani->startAnimEx(cmd->_messageNum, cmd->_parId, -1, -1);
- break;
-
- case 20: {
- if (!g_fullpipe->_currentScene)
- break;
-
- ani = g_fullpipe->_currentScene->getStaticANIObject1ById(cmd->_parentId, cmd->_keyCode);
- if (!ani)
- break;
-
- int flags = cmd->_field_14;
- if (flags <= 0)
- flags = -1;
-
- ExCommand2 *cmd2 = (ExCommand2 *)cmd;
-
- if (cmd->_excFlags & 1) {
- ani->startAnimSteps(cmd->_messageNum, 0, cmd->_x, cmd->_y, cmd2->_points, cmd2->_pointsSize >> 3, flags);
- } else {
- ani->startAnimSteps(cmd->_messageNum, cmd->_parId, cmd->_x, cmd->_y, cmd2->_points, cmd2->_pointsSize >> 3, flags);
- }
- break;
- }
- case 21:
- if (!g_fullpipe->_currentScene)
- break;
-
- ani = g_fullpipe->_currentScene->getStaticANIObject1ById(cmd->_parentId, cmd->_keyCode);
- if (!ani)
- break;
-
- ani->queueMessageQueue(0);
- ani->playIdle();
- break;
- case 9:
- // Nop in original
- break;
- case 3:
- g_fullpipe->_currentScene->_y = cmd->_messageNum - cmd->_messageNum % g_fullpipe->_scrollSpeed;
- break;
-
- case 4:
- g_fullpipe->_currentScene->_x = cmd->_messageNum - cmd->_messageNum % g_fullpipe->_scrollSpeed;
- break;
-
- case 19: {
- if (!g_fullpipe->_currentScene)
- break;
- ani = g_fullpipe->_currentScene->getStaticANIObject1ById(cmd->_parentId, cmd->_keyCode);
- if (!ani)
- break;
-
- MessageQueue *mq = ani->getMessageQueue();
- MessageQueue *mq2 = ani->changeStatics1(cmd->_messageNum);
-
- if (!mq2 || !mq2->getExCommandByIndex(0) || !mq)
- break;
-
- mq2->_parId = mq->_id;
- mq2->_flag1 = (cmd->_field_24 == 0);
- break;
- }
- case 22:
- if (!g_fullpipe->_currentScene)
- break;
-
- ani = g_fullpipe->_currentScene->getStaticANIObject1ById(cmd->_parentId, cmd->_keyCode);
- if (!ani)
- break;
-
- ani->_flags |= 4;
- ani->changeStatics2(cmd->_messageNum);
- break;
-
- case 6:
- if (!g_fullpipe->_currentScene)
- break;
-
- ani = g_fullpipe->_currentScene->getStaticANIObject1ById(cmd->_parentId, cmd->_keyCode);
- if (!ani)
- break;
-
- ani->hide();
- break;
-
- case 27:
- if (!g_fullpipe->_currentScene || g_fullpipe->_currentScene->getStaticANIObject1ById(cmd->_parentId, cmd->_keyCode) == 0) {
- ani = g_fullpipe->accessScene(cmd->_field_20)->getStaticANIObject1ById(cmd->_parentId, -1);
- if (ani) {
- ani = new StaticANIObject(ani);
- g_fullpipe->_currentScene->addStaticANIObject(ani, 1);
- }
- }
-
- // fall through
- case 5:
- if (g_fullpipe->_currentScene)
- ani = g_fullpipe->_currentScene->getStaticANIObject1ById(cmd->_parentId, cmd->_keyCode);
-
- if (!ani)
- break;
-
- if (cmd->_field_14 >= 0)
- ani->_priority = cmd->_field_14;
-
- ani->show1(cmd->_x, cmd->_y, cmd->_messageNum, cmd->_parId);
- break;
-
- case 10:
- if (!g_fullpipe->_currentScene)
- break;
-
- ani = g_fullpipe->_currentScene->getStaticANIObject1ById(cmd->_parentId, cmd->_keyCode);
- if (!ani)
- break;
-
- if (cmd->_field_14 >= 0)
- ani->_priority = cmd->_field_14;
-
- ani->show2(cmd->_x, cmd->_y, cmd->_messageNum, cmd->_parId);
- break;
-
- case 7: {
- if (!g_fullpipe->_currentScene->_picObjList.size())
- break;
-
- int offX = g_fullpipe->_scrollSpeed * (cmd->_x / g_fullpipe->_scrollSpeed);
- int offY = g_fullpipe->_scrollSpeed * (cmd->_y / g_fullpipe->_scrollSpeed);
-
- if (cmd->_messageNum) {
- g_fullpipe->_currentScene->_x = offX - g_fullpipe->_sceneRect.left;
- g_fullpipe->_currentScene->_y = offY - g_fullpipe->_sceneRect.top;
-
- if (cmd->_field_24) {
- g_fullpipe->_currentScene->_messageQueueId = cmd->_parId;
- }
- } else {
- g_fullpipe->_sceneRect.moveTo(offX, offY);
-
- g_fullpipe->_currentScene->_x = 0;
- g_fullpipe->_currentScene->_y = 0;
-
- g_fullpipe->_currentScene->updateScrolling2();
- }
- break;
- }
- case 34:
- if (!g_fullpipe->_currentScene)
- break;
-
- ani = g_fullpipe->_currentScene->getStaticANIObject1ById(cmd->_parentId, cmd->_keyCode);
- if (!ani)
- break;
-
- ani->_flags = cmd->_messageNum | (ani->_flags & ~cmd->_field_14);
-
- break;
-
- case 35:
- global_messageHandler_handleSound(cmd);
- break;
-
- case 11:
- case 12:
- break;
- default:
- return 0;
- break;
- }
-
- return 1;
-}
-
-int MovGraph_messageHandler(ExCommand *cmd) {
- if (cmd->_messageKind != 17)
- return 0;
-
- if (cmd->_messageNum != 33)
- return 0;
-
- StaticANIObject *ani = g_fullpipe->_currentScene->getStaticANIObject1ById(g_fullpipe->_gameLoader->_field_FA, -1);
-
- if (!getSc2MctlCompoundBySceneId(g_fullpipe->_currentScene->_sceneId))
- return 0;
-
- if (getSc2MctlCompoundBySceneId(g_fullpipe->_currentScene->_sceneId)->_objtype != kObjTypeMovGraph || !ani)
- return 0;
-
- MovGraph *gr = (MovGraph *)getSc2MctlCompoundBySceneId(g_fullpipe->_currentScene->_sceneId);
-
- MovGraphLink *link = 0;
- double mindistance = 1.0e10;
- Common::Point point;
-
- for (ObList::iterator i = gr->_links.begin(); i != gr->_links.end(); ++i) {
- point.x = ani->_ox;
- point.y = ani->_oy;
-
- double dst = gr->calcDistance(&point, (MovGraphLink *)(*i), 0);
- if (dst >= 0.0 && dst < mindistance) {
- mindistance = dst;
- link = (MovGraphLink *)(*i);
- }
- }
-
- int top;
-
- if (link) {
- MovGraphNode *node = link->_movGraphNode1;
-
- double sq = (ani->_oy - node->_y) * (ani->_oy - node->_y) + (ani->_ox - node->_x) * (ani->_ox - node->_x);
- int off = (node->_field_14 >> 16) & 0xFF;
- double off2 = ((link->_movGraphNode2->_field_14 >> 8) & 0xff) - off;
-
- top = off + (int)(sqrt(sq) * off2 / link->_distance);
- } else {
- top = (gr->calcOffset(ani->_ox, ani->_oy)->_field_14 >> 8) & 0xff;
- }
-
- if (ani->_movement) {
- ani->_movement->_currDynamicPhase->_rect->top = 255 - top;
- return 0;
- }
-
- if (ani->_statics)
- ani->_statics->_rect->top = 255 - top;
-
- return 0;
-}
-
int defaultUpdateCursor() {
g_fullpipe->updateCursorCommon();
return g_fullpipe->_cursorId;
}
-int sceneIntro_updateCursor() {
- g_fullpipe->_cursorId = 0;
-
- return 0;
-}
-
-void FullpipeEngine::setSwallowedEggsState() {
- GameVar *v = _gameLoader->_gameVar->getSubVarByName("OBJSTATES")->getSubVarByName(sO_GulpedEggs);
-
- g_vars->swallowedEgg1 = v->getSubVarByName(sO_Egg1);
- g_vars->swallowedEgg2 = v->getSubVarByName(sO_Egg2);
- g_vars->swallowedEgg3 = v->getSubVarByName(sO_Egg3);
-
- g_vars->swallowedEgg1->_value.intValue = 0;
- g_vars->swallowedEgg2->_value.intValue = 0;
- g_vars->swallowedEgg3->_value.intValue = 0;
-}
-
-void sceneIntro_initScene(Scene *sc) {
- g_fullpipe->_gameLoader->loadScene(SC_INTRO2);
-
- g_vars->sceneIntro_aniin1man = sc->getStaticANIObject1ById(ANI_IN1MAN, -1);
- g_vars->sceneIntro_needSleep = true;
- g_vars->sceneIntro_needGetup = false;
- g_vars->sceneIntro_playing = true;
- g_vars->sceneIntro_needBlackout = false;
-
- if (g_fullpipe->_recordEvents || g_fullpipe->_inputArFlag)
- g_vars->sceneIntro_skipIntro = false;
-
- g_fullpipe->_modalObject = new ModalIntro;
-}
-
-void sceneHandlerIntro_part1() {
- g_fullpipe->_currentScene = g_fullpipe->accessScene(SC_INTRO1);
- chainQueue(QU_INTR_FINISH, 0);
-}
-
-void sceneHandlerIntro_part2() {
- g_fullpipe->_currentScene = g_fullpipe->accessScene(SC_INTRO2);
- chainQueue(QU_IN2_DO, 0);
-}
-
-int sceneHandlerIntro(ExCommand *ex) {
- if (ex->_messageKind != 17)
- return 0;
-
- switch (ex->_messageNum) {
- case MSG_INTR_ENDINTRO:
- g_vars->sceneIntro_playing = 0;
- return 0;
-
- case MSG_INTR_SWITCHTO1:
- sceneHandlerIntro_part1();
- return 0;
-
- case MSG_INTR_GETUPMAN:
- g_vars->sceneIntro_needSleep = 0;
- g_vars->sceneIntro_needGetup = 1;
- return 0;
-
- case MSG_INTR_SWITCHTO2:
- sceneHandlerIntro_part2();
- return 0;
-
- case 33:
- // fall through
- break;
-
- default:
- return 0;
- }
-
- if (g_vars->sceneIntro_needSleep) {
- if (!g_vars->sceneIntro_aniin1man->_movement && g_vars->sceneIntro_aniin1man->_statics->_staticsId == ST_IN1MAN_SLEEP)
- g_vars->sceneIntro_aniin1man->startAnim(MV_IN1MAN_SLEEP, 0, -1);
- } else if (g_vars->sceneIntro_needGetup && !g_vars->sceneIntro_aniin1man->_movement &&
- g_vars->sceneIntro_aniin1man->_statics->_staticsId == ST_IN1MAN_SLEEP) {
- g_vars->sceneIntro_needGetup = 0;
-
- chainQueue(QU_INTR_GETUPMAN, 0);
- }
-
- g_fullpipe->startSceneTrack();
-
- return 0;
-}
-
-void scene01_fixEntrance() {
- GameVar *var = g_fullpipe->getGameLoaderGameVar()->getSubVarByName("OBJSTATES")->getSubVarByName("SAVEGAME");
- if (var->getSubVarAsInt("Entrance") == TrubaLeft)
- var->setSubVarAsInt("Entrance", TrubaRight);
-}
-
-void scene01_initScene(Scene *sc, int entrance) {
- g_vars->scene01_picSc01Osk = sc->getPictureObjectById(PIC_SC1_OSK, 0);
- g_vars->scene01_picSc01Osk->_flags &= 0xFFFB;
-
- g_vars->scene01_picSc01Osk2 = sc->getPictureObjectById(PIC_SC1_OSK2, 0);
- g_vars->scene01_picSc01Osk2->_flags &= 0xFFFB;
-
- if (g_fullpipe->getObjectState(sO_EggCracker) == g_fullpipe->getObjectEnumState(sO_EggCracker, sO_DidNotCrackEgg)) {
- PictureObject *pic = sc->getPictureObjectById(PIC_SC1_KUCHKA, 0);
- if (pic)
- pic->_flags &= 0xFFFB;
- }
-
- if (entrance != TrubaLeft) {
- StaticANIObject *bootAnim = sc->getStaticANIObject1ById(ANI_BOOT_1, -1);
- if (bootAnim)
- bootAnim->_flags &= ~0x04;
- }
-
- setElevatorButton(sO_Level2, ST_LBN_2N);
-}
-
-int sceneHandler01(ExCommand *cmd) {
- int res = 0;
-
- if (cmd->_messageKind != 17)
- return 0;
-
- if (cmd->_messageNum > MSG_SC1_SHOWOSK) {
- if (cmd->_messageNum == MSG_SC1_UTRUBACLICK)
- handleObjectInteraction(g_fullpipe->_aniMan, g_fullpipe->_currentScene->getPictureObjectById(PIC_SC1_LADDER, 0), 0);
-
- return 0;
- }
-
- if (cmd->_messageNum == MSG_SC1_SHOWOSK) {
- g_vars->scene01_picSc01Osk->_flags |= 4;
-
- g_vars->scene01_picSc01Osk->_priority = 20;
- g_vars->scene01_picSc01Osk2->_priority = 21;
-
- return 0;
- }
-
- if (cmd->_messageNum != 0x21) {
- if (cmd->_messageNum == MSG_SC1_SHOWOSK2) {
- g_vars->scene01_picSc01Osk2->_flags |= 4;
- g_vars->scene01_picSc01Osk2->_priority = 20;
- g_vars->scene01_picSc01Osk->_priority = 21;
-
- return 0;
- }
-
- return 0;
- }
-
- if (g_fullpipe->_aniMan2) {
- if (g_fullpipe->_aniMan2->_ox < g_fullpipe->_sceneRect.left + 200) {
- g_fullpipe->_currentScene->_x = g_fullpipe->_aniMan2->_ox - g_fullpipe->_sceneRect.left - 300;
- }
-
- if (g_fullpipe->_aniMan2->_ox > g_fullpipe->_sceneRect.right - 200)
- g_fullpipe->_currentScene->_x = g_fullpipe->_aniMan2->_ox - g_fullpipe->_sceneRect.right + 300;
-
- res = 1;
- }
- g_fullpipe->_behaviorManager->updateBehaviors();
-
- g_fullpipe->startSceneTrack();
-
- return res;
-}
-
-void scene03_initScene(Scene *sc) {
- g_vars->scene03_eggeater = sc->getStaticANIObject1ById(ANI_EGGEATER, -1);
- g_vars->scene03_domino = sc->getStaticANIObject1ById(ANI_DOMINO_3, -1);
-
- GameVar *v = g_fullpipe->_gameLoader->_gameVar->getSubVarByName("OBJSTATES")->getSubVarByName(sO_GulpedEggs);
-
- g_vars->swallowedEgg1 = v->getSubVarByName(sO_Egg1);
- g_vars->swallowedEgg2 = v->getSubVarByName(sO_Egg2);
- g_vars->swallowedEgg3 = v->getSubVarByName(sO_Egg3);
-
- setElevatorButton(sO_Level2, ST_LBN_2N);
-
- g_fullpipe->lift_sub5(sc, QU_SC3_ENTERLIFT, QU_SC3_EXITLIFT);
-}
-
-void scene03_setEaterState() {
- if (g_fullpipe->getObjectState(sO_EggGulperGaveCoin) == g_fullpipe->getObjectEnumState(sO_EggGulperGaveCoin, sO_Yes)) {
- g_fullpipe->_behaviorManager->setBehaviorEnabled(g_vars->scene03_eggeater, ST_EGTR_SLIM, QU_EGTR_SLIMSHOW, 0);
- g_fullpipe->_behaviorManager->setBehaviorEnabled(g_vars->scene03_eggeater, ST_EGTR_MID1, QU_EGTR_MD1_SHOW, 0);
- g_fullpipe->_behaviorManager->setBehaviorEnabled(g_vars->scene03_eggeater, ST_EGTR_MID2, QU_EGTR_MD2_SHOW, 0);
- }
-}
-
-int scene03_updateCursor() {
- g_fullpipe->updateCursorCommon();
-
- if (g_fullpipe->_cursorId == PIC_CSR_DEFAULT && g_fullpipe->_objectIdAtCursor == PIC_SC3_DOMIN && g_vars->scene03_domino) {
- if (g_vars->scene03_domino->_flags & 4)
- g_fullpipe->_cursorId = PIC_CSR_ITN;
- }
-
- return g_fullpipe->_cursorId;
-}
-
-void sceneHandler03_eaterFat() {
- g_vars->scene03_eggeater->_flags &= 0xFF7F;
-
- g_vars->scene03_eggeater->startAnim(MV_EGTR_FATASK, 0, -1);
-}
-
-void sceneHandler03_swallowEgg(int item) {
- if (!g_vars->swallowedEgg1->_value.intValue) {
- g_vars->swallowedEgg1->_value.intValue = item;
- } else if (!g_vars->swallowedEgg2->_value.intValue) {
- g_vars->swallowedEgg2->_value.intValue = item;
- } else if (!g_vars->swallowedEgg3->_value.intValue) {
- g_vars->swallowedEgg3->_value.intValue = item;
-
- g_fullpipe->setObjectState(sO_EggGulperGaveCoin, g_fullpipe->getObjectEnumState(sO_EggGulperGaveCoin, sO_Yes));
-
- scene03_setEaterState();
- }
-}
-
-void sceneHandler03_giveItem(ExCommand *ex) {
- if (ex->_parentId == ANI_INV_EGGAPL || ex->_parentId == ANI_INV_EGGDOM ||
- ex->_parentId == ANI_INV_EGGCOIN || ex->_parentId == ANI_INV_EGGBOOT ||
- ex->_parentId == ANI_INV_EGGGLS)
- sceneHandler03_swallowEgg(ex->_parentId);
-}
-
-int sceneHandler03_swallowedEgg1State() {
- return g_vars->swallowedEgg1->_value.intValue;
-}
-
-void sceneHandler03_giveCoin(ExCommand *ex) {
- MessageQueue *mq = g_fullpipe->_globalMessageQueueList->getMessageQueueById(ex->_parId);
-
- if (mq && mq->getCount() > 0) {
- ExCommand *ex0 = mq->getExCommandByIndex(0);
- ExCommand *ex1 = mq->getExCommandByIndex(1);
-
- if (sceneHandler03_swallowedEgg1State()) {
- ex0->_messageKind = 1;
- ex1->_messageKind = 1;
-
- getGameLoaderInventory()->removeItem(ANI_INV_COIN, 1);
- } else {
- ex0->_messageKind = 0;
- ex0->_excFlags |= 1;
-
- ex1->_messageKind = 0;
- ex1->_excFlags |= 1;
-
- g_vars->scene03_eggeater->_flags &= 0xFF7Fu;
- }
- }
-}
-
-void sceneHandler03_goLadder() {
- handleObjectInteraction(g_fullpipe->_aniMan, g_fullpipe->_currentScene->getPictureObjectById(PIC_SC3_LADDER, 0), 0);
-}
-
-void sceneHandler03_pushEggStack() {
- g_vars->swallowedEgg1->_value.intValue = g_vars->swallowedEgg2->_value.intValue;
- g_vars->swallowedEgg2->_value.intValue = g_vars->swallowedEgg3->_value.intValue;
- g_vars->swallowedEgg3->_value.intValue = 0;
-
- if (g_vars->swallowedEgg2->_value.intValue == ANI_INV_EGGBOOT
- && g_vars->swallowedEgg1->_value.intValue == ANI_INV_EGGAPL) {
- g_vars->swallowedEgg1->_value.intValue = ANI_INV_EGGBOOT;
- g_vars->swallowedEgg2->_value.intValue = ANI_INV_EGGAPL;
- }
-}
-
-void sceneHandler03_releaseEgg() {
- g_vars->scene03_eggeater->_flags &= 0xFF7F;
-
- g_vars->scene03_eggeater->show1(-1, -1, -1, 0);
-}
-
-void sceneHandler03_takeEgg(ExCommand *ex) {
- MessageQueue *mq = g_fullpipe->_globalMessageQueueList->getMessageQueueById(ex->_parId);
-
- if (mq && mq->getCount() > 0) {
- ExCommand *ex0 = mq->getExCommandByIndex(0);
- ExCommand *ex1 = mq->getExCommandByIndex(1);
-
- int egg1 = sceneHandler03_swallowedEgg1State();
-
- if (egg1 && ex0) {
- ex0->_parentId = egg1;
- sceneHandler03_pushEggStack();
- }
-
- if ( g_vars->swallowedEgg1->_value.intValue == ANI_INV_EGGAPL
- && !g_vars->swallowedEgg2->_value.intValue
- && !g_vars->swallowedEgg3->_value.intValue
- && ex1) {
-
- if (ex1->_objtype == kObjTypeObjstateCommand) {
- ObjstateCommand *com = (ObjstateCommand *)ex1;
-
- com->_value = g_fullpipe->getObjectEnumState(sO_EggGulper, sO_WantsNothing);
- }
- }
- }
-}
-
-int sceneHandler03(ExCommand *ex) {
- if (ex->_messageKind != 17) {
- if (ex->_messageKind == 57)
- sceneHandler03_giveItem(ex);
- return 0;
- }
-
- switch (ex->_messageNum) {
- case MSG_LIFT_EXITLIFT:
- g_fullpipe->lift_exitSeq(ex);
- break;
-
- case MSG_LIFT_CLOSEDOOR:
- g_fullpipe->lift_closedoorSeq();
- break;
-
- case MSG_SC3_ONTAKECOIN:
- sceneHandler03_eaterFat();
- break;
-
- case MSG_LIFT_STARTEXITQUEUE:
- g_fullpipe->lift_startExitQueue();
- break;
-
- case MSG_SC3_RELEASEEGG:
- sceneHandler03_releaseEgg();
- break;
-
- case MSG_LIFT_CLICKBUTTON:
- g_fullpipe->lift_animation3();
- break;
-
- case MSG_SC3_HIDEDOMINO:
- g_vars->scene03_domino->_flags &= 0xFFFB;
- break;
-
- case MSG_SC3_TAKEEGG:
- sceneHandler03_takeEgg(ex);
- break;
-
- case MSG_LIFT_GO:
- g_fullpipe->lift_goAnimation();
- break;
-
- case MSG_SC3_UTRUBACLICK:
- sceneHandler03_goLadder();
- break;
-
- case MSG_SC3_TESTFAT:
- sceneHandler03_giveCoin(ex);
- break;
-
- case 64:
- g_fullpipe->lift_sub05(ex);
- break;
-
- case 93:
- {
- StaticANIObject *ani = g_fullpipe->_currentScene->getStaticANIObjectAtPos(ex->_sceneClickX, ex->_sceneClickY);
- if (ani && ani->_id == ANI_LIFTBUTTON) {
- g_fullpipe->lift_sub1(ani);
- ex->_messageKind = 0;
-
- return 0;
- }
-
- if (g_fullpipe->_currentScene->getPictureObjectIdAtPos(ex->_sceneClickX, ex->_sceneClickY) == PIC_SC3_DOMIN) {
- if (g_vars->scene03_domino)
- if (g_vars->scene03_domino->_flags & 4)
- if (g_fullpipe->_aniMan->isIdle())
- if (!(g_fullpipe->_aniMan->_flags & 0x100) && g_fullpipe->_msgObjectId2 != g_vars->scene03_domino->_id) {
- handleObjectInteraction(g_fullpipe->_aniMan, g_vars->scene03_domino, ex->_keyCode);
- ex->_messageKind = 0;
-
- return 0;
- }
- }
-
- break;
- }
-
- case 97:
- {
- int res = 0;
-
- if (g_fullpipe->_aniMan2) {
- if (g_fullpipe->_aniMan2->_ox < g_fullpipe->_sceneRect.left + 200)
- g_fullpipe->_currentScene->_x = g_fullpipe->_aniMan2->_ox - g_fullpipe->_sceneRect.left - 300;
-
- if (g_fullpipe->_aniMan2->_ox > g_fullpipe->_sceneRect.right - 200)
- g_fullpipe->_currentScene->_x = g_fullpipe->_aniMan2->_ox - g_fullpipe->_sceneRect.right + 300;
-
- res = 1;
- }
-
- g_fullpipe->_behaviorManager->updateBehaviors();
-
- g_fullpipe->startSceneTrack();
-
- return res;
- }
- }
-
- return 0;
-}
-
-void sceneDbgMenu_initScene(Scene *sc) {
- g_vars->selector = sc->getPictureObjectById(PIC_SCD_SEL, 0);
- getGameLoaderInteractionController()->disableFlag24();
- setInputDisabled(0);
-}
-
-GameObject *sceneHandlerDbgMenu_getObjectAtXY(int x, int y) {
- if (g_fullpipe->_currentScene)
- for (uint i = 0; i < g_fullpipe->_currentScene->_picObjList.size(); i++) {
- PictureObject *pic = (PictureObject *)g_fullpipe->_currentScene->_picObjList[i];
-
- if (x >= pic->_ox && y >= pic->_oy) {
- Common::Point point;
-
- pic->getDimensions(&point);
-
- if (x <= pic->_ox + point.x && y <= pic->_oy + point.y && pic != g_vars->selector)
- return pic;
- }
- }
-
- return 0;
-}
-
-int sceneHandlerDbgMenu(ExCommand *ex) {
- if (ex->_messageKind != 17)
- return 0;
-
- int mx = g_fullpipe->_mouseScreenPos.x + g_fullpipe->_sceneRect.left;
- int my = g_fullpipe->_mouseScreenPos.y + g_fullpipe->_sceneRect.top;
-
- if (ex->_messageNum == 29) {
- GameObject *obj = sceneHandlerDbgMenu_getObjectAtXY(mx, my);
- if (obj && canInteractAny(0, obj, -3) ) {
- getGameLoaderInteractionController()->enableFlag24();
- handleObjectInteraction(0, obj, 0);
- }
- return 0;
- }
- if (ex->_messageNum != 33) {
- if (ex->_messageNum == MSG_RESTARTGAME) {
- g_fullpipe->_needRestart = true;
- return 0;
- }
- return 0;
- }
-
- g_fullpipe->_cursorId = PIC_CSR_DEFAULT;
- GameObject *obj = g_fullpipe->_currentScene->getStaticANIObjectAtPos(mx, my);
- if (obj) {
- if (canInteractAny(0, obj, -3)) {
- g_fullpipe->_cursorId = PIC_CSR_DEFAULT;
- g_fullpipe->setCursor(PIC_CSR_DEFAULT);
- return 0;
- }
- } else {
- obj = sceneHandlerDbgMenu_getObjectAtXY(mx, my);
- if (obj && canInteractAny(0, obj, -3) ) {
- g_vars->selector->_flags |= 4;
- g_vars->selector->setOXY(obj->_ox, obj->_oy);
- g_fullpipe->_cursorId = PIC_CSR_DEFAULT;
- g_fullpipe->setCursor(PIC_CSR_DEFAULT);
- return 0;
- }
- g_vars->selector->_flags &= 0xFFFB;
- }
- g_fullpipe->setCursor(g_fullpipe->_cursorId);
-
- return 0;
+void FullpipeEngine::initArcadeKeys(const char *varname) {
+ warning("STUB: FullpipeEngine::initArcadeKeys(\"%s\")", varname);
}
} // End of namespace Fullpipe