From 4a191f995cf2abfab8d4e674487a2270b019396f Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Wed, 1 Jan 2014 14:09:19 +0200 Subject: FULLPIPE: implement sceneHandler16() --- engines/fullpipe/constants.h | 13 +++ engines/fullpipe/scenes.cpp | 2 + engines/fullpipe/scenes.h | 2 + engines/fullpipe/scenes/scene16.cpp | 158 ++++++++++++++++++++++++++++++++++++ 4 files changed, 175 insertions(+) diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index cc82ee22d0..ae5288fa49 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -648,6 +648,18 @@ namespace Fullpipe { #define ANI_JETTIE 1392 #define ANI_MUG 1296 #define ANI_WIRE16 1344 +#define MSG_SC16_FILLMUG 1363 +#define MSG_SC16_HIDEMAN 1357 +#define MSG_SC16_HIDEMUG 1351 +#define MSG_SC16_HIDEWIRE 1349 +#define MSG_SC16_LAUGHSOUND 4993 +#define MSG_SC16_MUGCLICK 1366 +#define MSG_SC16_SHOWBEARDED 4956 +#define MSG_SC16_SHOWMAN 1358 +#define MSG_SC16_SHOWMUG 1352 +#define MSG_SC16_SHOWMUGFULL 1396 +#define MSG_SC16_SHOWWIRE 1350 +#define MSG_SC16_STARTLAUGH 1374 #define MV_GRL_LAUGH_POPA 3278 #define PIC_SC16_TUMBA 1368 #define SND_16_034 3854 @@ -658,6 +670,7 @@ namespace Fullpipe { #define ANI_DROP_24 3505 #define ANI_JET24 1837 #define ANI_WATER24 1834 +#define MV_MAN_TURN_RL 332 #define MV_WTR24_FLOW 1835 #define MV_WTR24_FLOWLOWER 1844 #define MV_JET24_FLOW 1838 diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp index 9ab3328448..679095a213 100644 --- a/engines/fullpipe/scenes.cpp +++ b/engines/fullpipe/scenes.cpp @@ -242,6 +242,8 @@ Vars::Vars() { scene16_var09 = 0; scene16_sound = 0; scene16_var10 = 0; + scene16_var11 = 0; + scene16_var12 = 0; scene24_jetIsOn = false; scene24_flowIsLow = false; diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h index d8dcf8918a..1b9bd3a921 100644 --- a/engines/fullpipe/scenes.h +++ b/engines/fullpipe/scenes.h @@ -319,6 +319,8 @@ public: int scene16_var09; int scene16_sound; int scene16_var10; + int scene16_var11; + int scene16_var12; bool scene24_jetIsOn; bool scene24_flowIsLow; diff --git a/engines/fullpipe/scenes/scene16.cpp b/engines/fullpipe/scenes/scene16.cpp index b2053851d3..5804f7da72 100644 --- a/engines/fullpipe/scenes/scene16.cpp +++ b/engines/fullpipe/scenes/scene16.cpp @@ -124,4 +124,162 @@ int scene16_updateCursor() { return g_fp->_cursorId; } +void sceneHandler16_laughSound() { + warning("STUB: sceneHandler16_laughSound()"); +} + +void sceneHandler16_showBearded() { + warning("STUB: sceneHandler16_showBearded()"); +} + +void sceneHandler16_showMugFull() { + warning("STUB: sceneHandler16_showMugFull()"); +} + +void sceneHandler16_fillMug() { + warning("STUB: sceneHandler16_fillMug()"); +} + +void sceneHandler16_startLaugh() { + warning("STUB: sceneHandler16_startLaugh()"); +} + +void sceneHandler16_mugClick() { + warning("STUB: sceneHandler16_mugClick()"); +} + +void sceneHandler16_showMan() { + warning("STUB: sceneHandler16_showMan()"); +} + +void sceneHandler16_showMug() { + warning("STUB: sceneHandler16_showMug()"); +} + +void sceneHandler16_hideMan() { + warning("STUB: sceneHandler16_hideMan()"); +} + +void sceneHandler16_hideMug() { + warning("STUB: sceneHandler16_hideMug()"); +} + +void sceneHandler16_hideWire() { + warning("STUB: sceneHandler16_hideWire()"); +} + +void sceneHandler16_showWire() { + warning("STUB: sceneHandler16_showWire()"); +} + +void sceneHandler16_sub01() { + warning("STUB: sceneHandler16_sub01()"); +} + +void sceneHandler16_sub02() { + warning("STUB: sceneHandler16_sub02()"); +} + +void sceneHandler16_sub03() { + warning("STUB: sceneHandler16_sub03()"); +} + +int sceneHandler16(ExCommand *cmd) { + if (cmd->_messageKind != 17) + return 0; + + switch(cmd->_messageNum) { + case MSG_SC16_LAUGHSOUND: + sceneHandler16_laughSound(); + break; + + case MSG_SC16_SHOWBEARDED: + sceneHandler16_showBearded(); + break; + + case MSG_SC16_SHOWMUGFULL: + sceneHandler16_showMugFull(); + break; + + case MSG_SC16_FILLMUG: + sceneHandler16_fillMug(); + break; + + case MSG_SC16_STARTLAUGH: + sceneHandler16_startLaugh(); + break; + + case MSG_SC16_MUGCLICK: + if (!g_fp->_aniMan->isIdle() || g_fp->_aniMan->_flags & 0x100) + cmd->_messageKind = 0; + else + sceneHandler16_mugClick(); + + break; + + case MSG_SC16_SHOWMAN: + sceneHandler16_showMan(); + break; + + case MSG_SC16_SHOWMUG: + sceneHandler16_showMug(); + break; + + case MSG_SC16_HIDEMAN: + sceneHandler16_hideMan(); + break; + + case MSG_SC16_HIDEMUG: + sceneHandler16_hideMug(); + break; + + case MSG_SC16_HIDEWIRE: + sceneHandler16_hideWire(); + break; + + case MSG_SC16_SHOWWIRE: + sceneHandler16_showWire(); + break; + + case 33: + if (g_fp->_aniMan2) { + int x = g_fp->_aniMan2->_ox; + + g_vars->scene16_var11 = x; + g_vars->scene16_var12 = g_fp->_aniMan2->_oy; + + if (x < g_fp->_sceneRect.left + g_vars->scene16_var01) { + g_fp->_currentScene->_x = x - g_vars->scene16_var03 - g_fp->_sceneRect.left; + + x = g_vars->scene16_var11; + } + + if (x > g_fp->_sceneRect.right - g_vars->scene16_var01) + g_fp->_currentScene->_x = x + g_vars->scene16_var03 - g_fp->_sceneRect.right; + } + + if (g_vars->scene16_var10) { + g_vars->scene16_var08++; + + if (g_vars->scene16_var08 < 280) { + sceneHandler16_sub01(); + + g_vars->scene16_var08 = 0; + } + } + + if (g_vars->scene16_var09) { + if (g_fp->_aniMan->_movement) + if (g_fp->_aniMan->_movement->_id == MV_MAN_TURN_RL) + sceneHandler16_sub03(); + } + + g_fp->_behaviorManager->updateBehaviors(); + g_fp->startSceneTrack(); + + } + + return 0; +} + } // End of namespace Fullpipe -- cgit v1.2.3