[Scummvm-cvs-logs] scummvm master -> a5c920cbab66ef7805364c969240e51a7a387953

sev- sev at scummvm.org
Wed Nov 20 21:37:07 CET 2013


This automated email contains information about 8 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
39f4a502e2 FULLPIPE: Consolidate lift-related functions in one file
24bfdd9e7c FULLPIPE: Move message handlers into separate file
df33980691 FULLPIPE: Move sceneIntro to separate file
b255148097 FULLPIPE: Move scene01 to separate file
120cecdfe4 FULLPIPE: Move scene02 to separate file
3aa648e519 FULLPIPE: Move scene03 into separate file
2a2e0e4db3 FULLPIPE: Moved sceneDbg to a separate file
a5c920cbab FULLPIPE: Reduce header dependency


Commit: 39f4a502e26cd630425f7ee237b974090094304a
    https://github.com/scummvm/scummvm/commit/39f4a502e26cd630425f7ee237b974090094304a
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2013-11-20T12:02:42-08:00

Commit Message:
FULLPIPE: Consolidate lift-related functions in one file

Changed paths:
    engines/fullpipe/fullpipe.h
    engines/fullpipe/lift.cpp
    engines/fullpipe/scenes.cpp



diff --git a/engines/fullpipe/fullpipe.h b/engines/fullpipe/fullpipe.h
index db6be80..e542599 100644
--- a/engines/fullpipe/fullpipe.h
+++ b/engines/fullpipe/fullpipe.h
@@ -234,6 +234,7 @@ public:
 	void getAllInventory();
 
 	int lift_getButtonIdP(int objid);
+	void lift_setButton(const char *name, int state);
 	void lift_sub5(Scene *sc, int qu1, int qu2);
 	void lift_exitSeq(ExCommand *ex);
 	void lift_closedoorSeq();
diff --git a/engines/fullpipe/lift.cpp b/engines/fullpipe/lift.cpp
index 0e38c4f..1d6d986 100644
--- a/engines/fullpipe/lift.cpp
+++ b/engines/fullpipe/lift.cpp
@@ -22,6 +22,8 @@
 
 #include "fullpipe/fullpipe.h"
 
+#include "fullpipe/objects.h"
+#include "fullpipe/objectnames.h"
 #include "fullpipe/constants.h"
 
 namespace Fullpipe {
@@ -64,6 +66,13 @@ int FullpipeEngine::lift_getButtonIdP(int objid) {
 	}
 }
 
+void FullpipeEngine::lift_setButton(const char *name, int state) {
+	GameVar *var = g_fullpipe->getGameLoaderGameVar()->getSubVarByName("OBJSTATES")->getSubVarByName(sO_LiftButtons);
+
+	if (var)
+		var->setSubVarAsInt(name, state);
+}
+
 void FullpipeEngine::lift_sub5(Scene *sc, int qu1, int qu2) {
 	warning("STUB: FullpipeEngine::lift_sub5()");
 }
diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp
index 97445f8..4d804e5 100644
--- a/engines/fullpipe/scenes.cpp
+++ b/engines/fullpipe/scenes.cpp
@@ -44,7 +44,6 @@
 namespace Fullpipe {
 
 int defaultUpdateCursor();
-void setElevatorButton(const char *name, int state);
 
 int sceneIntro_updateCursor();
 void sceneIntro_initScene(Scene *sc);
@@ -685,13 +684,6 @@ 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()");
 }
@@ -1518,7 +1510,7 @@ void scene01_initScene(Scene *sc, int entrance) {
 			bootAnim->_flags &= ~0x04;
 	}
 
-	setElevatorButton(sO_Level2, ST_LBN_2N);
+	g_fullpipe->lift_setButton(sO_Level2, ST_LBN_2N);
 }
 
 int sceneHandler01(ExCommand *cmd) {
@@ -1680,7 +1672,7 @@ void scene03_initScene(Scene *sc) {
 	g_vars->swallowedEgg2 = v->getSubVarByName(sO_Egg2);
 	g_vars->swallowedEgg3 = v->getSubVarByName(sO_Egg3);
 
-	setElevatorButton(sO_Level2, ST_LBN_2N);
+	g_fullpipe->lift_setButton(sO_Level2, ST_LBN_2N);
 
 	g_fullpipe->lift_sub5(sc, QU_SC3_ENTERLIFT, QU_SC3_EXITLIFT);
 }


Commit: 24bfdd9e7c6e8c6afd9038c3f4012fccebe66a81
    https://github.com/scummvm/scummvm/commit/24bfdd9e7c6e8c6afd9038c3f4012fccebe66a81
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2013-11-20T12:11:58-08:00

Commit Message:
FULLPIPE: Move message handlers into separate file

Changed paths:
  A engines/fullpipe/messagehandlers.cpp
    engines/fullpipe/module.mk
    engines/fullpipe/scenes.cpp



diff --git a/engines/fullpipe/messagehandlers.cpp b/engines/fullpipe/messagehandlers.cpp
new file mode 100644
index 0000000..fc57109
--- /dev/null
+++ b/engines/fullpipe/messagehandlers.cpp
@@ -0,0 +1,743 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "fullpipe/fullpipe.h"
+
+#include "fullpipe/messages.h"
+#include "fullpipe/statics.h"
+#include "fullpipe/gameloader.h"
+#include "fullpipe/interaction.h"
+#include "fullpipe/motion.h"
+#include "fullpipe/input.h"
+
+#include "fullpipe/constants.h"
+
+namespace Fullpipe {
+
+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;
+}
+
+} // End of namespace Fullpipe
diff --git a/engines/fullpipe/module.mk b/engines/fullpipe/module.mk
index 5b4169b..2a64f7e 100644
--- a/engines/fullpipe/module.mk
+++ b/engines/fullpipe/module.mk
@@ -12,6 +12,7 @@ MODULE_OBJS = \
 	interaction.o \
 	inventory.o \
 	lift.o \
+	messagehandlers.o \
 	messages.o \
 	modal.o \
 	motion.o \
diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp
index 4d804e5..481dc5f 100644
--- a/engines/fullpipe/scenes.cpp
+++ b/engines/fullpipe/scenes.cpp
@@ -684,713 +684,6 @@ bool FullpipeEngine::sceneSwitcher(EntranceInfo *entrance) {
 	return true;
 }
 
-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();
 


Commit: df339806915a176fc57fa4ac1639949a876abd9d
    https://github.com/scummvm/scummvm/commit/df339806915a176fc57fa4ac1639949a876abd9d
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2013-11-20T12:18:02-08:00

Commit Message:
FULLPIPE: Move sceneIntro to separate file

Changed paths:
  A engines/fullpipe/scenes/sceneIntro.cpp
    engines/fullpipe/module.mk
    engines/fullpipe/scenes.cpp
    engines/fullpipe/scenes.h



diff --git a/engines/fullpipe/module.mk b/engines/fullpipe/module.mk
index 2a64f7e..54b82a7 100644
--- a/engines/fullpipe/module.mk
+++ b/engines/fullpipe/module.mk
@@ -22,7 +22,8 @@ MODULE_OBJS = \
 	sound.o \
 	stateloader.o \
 	statics.o \
-	utils.o
+	utils.o \
+	scenes/sceneIntro.o
 
 # This module can be built as a plugin
 ifeq ($(ENABLE_FULLPIPE), DYNAMIC_PLUGIN)
diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp
index 481dc5f..3933643 100644
--- a/engines/fullpipe/scenes.cpp
+++ b/engines/fullpipe/scenes.cpp
@@ -43,27 +43,6 @@
 
 namespace Fullpipe {
 
-int defaultUpdateCursor();
-
-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 scene02_initScene(Scene *sc);
-int sceneHandler02(ExCommand *ex);
-
-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;
@@ -690,12 +669,6 @@ int defaultUpdateCursor() {
 	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);
 
@@ -708,76 +681,6 @@ void FullpipeEngine::setSwallowedEggsState() {
 	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)
diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h
index 4be8d89..180d823 100644
--- a/engines/fullpipe/scenes.h
+++ b/engines/fullpipe/scenes.h
@@ -27,6 +27,27 @@ namespace Fullpipe {
 
 class StaticANIObject;
 
+int defaultUpdateCursor();
+
+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 scene02_initScene(Scene *sc);
+int sceneHandler02(ExCommand *ex);
+
+void scene03_setEaterState();
+int scene03_updateCursor();
+void scene03_initScene(Scene *sc);
+int sceneHandler03(ExCommand *cmd);
+
+void sceneDbgMenu_initScene(Scene *sc);
+int sceneHandlerDbgMenu(ExCommand *cmd);
+
 class Vars {
 public:
 	Vars();
diff --git a/engines/fullpipe/scenes/sceneIntro.cpp b/engines/fullpipe/scenes/sceneIntro.cpp
new file mode 100644
index 0000000..d60f90f
--- /dev/null
+++ b/engines/fullpipe/scenes/sceneIntro.cpp
@@ -0,0 +1,109 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "fullpipe/fullpipe.h"
+
+#include "fullpipe/constants.h"
+#include "fullpipe/gameloader.h"
+#include "fullpipe/scenes.h"
+#include "fullpipe/modal.h"
+#include "fullpipe/statics.h"
+
+namespace Fullpipe {
+
+int sceneIntro_updateCursor() {
+	g_fullpipe->_cursorId = 0;
+
+	return 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;
+}
+
+} // End of namespace Fullpipe


Commit: b255148097bc8a4daa214d28e734954c6a282011
    https://github.com/scummvm/scummvm/commit/b255148097bc8a4daa214d28e734954c6a282011
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2013-11-20T12:21:59-08:00

Commit Message:
FULLPIPE: Move scene01 to separate file

Changed paths:
  A engines/fullpipe/scenes/scene01.cpp
    engines/fullpipe/module.mk
    engines/fullpipe/scenes.cpp



diff --git a/engines/fullpipe/module.mk b/engines/fullpipe/module.mk
index 54b82a7..3d53320 100644
--- a/engines/fullpipe/module.mk
+++ b/engines/fullpipe/module.mk
@@ -23,7 +23,8 @@ MODULE_OBJS = \
 	stateloader.o \
 	statics.o \
 	utils.o \
-	scenes/sceneIntro.o
+	scenes/sceneIntro.o \
+	scenes/scene01.o
 
 # This module can be built as a plugin
 ifeq ($(ENABLE_FULLPIPE), DYNAMIC_PLUGIN)
diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp
index 3933643..27b8c29 100644
--- a/engines/fullpipe/scenes.cpp
+++ b/engines/fullpipe/scenes.cpp
@@ -681,85 +681,6 @@ void FullpipeEngine::setSwallowedEggsState() {
 	g_vars->swallowedEgg3->_value.intValue = 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;
-	}
-
-	g_fullpipe->lift_setButton(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 scene02_initScene(Scene *sc) {
 	g_vars->scene02_guvTheDrawer = sc->getStaticANIObject1ById(ANI_DADAYASHIK, -1);
 
diff --git a/engines/fullpipe/scenes/scene01.cpp b/engines/fullpipe/scenes/scene01.cpp
new file mode 100644
index 0000000..f446dbb
--- /dev/null
+++ b/engines/fullpipe/scenes/scene01.cpp
@@ -0,0 +1,118 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "fullpipe/fullpipe.h"
+
+//#include "fullpipe/objects.h"
+#include "fullpipe/objectnames.h"
+#include "fullpipe/constants.h"
+
+#include "fullpipe/gameloader.h"
+#include "fullpipe/scenes.h"
+#include "fullpipe/statics.h"
+
+#include "fullpipe/interaction.h"
+#include "fullpipe/behavior.h"
+
+
+namespace Fullpipe {
+
+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;
+	}
+
+	g_fullpipe->lift_setButton(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;
+}
+
+} // End of namespace Fullpipe


Commit: 120cecdfe4aa5106e9096828e2a34e0bd6a58c9f
    https://github.com/scummvm/scummvm/commit/120cecdfe4aa5106e9096828e2a34e0bd6a58c9f
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2013-11-20T12:25:03-08:00

Commit Message:
FULLPIPE: Move scene02 to separate file

Changed paths:
  A engines/fullpipe/scenes/scene02.cpp
    engines/fullpipe/module.mk
    engines/fullpipe/scenes.cpp
    engines/fullpipe/scenes/scene01.cpp



diff --git a/engines/fullpipe/module.mk b/engines/fullpipe/module.mk
index 3d53320..8563f09 100644
--- a/engines/fullpipe/module.mk
+++ b/engines/fullpipe/module.mk
@@ -24,7 +24,8 @@ MODULE_OBJS = \
 	statics.o \
 	utils.o \
 	scenes/sceneIntro.o \
-	scenes/scene01.o
+	scenes/scene01.o \
+	scenes/scene02.o
 
 # This module can be built as a plugin
 ifeq ($(ENABLE_FULLPIPE), DYNAMIC_PLUGIN)
diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp
index 27b8c29..877bdfe 100644
--- a/engines/fullpipe/scenes.cpp
+++ b/engines/fullpipe/scenes.cpp
@@ -681,104 +681,6 @@ void FullpipeEngine::setSwallowedEggsState() {
 	g_vars->swallowedEgg3->_value.intValue = 0;
 }
 
-void scene02_initScene(Scene *sc) {
-	g_vars->scene02_guvTheDrawer = sc->getStaticANIObject1ById(ANI_DADAYASHIK, -1);
-
-	if (g_fullpipe->getObjectState(sO_GuvTheDrawer) == g_fullpipe->getObjectEnumState(sO_GuvTheDrawer, sO_Sleeping)) {
-		Scene *s = g_fullpipe->_currentScene;
-
-		g_fullpipe->_currentScene = sc;
-		g_vars->scene02_guvTheDrawer->changeStatics2(ST_DYAS_LIES);
-		g_fullpipe->_currentScene = s;
-	}
-
-	g_vars->scene02_boxDelay = 0;
-
-	StaticANIObject *box = sc->getStaticANIObject1ById(ANI_SC2_BOX, -1);
-
-	if (box && box->_flags & 4) {
-		g_vars->scene02_boxOpen = false;
-	} else {
-		g_vars->scene02_boxOpen = true;
-		g_vars->scene02_boxDelay = 100 * g_fullpipe->_rnd->getRandomNumber(32767) + 150;
-	}
-
-	g_fullpipe->_floaters->init(g_fullpipe->_gameLoader->_gameVar->getSubVarByName("SC_2"));
-}
-
-void sceneHandler02_ladderClick() {
-	handleObjectInteraction(g_fullpipe->_aniMan2, g_fullpipe->_currentScene->getPictureObjectById(PIC_SC2_DTRUBA, 0), 0);
-}
-
-void sceneHandler02_showLadder() {
-	g_fullpipe->_currentScene->getPictureObjectById(PIC_SC2_LADDER, 0)->_flags |= 4;
-}
-
-void sceneHandler02_hideLadder() {
-	g_fullpipe->_currentScene->getPictureObjectById(PIC_SC2_LADDER, 0)->_flags &= 0xfffb;
-	g_fullpipe->_aniMan2->_priority = 25;
-}
-
-int sceneHandler02(ExCommand *ex) {
-	int res = 0;
-
-	if (ex->_messageKind != 17)
-		return 0;
-
-	switch(ex->_messageNum) {
-	case MSG_SC2_LADDERCLICK:
-		sceneHandler02_ladderClick();
-		return 0;
-
-	case MSG_SC2_SHOWLADDER:
-		sceneHandler02_showLadder();
-		return 0;
-
-	case MSG_SC2_PUTMANUP:
-		g_fullpipe->_aniMan2->_priority = 0;
-		return 0;
-
-	case MSG_SC2_HIDELADDER:
-		sceneHandler02_hideLadder();
-		return 0;
-
-	case 33:
-		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;
-		}
-
-		if (g_vars->scene02_boxOpen) {
-			if (g_vars->scene02_boxDelay >= 1) {
-				--g_vars->scene02_boxDelay;
-			} else if (g_fullpipe->_floaters->_array2.size() >= 1) {
-				if (g_fullpipe->_floaters->_array2[0]->val5 == -50) {
-					g_fullpipe->_floaters->stopAll();
-					g_vars->scene02_boxOpen = false;
-					g_vars->scene02_boxDelay = 100 * g_fullpipe->_rnd->getRandomNumber(32767) + 150;
-				} else {
-					g_fullpipe->_floaters->_array2[0]->val3 = -50;
-				}
-			} else {
-				g_fullpipe->_floaters->genFlies(g_fullpipe->_currentScene, g_fullpipe->_rnd->getRandomNumber(700) + 100, -50, 0, 0);
-				g_vars->scene02_boxDelay = 500 * g_fullpipe->_rnd->getRandomNumber(32767) + 1000;
-			}
-		}
-
-		g_fullpipe->_floaters->update();
-		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);
diff --git a/engines/fullpipe/scenes/scene01.cpp b/engines/fullpipe/scenes/scene01.cpp
index f446dbb..4181bbf 100644
--- a/engines/fullpipe/scenes/scene01.cpp
+++ b/engines/fullpipe/scenes/scene01.cpp
@@ -22,7 +22,6 @@
 
 #include "fullpipe/fullpipe.h"
 
-//#include "fullpipe/objects.h"
 #include "fullpipe/objectnames.h"
 #include "fullpipe/constants.h"
 
diff --git a/engines/fullpipe/scenes/scene02.cpp b/engines/fullpipe/scenes/scene02.cpp
new file mode 100644
index 0000000..dd01af4
--- /dev/null
+++ b/engines/fullpipe/scenes/scene02.cpp
@@ -0,0 +1,137 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "fullpipe/fullpipe.h"
+
+#include "fullpipe/objectnames.h"
+#include "fullpipe/constants.h"
+
+#include "fullpipe/gameloader.h"
+#include "fullpipe/scenes.h"
+#include "fullpipe/statics.h"
+
+#include "fullpipe/interaction.h"
+#include "fullpipe/behavior.h"
+#include "fullpipe/floaters.h"
+
+
+namespace Fullpipe {
+
+void scene02_initScene(Scene *sc) {
+	g_vars->scene02_guvTheDrawer = sc->getStaticANIObject1ById(ANI_DADAYASHIK, -1);
+
+	if (g_fullpipe->getObjectState(sO_GuvTheDrawer) == g_fullpipe->getObjectEnumState(sO_GuvTheDrawer, sO_Sleeping)) {
+		Scene *s = g_fullpipe->_currentScene;
+
+		g_fullpipe->_currentScene = sc;
+		g_vars->scene02_guvTheDrawer->changeStatics2(ST_DYAS_LIES);
+		g_fullpipe->_currentScene = s;
+	}
+
+	g_vars->scene02_boxDelay = 0;
+
+	StaticANIObject *box = sc->getStaticANIObject1ById(ANI_SC2_BOX, -1);
+
+	if (box && box->_flags & 4) {
+		g_vars->scene02_boxOpen = false;
+	} else {
+		g_vars->scene02_boxOpen = true;
+		g_vars->scene02_boxDelay = 100 * g_fullpipe->_rnd->getRandomNumber(32767) + 150;
+	}
+
+	g_fullpipe->_floaters->init(g_fullpipe->_gameLoader->_gameVar->getSubVarByName("SC_2"));
+}
+
+void sceneHandler02_ladderClick() {
+	handleObjectInteraction(g_fullpipe->_aniMan2, g_fullpipe->_currentScene->getPictureObjectById(PIC_SC2_DTRUBA, 0), 0);
+}
+
+void sceneHandler02_showLadder() {
+	g_fullpipe->_currentScene->getPictureObjectById(PIC_SC2_LADDER, 0)->_flags |= 4;
+}
+
+void sceneHandler02_hideLadder() {
+	g_fullpipe->_currentScene->getPictureObjectById(PIC_SC2_LADDER, 0)->_flags &= 0xfffb;
+	g_fullpipe->_aniMan2->_priority = 25;
+}
+
+int sceneHandler02(ExCommand *ex) {
+	int res = 0;
+
+	if (ex->_messageKind != 17)
+		return 0;
+
+	switch(ex->_messageNum) {
+	case MSG_SC2_LADDERCLICK:
+		sceneHandler02_ladderClick();
+		return 0;
+
+	case MSG_SC2_SHOWLADDER:
+		sceneHandler02_showLadder();
+		return 0;
+
+	case MSG_SC2_PUTMANUP:
+		g_fullpipe->_aniMan2->_priority = 0;
+		return 0;
+
+	case MSG_SC2_HIDELADDER:
+		sceneHandler02_hideLadder();
+		return 0;
+
+	case 33:
+		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;
+		}
+
+		if (g_vars->scene02_boxOpen) {
+			if (g_vars->scene02_boxDelay >= 1) {
+				--g_vars->scene02_boxDelay;
+			} else if (g_fullpipe->_floaters->_array2.size() >= 1) {
+				if (g_fullpipe->_floaters->_array2[0]->val5 == -50) {
+					g_fullpipe->_floaters->stopAll();
+					g_vars->scene02_boxOpen = false;
+					g_vars->scene02_boxDelay = 100 * g_fullpipe->_rnd->getRandomNumber(32767) + 150;
+				} else {
+					g_fullpipe->_floaters->_array2[0]->val3 = -50;
+				}
+			} else {
+				g_fullpipe->_floaters->genFlies(g_fullpipe->_currentScene, g_fullpipe->_rnd->getRandomNumber(700) + 100, -50, 0, 0);
+				g_vars->scene02_boxDelay = 500 * g_fullpipe->_rnd->getRandomNumber(32767) + 1000;
+			}
+		}
+
+		g_fullpipe->_floaters->update();
+		g_fullpipe->_behaviorManager->updateBehaviors();
+
+		g_fullpipe->startSceneTrack();
+	}
+
+	return res;
+}
+	
+} // End of namespace Fullpipe


Commit: 3aa648e519fd2dd6606630b19160934bf1899add
    https://github.com/scummvm/scummvm/commit/3aa648e519fd2dd6606630b19160934bf1899add
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2013-11-20T12:28:47-08:00

Commit Message:
FULLPIPE: Move scene03 into separate file

Changed paths:
  A engines/fullpipe/scenes/scene03.cpp
    engines/fullpipe/module.mk
    engines/fullpipe/scenes.cpp



diff --git a/engines/fullpipe/module.mk b/engines/fullpipe/module.mk
index 8563f09..ad6fa45 100644
--- a/engines/fullpipe/module.mk
+++ b/engines/fullpipe/module.mk
@@ -25,7 +25,8 @@ MODULE_OBJS = \
 	utils.o \
 	scenes/sceneIntro.o \
 	scenes/scene01.o \
-	scenes/scene02.o
+	scenes/scene02.o \
+	scenes/scene03.o
 
 # This module can be built as a plugin
 ifeq ($(ENABLE_FULLPIPE), DYNAMIC_PLUGIN)
diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp
index 877bdfe..7ddc7cf 100644
--- a/engines/fullpipe/scenes.cpp
+++ b/engines/fullpipe/scenes.cpp
@@ -669,263 +669,6 @@ int defaultUpdateCursor() {
 	return g_fullpipe->_cursorId;
 }
 
-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 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);
-
-	g_fullpipe->lift_setButton(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();
diff --git a/engines/fullpipe/scenes/scene03.cpp b/engines/fullpipe/scenes/scene03.cpp
new file mode 100644
index 0000000..e9f8a24
--- /dev/null
+++ b/engines/fullpipe/scenes/scene03.cpp
@@ -0,0 +1,294 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "fullpipe/fullpipe.h"
+
+#include "fullpipe/objectnames.h"
+#include "fullpipe/constants.h"
+
+#include "fullpipe/gameloader.h"
+#include "fullpipe/scenes.h"
+#include "fullpipe/statics.h"
+
+#include "fullpipe/interaction.h"
+#include "fullpipe/behavior.h"
+
+namespace Fullpipe {
+
+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 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);
+
+	g_fullpipe->lift_setButton(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;
+}
+
+} // End of namespace Fullpipe


Commit: 2a2e0e4db3e8d291a1e02a2f6b560f30dd767cb2
    https://github.com/scummvm/scummvm/commit/2a2e0e4db3e8d291a1e02a2f6b560f30dd767cb2
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2013-11-20T12:33:30-08:00

Commit Message:
FULLPIPE: Moved sceneDbg to a separate file

Changed paths:
  A engines/fullpipe/scenes/sceneDbg.cpp
    engines/fullpipe/module.mk
    engines/fullpipe/scenes.cpp



diff --git a/engines/fullpipe/module.mk b/engines/fullpipe/module.mk
index ad6fa45..0a7e195 100644
--- a/engines/fullpipe/module.mk
+++ b/engines/fullpipe/module.mk
@@ -23,10 +23,11 @@ MODULE_OBJS = \
 	stateloader.o \
 	statics.o \
 	utils.o \
-	scenes/sceneIntro.o \
 	scenes/scene01.o \
 	scenes/scene02.o \
-	scenes/scene03.o
+	scenes/scene03.o \
+	scenes/sceneDbg.o \
+	scenes/sceneIntro.o
 
 # This module can be built as a plugin
 ifeq ($(ENABLE_FULLPIPE), DYNAMIC_PLUGIN)
diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp
index 7ddc7cf..9789644 100644
--- a/engines/fullpipe/scenes.cpp
+++ b/engines/fullpipe/scenes.cpp
@@ -669,75 +669,4 @@ int defaultUpdateCursor() {
 	return g_fullpipe->_cursorId;
 }
 
-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;
-}
-
 } // End of namespace Fullpipe
diff --git a/engines/fullpipe/scenes/sceneDbg.cpp b/engines/fullpipe/scenes/sceneDbg.cpp
new file mode 100644
index 0000000..83f3b64
--- /dev/null
+++ b/engines/fullpipe/scenes/sceneDbg.cpp
@@ -0,0 +1,107 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "fullpipe/fullpipe.h"
+
+#include "fullpipe/constants.h"
+
+#include "fullpipe/gameloader.h"
+#include "fullpipe/scenes.h"
+#include "fullpipe/statics.h"
+#include "fullpipe/input.h"
+
+#include "fullpipe/interaction.h"
+
+namespace Fullpipe {
+
+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;
+}
+
+} // End of namespace Fullpipe


Commit: a5c920cbab66ef7805364c969240e51a7a387953
    https://github.com/scummvm/scummvm/commit/a5c920cbab66ef7805364c969240e51a7a387953
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2013-11-20T12:36:11-08:00

Commit Message:
FULLPIPE: Reduce header dependency

Changed paths:
    engines/fullpipe/scenes.cpp



diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp
index 9789644..9f27101 100644
--- a/engines/fullpipe/scenes.cpp
+++ b/engines/fullpipe/scenes.cpp
@@ -23,23 +23,16 @@
 #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"
-#include "fullpipe/floaters.h"
 
 namespace Fullpipe {
 






More information about the Scummvm-git-logs mailing list