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

sev- sev at scummvm.org
Sun Jan 26 15:54:10 CET 2014


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

Summary:
f7c768552a FULLPIPE: Implement lift_clickButton()
704eca2ddf FULLPIPE: Implement lift_getButtonIdH()
a32f56f9f2 FULLPIPE: Implement lift_getButtonIdN()
05ab849247 FULLPIPE: Implement lift_setButtonStatics()
b2438f8d01 FULLPIPE: Implement lift_init()


Commit: f7c768552a53f3f3733d9bade6667445aec004d3
    https://github.com/scummvm/scummvm/commit/f7c768552a53f3f3733d9bade6667445aec004d3
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-01-26T06:53:08-08:00

Commit Message:
FULLPIPE: Implement lift_clickButton()

Changed paths:
    engines/fullpipe/fullpipe.cpp
    engines/fullpipe/fullpipe.h
    engines/fullpipe/lift.cpp
    engines/fullpipe/scenes/scene03.cpp
    engines/fullpipe/scenes/scene06.cpp
    engines/fullpipe/scenes/scene10.cpp
    engines/fullpipe/scenes/scene14.cpp
    engines/fullpipe/scenes/scene15.cpp
    engines/fullpipe/scenes/scene30.cpp
    engines/fullpipe/scenes/scene32.cpp
    engines/fullpipe/scenes/scene34.cpp
    engines/fullpipe/scenes/scene35.cpp
    engines/fullpipe/scenes/scene38.cpp



diff --git a/engines/fullpipe/fullpipe.cpp b/engines/fullpipe/fullpipe.cpp
index 1c319d3..578a40f 100644
--- a/engines/fullpipe/fullpipe.cpp
+++ b/engines/fullpipe/fullpipe.cpp
@@ -82,6 +82,8 @@ FullpipeEngine::FullpipeEngine(OSystem *syst, const ADGameDescription *gameDesc)
 
 	_modalObject = 0;
 
+	_lastLiftButton = 0;
+
 	_gameContinue = true;
 	_needRestart = false;
 	_flgPlayIntro = true;
diff --git a/engines/fullpipe/fullpipe.h b/engines/fullpipe/fullpipe.h
index 0fc69c2..2e071b1 100644
--- a/engines/fullpipe/fullpipe.h
+++ b/engines/fullpipe/fullpipe.h
@@ -269,13 +269,16 @@ public:
 
 	void getAllInventory();
 
+	StaticANIObject *_lastLiftButton;
+
 	int lift_getButtonIdP(int objid);
 	void lift_setButton(const char *name, int state);
 	void lift_sub5(Scene *sc, int qu1, int qu2);
 	void lift_sub7(Scene *sc, int buttonId);
 	void lift_exitSeq(ExCommand *ex);
 	void lift_closedoorSeq();
-	void lift_animation3();
+	void lift_clickButton();
+	void lift_walkAndGo();
 	void lift_goAnimation();
 	void lift_sub1(StaticANIObject *ani);
 	void lift_startExitQueue();
diff --git a/engines/fullpipe/lift.cpp b/engines/fullpipe/lift.cpp
index e5c566e..c8434fa 100644
--- a/engines/fullpipe/lift.cpp
+++ b/engines/fullpipe/lift.cpp
@@ -85,8 +85,13 @@ void FullpipeEngine::lift_closedoorSeq() {
 	warning("STUB: FullpipeEngine::lift_closedoorSeq()");
 }
 
-void FullpipeEngine::lift_animation3() {
-	warning("STUB: FullpipeEngine::lift_animation3()");
+void FullpipeEngine::lift_walkAndGo() {
+	warning("STUB: FullpipeEngine::lift_walkAndGo()");
+}
+
+void FullpipeEngine::lift_clickButton() {
+	if (_lastLiftButton)
+		lift_walkAndGo();
 }
 
 void FullpipeEngine::lift_goAnimation() {
diff --git a/engines/fullpipe/scenes/scene03.cpp b/engines/fullpipe/scenes/scene03.cpp
index 40e70e2..c706dad 100644
--- a/engines/fullpipe/scenes/scene03.cpp
+++ b/engines/fullpipe/scenes/scene03.cpp
@@ -215,7 +215,7 @@ int sceneHandler03(ExCommand *ex) {
 		break;
 
 	case MSG_LIFT_CLICKBUTTON:
-		g_fp->lift_animation3();
+		g_fp->lift_clickButton();
 		break;
 
 	case MSG_SC3_HIDEDOMINO:
diff --git a/engines/fullpipe/scenes/scene06.cpp b/engines/fullpipe/scenes/scene06.cpp
index c352d27..0c27151 100644
--- a/engines/fullpipe/scenes/scene06.cpp
+++ b/engines/fullpipe/scenes/scene06.cpp
@@ -590,7 +590,7 @@ int sceneHandler06(ExCommand *ex) {
 		break;
 
 	case MSG_LIFT_CLICKBUTTON:
-		g_fp->lift_animation3();
+		g_fp->lift_clickButton();
 		break;
 
 	case MSG_SPINHANDLE:
diff --git a/engines/fullpipe/scenes/scene10.cpp b/engines/fullpipe/scenes/scene10.cpp
index f8d16b2..6836cd6 100644
--- a/engines/fullpipe/scenes/scene10.cpp
+++ b/engines/fullpipe/scenes/scene10.cpp
@@ -140,7 +140,7 @@ int sceneHandler10(ExCommand *ex) {
 		break;
 
 	case MSG_LIFT_CLICKBUTTON:
-		g_fp->lift_animation3();
+		g_fp->lift_clickButton();
 		break;
 
 	case MSG_SC10_LADDERTOBACK:
diff --git a/engines/fullpipe/scenes/scene14.cpp b/engines/fullpipe/scenes/scene14.cpp
index 4a09bc9..e0618ee 100644
--- a/engines/fullpipe/scenes/scene14.cpp
+++ b/engines/fullpipe/scenes/scene14.cpp
@@ -665,7 +665,7 @@ int sceneHandler14(ExCommand *cmd) {
 		break;
 
 	case MSG_LIFT_CLICKBUTTON:
-		g_fp->lift_animation3();
+		g_fp->lift_clickButton();
 		break;
 
 	case MSG_SC14_SHOWBALLGMAHIT:
diff --git a/engines/fullpipe/scenes/scene15.cpp b/engines/fullpipe/scenes/scene15.cpp
index 046e9c9..ece260d 100644
--- a/engines/fullpipe/scenes/scene15.cpp
+++ b/engines/fullpipe/scenes/scene15.cpp
@@ -144,7 +144,7 @@ int sceneHandler15(ExCommand *cmd) {
 		break;
 
 	case MSG_LIFT_CLICKBUTTON:
-		g_fp->lift_animation3();
+		g_fp->lift_clickButton();
 		break;
 
 	case MSG_SC15_PULL:
diff --git a/engines/fullpipe/scenes/scene30.cpp b/engines/fullpipe/scenes/scene30.cpp
index 59cb83e..d115a70 100644
--- a/engines/fullpipe/scenes/scene30.cpp
+++ b/engines/fullpipe/scenes/scene30.cpp
@@ -103,7 +103,7 @@ int sceneHandler30(ExCommand *cmd) {
 		break;
 
 	case MSG_LIFT_CLICKBUTTON:
-		g_fp->lift_animation3();
+		g_fp->lift_clickButton();
 		break;
 
 	case MSG_SC30_UPDATEPATH:
diff --git a/engines/fullpipe/scenes/scene32.cpp b/engines/fullpipe/scenes/scene32.cpp
index c93e888..87ecf22 100644
--- a/engines/fullpipe/scenes/scene32.cpp
+++ b/engines/fullpipe/scenes/scene32.cpp
@@ -291,7 +291,7 @@ int sceneHandler32(ExCommand *cmd) {
 		break;
 
 	case MSG_LIFT_CLICKBUTTON:
-		g_fp->lift_animation3();
+		g_fp->lift_clickButton();
 		break;
 
 	case MSG_SC33_TRYKUBIK:
diff --git a/engines/fullpipe/scenes/scene34.cpp b/engines/fullpipe/scenes/scene34.cpp
index 942a0ab..72a289a 100644
--- a/engines/fullpipe/scenes/scene34.cpp
+++ b/engines/fullpipe/scenes/scene34.cpp
@@ -317,7 +317,7 @@ int sceneHandler34(ExCommand *cmd) {
 		break;
 
 	case MSG_LIFT_CLICKBUTTON:
-		g_fp->lift_animation3();
+		g_fp->lift_clickButton();
 		break;
 
 	case MSG_SC34_FROMCACTUS:
diff --git a/engines/fullpipe/scenes/scene35.cpp b/engines/fullpipe/scenes/scene35.cpp
index 290213c..ac8ed71 100644
--- a/engines/fullpipe/scenes/scene35.cpp
+++ b/engines/fullpipe/scenes/scene35.cpp
@@ -168,7 +168,7 @@ int sceneHandler35(ExCommand *cmd) {
 		break;
 
 	case MSG_LIFT_CLICKBUTTON:
-		g_fp->lift_animation3();
+		g_fp->lift_clickButton();
 		break;
 
 	case MSG_SC35_STOPFLOW:
diff --git a/engines/fullpipe/scenes/scene38.cpp b/engines/fullpipe/scenes/scene38.cpp
index 198a88f..bf7c2a3 100644
--- a/engines/fullpipe/scenes/scene38.cpp
+++ b/engines/fullpipe/scenes/scene38.cpp
@@ -348,7 +348,7 @@ int sceneHandler38(ExCommand *cmd) {
 		break;
 
 	case MSG_LIFT_CLICKBUTTON:
-		g_fp->lift_animation3();
+		g_fp->lift_clickButton();
 		break;
 
 	case MSG_SC38_POINT:


Commit: 704eca2ddfc13867bd969ac64f7c458bbdea188c
    https://github.com/scummvm/scummvm/commit/704eca2ddfc13867bd969ac64f7c458bbdea188c
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-01-26T06:53:08-08:00

Commit Message:
FULLPIPE: Implement lift_getButtonIdH()

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



diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index dfc2146..408f765 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -219,25 +219,35 @@ namespace Fullpipe {
 #define SND_INTR_019 5220
 #define ST_EGTR_SLIMSORROW 340
 #define ST_FLY_FLY 4918
+#define ST_LBN_0H 2835
+#define ST_LBN_1H 2791
+#define ST_LBN_2H 2793
+#define ST_LBN_3H 2795
+#define ST_LBN_4H 2797
+#define ST_LBN_5H 2799
+#define ST_LBN_6H 2801
+#define ST_LBN_7H 2803
+#define ST_LBN_8H 2805
+#define ST_LBN_9H 2807
 #define ST_LBN_0N 2832
-#define ST_LBN_0P 2833
 #define ST_LBN_1N 2753
-#define ST_LBN_1P 2754
 #define ST_LBN_2N 2756
-#define ST_LBN_2P 2757
 #define ST_LBN_3N 2759
-#define ST_LBN_3P 2760
 #define ST_LBN_4N 2762
-#define ST_LBN_4P 2763
 #define ST_LBN_5N 2765
-#define ST_LBN_5P 2766
 #define ST_LBN_6N 2768
-#define ST_LBN_6P 2769
 #define ST_LBN_7N 2771
-#define ST_LBN_7P 2772
 #define ST_LBN_8N 2774
-#define ST_LBN_8P 2775
 #define ST_LBN_9N 2777
+#define ST_LBN_0P 2833
+#define ST_LBN_1P 2754
+#define ST_LBN_2P 2757
+#define ST_LBN_3P 2760
+#define ST_LBN_4P 2763
+#define ST_LBN_5P 2766
+#define ST_LBN_6P 2769
+#define ST_LBN_7P 2772
+#define ST_LBN_8P 2775
 #define ST_LBN_9P 2778
 #define ST_MAN_EMPTY 476
 #define ST_MAN_GOU 459
diff --git a/engines/fullpipe/fullpipe.h b/engines/fullpipe/fullpipe.h
index 2e071b1..c41cc92 100644
--- a/engines/fullpipe/fullpipe.h
+++ b/engines/fullpipe/fullpipe.h
@@ -272,6 +272,7 @@ public:
 	StaticANIObject *_lastLiftButton;
 
 	int lift_getButtonIdP(int objid);
+	int lift_getButtonIdH(int objid);
 	void lift_setButton(const char *name, int state);
 	void lift_sub5(Scene *sc, int qu1, int qu2);
 	void lift_sub7(Scene *sc, int buttonId);
diff --git a/engines/fullpipe/lift.cpp b/engines/fullpipe/lift.cpp
index c8434fa..97f6547 100644
--- a/engines/fullpipe/lift.cpp
+++ b/engines/fullpipe/lift.cpp
@@ -32,37 +32,73 @@ int FullpipeEngine::lift_getButtonIdP(int objid) {
 	switch (objid) {
 	case ST_LBN_0N:
 		return ST_LBN_0P;
-		break;
+
 	case ST_LBN_1N:
 		return ST_LBN_1P;
-		break;
+
 	case ST_LBN_2N:
 		return ST_LBN_2P;
-		break;
+
 	case ST_LBN_3N:
 		return ST_LBN_3P;
-		break;
+
 	case ST_LBN_4N:
 		return ST_LBN_4P;
-		break;
+
 	case ST_LBN_5N:
 		return ST_LBN_5P;
-		break;
+
 	case ST_LBN_6N:
 		return ST_LBN_6P;
-		break;
+
 	case ST_LBN_7N:
 		return ST_LBN_7P;
-		break;
+
 	case ST_LBN_8N:
 		return ST_LBN_8P;
-		break;
+
 	case ST_LBN_9N:
 		return ST_LBN_9P;
-		break;
+
+	default:
+		return 0;
+	}
+}
+
+int FullpipeEngine::lift_getButtonIdH(int objid) {
+	switch (objid) {
+	case ST_LBN_0P:
+		return ST_LBN_0H;
+
+	case ST_LBN_1P:
+		return ST_LBN_1H;
+
+	case ST_LBN_2P:
+		return ST_LBN_2H;
+
+	case ST_LBN_3P:
+		return ST_LBN_3H;
+
+	case ST_LBN_4P:
+		return ST_LBN_4H;
+
+	case ST_LBN_5P:
+		return ST_LBN_5H;
+
+	case ST_LBN_6P:
+		return ST_LBN_6H;
+
+	case ST_LBN_7P:
+		return ST_LBN_7H;
+
+	case ST_LBN_8P:
+		return ST_LBN_8H;
+
+	case ST_LBN_9P:
+		return ST_LBN_9H;
+
 	default:
 		return 0;
-		break;
 	}
 }
 


Commit: a32f56f9f23dfd7e17ad91ad77295f0707c2a8ba
    https://github.com/scummvm/scummvm/commit/a32f56f9f23dfd7e17ad91ad77295f0707c2a8ba
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-01-26T06:53:08-08:00

Commit Message:
FULLPIPE: Implement lift_getButtonIdN()

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



diff --git a/engines/fullpipe/fullpipe.h b/engines/fullpipe/fullpipe.h
index c41cc92..baf0380 100644
--- a/engines/fullpipe/fullpipe.h
+++ b/engines/fullpipe/fullpipe.h
@@ -273,6 +273,7 @@ public:
 
 	int lift_getButtonIdP(int objid);
 	int lift_getButtonIdH(int objid);
+	int lift_getButtonIdN(int objid);
 	void lift_setButton(const char *name, int state);
 	void lift_sub5(Scene *sc, int qu1, int qu2);
 	void lift_sub7(Scene *sc, int buttonId);
diff --git a/engines/fullpipe/lift.cpp b/engines/fullpipe/lift.cpp
index 97f6547..32d5f33 100644
--- a/engines/fullpipe/lift.cpp
+++ b/engines/fullpipe/lift.cpp
@@ -102,6 +102,63 @@ int FullpipeEngine::lift_getButtonIdH(int objid) {
 	}
 }
 
+int FullpipeEngine::lift_getButtonIdN(int objid) {
+	switch (objid) {
+	case ST_LBN_0H:
+	case ST_LBN_0N:
+	case ST_LBN_0P:
+		return ST_LBN_0N;
+
+	case ST_LBN_1H:
+	case ST_LBN_1N:
+	case ST_LBN_1P:
+		return ST_LBN_1N;
+
+	case ST_LBN_2H:
+	case ST_LBN_2N:
+	case ST_LBN_2P:
+		return ST_LBN_2N;
+
+	case ST_LBN_3H:
+	case ST_LBN_3N:
+	case ST_LBN_3P:
+		return ST_LBN_3N;
+
+	case ST_LBN_4H:
+	case ST_LBN_4N:
+	case ST_LBN_4P:
+		return ST_LBN_4N;
+
+	case ST_LBN_5H:
+	case ST_LBN_5N:
+	case ST_LBN_5P:
+		return ST_LBN_5N;
+
+	case ST_LBN_6H:
+	case ST_LBN_6N:
+	case ST_LBN_6P:
+		return ST_LBN_6N;
+
+	case ST_LBN_7H:
+	case ST_LBN_7N:
+	case ST_LBN_7P:
+		return ST_LBN_7N;
+
+	case ST_LBN_8H:
+	case ST_LBN_8N:
+	case ST_LBN_8P:
+		return ST_LBN_8N;
+
+	case ST_LBN_9H:
+	case ST_LBN_9N:
+	case ST_LBN_9P:
+		return ST_LBN_9N;
+
+	default:
+		return 0;
+	}
+}
+
 void FullpipeEngine::lift_setButton(const char *name, int state) {
 	GameVar *var = g_fp->getGameLoaderGameVar()->getSubVarByName("OBJSTATES")->getSubVarByName(sO_LiftButtons);
 


Commit: 05ab84924776d49ffee786a21e98cd95fd096e06
    https://github.com/scummvm/scummvm/commit/05ab84924776d49ffee786a21e98cd95fd096e06
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-01-26T06:53:08-08:00

Commit Message:
FULLPIPE: Implement lift_setButtonStatics()

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



diff --git a/engines/fullpipe/fullpipe.h b/engines/fullpipe/fullpipe.h
index baf0380..09160db 100644
--- a/engines/fullpipe/fullpipe.h
+++ b/engines/fullpipe/fullpipe.h
@@ -276,7 +276,7 @@ public:
 	int lift_getButtonIdN(int objid);
 	void lift_setButton(const char *name, int state);
 	void lift_sub5(Scene *sc, int qu1, int qu2);
-	void lift_sub7(Scene *sc, int buttonId);
+	void lift_setButtonStatics(Scene *sc, int buttonId);
 	void lift_exitSeq(ExCommand *ex);
 	void lift_closedoorSeq();
 	void lift_clickButton();
diff --git a/engines/fullpipe/lift.cpp b/engines/fullpipe/lift.cpp
index 32d5f33..81d7d2d 100644
--- a/engines/fullpipe/lift.cpp
+++ b/engines/fullpipe/lift.cpp
@@ -25,6 +25,8 @@
 #include "fullpipe/objects.h"
 #include "fullpipe/objectnames.h"
 #include "fullpipe/constants.h"
+#include "fullpipe/scene.h"
+#include "fullpipe/statics.h"
 
 namespace Fullpipe {
 
@@ -209,8 +211,17 @@ bool FullpipeEngine::lift_checkButton(const char *varname) {
 	return false;
 }
 
-void FullpipeEngine::lift_sub7(Scene *sc, int buttonId) {
-	warning("STUB: lift_sub7()");
+void FullpipeEngine::lift_setButtonStatics(Scene *sc, int buttonId) {
+	for (uint i = 0; i < sc->_staticANIObjectList1.size(); i++) {
+		StaticANIObject *ani = (StaticANIObject *)sc->_staticANIObjectList1[i];
+
+		if (ani->_id == ANI_LIFTBUTTON) {
+			int id = lift_getButtonIdN(ani->_statics->_staticsId);
+
+			if (id == buttonId)
+				ani->_statics = ani->getStaticsById(id);
+		}
+	}
 }
 
 
diff --git a/engines/fullpipe/scenes/scene38.cpp b/engines/fullpipe/scenes/scene38.cpp
index bf7c2a3..2c863f6 100644
--- a/engines/fullpipe/scenes/scene38.cpp
+++ b/engines/fullpipe/scenes/scene38.cpp
@@ -83,7 +83,7 @@ void scene38_initScene(Scene *sc) {
 	}
 
 	g_fp->lift_sub5(sc, QU_SC38_ENTERLIFT, QU_SC38_EXITLIFT);
-	g_fp->lift_sub7(sc, ST_LBN_0N);
+	g_fp->lift_setButtonStatics(sc, ST_LBN_0N);
 }
 
 void sceneHandler38_tryTakeBottle() {


Commit: b2438f8d013ff75bab2d55d7d868fe53441a115e
    https://github.com/scummvm/scummvm/commit/b2438f8d013ff75bab2d55d7d868fe53441a115e
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-01-26T06:53:08-08:00

Commit Message:
FULLPIPE: Implement lift_init()

Changed paths:
    engines/fullpipe/fullpipe.cpp
    engines/fullpipe/fullpipe.h
    engines/fullpipe/lift.cpp
    engines/fullpipe/scenes/scene03.cpp
    engines/fullpipe/scenes/scene06.cpp
    engines/fullpipe/scenes/scene10.cpp
    engines/fullpipe/scenes/scene14.cpp
    engines/fullpipe/scenes/scene15.cpp
    engines/fullpipe/scenes/scene30.cpp
    engines/fullpipe/scenes/scene32.cpp
    engines/fullpipe/scenes/scene34.cpp
    engines/fullpipe/scenes/scene35.cpp
    engines/fullpipe/scenes/scene38.cpp



diff --git a/engines/fullpipe/fullpipe.cpp b/engines/fullpipe/fullpipe.cpp
index 578a40f..b1e366c 100644
--- a/engines/fullpipe/fullpipe.cpp
+++ b/engines/fullpipe/fullpipe.cpp
@@ -82,7 +82,12 @@ FullpipeEngine::FullpipeEngine(OSystem *syst, const ADGameDescription *gameDesc)
 
 	_modalObject = 0;
 
+	_liftEnterMQ = 0;
+	_liftExitMQ = 0;
+	_lift = 0;
 	_lastLiftButton = 0;
+	_liftX = 0;
+	_liftY = 0;
 
 	_gameContinue = true;
 	_needRestart = false;
diff --git a/engines/fullpipe/fullpipe.h b/engines/fullpipe/fullpipe.h
index 09160db..1e58327 100644
--- a/engines/fullpipe/fullpipe.h
+++ b/engines/fullpipe/fullpipe.h
@@ -60,6 +60,7 @@ class GameProject;
 class GameObject;
 class GlobalMessageQueueList;
 struct MessageHandler;
+class MessageQueue;
 struct MovTable;
 class MGM;
 class NGIArchive;
@@ -270,12 +271,17 @@ public:
 	void getAllInventory();
 
 	StaticANIObject *_lastLiftButton;
+	MessageQueue *_liftEnterMQ;
+	MessageQueue *_liftExitMQ;
+	StaticANIObject *_lift;
+	int _liftX;
+	int _liftY;
 
 	int lift_getButtonIdP(int objid);
 	int lift_getButtonIdH(int objid);
 	int lift_getButtonIdN(int objid);
 	void lift_setButton(const char *name, int state);
-	void lift_sub5(Scene *sc, int qu1, int qu2);
+	void lift_init(Scene *sc, int qu1, int qu2);
 	void lift_setButtonStatics(Scene *sc, int buttonId);
 	void lift_exitSeq(ExCommand *ex);
 	void lift_closedoorSeq();
diff --git a/engines/fullpipe/lift.cpp b/engines/fullpipe/lift.cpp
index 81d7d2d..4a5b124 100644
--- a/engines/fullpipe/lift.cpp
+++ b/engines/fullpipe/lift.cpp
@@ -25,8 +25,10 @@
 #include "fullpipe/objects.h"
 #include "fullpipe/objectnames.h"
 #include "fullpipe/constants.h"
+
 #include "fullpipe/scene.h"
 #include "fullpipe/statics.h"
+#include "fullpipe/messages.h"
 
 namespace Fullpipe {
 
@@ -168,8 +170,51 @@ void FullpipeEngine::lift_setButton(const char *name, int state) {
 		var->setSubVarAsInt(name, state);
 }
 
-void FullpipeEngine::lift_sub5(Scene *sc, int qu1, int qu2) {
-	warning("STUB: FullpipeEngine::lift_sub5()");
+void FullpipeEngine::lift_init(Scene *sc, int enterSeq, int exitSeq) {
+	_lastLiftButton = 0;
+
+	_liftEnterMQ = sc->getMessageQueueById(enterSeq);
+	if (!_liftEnterMQ)
+		return;
+
+	_liftExitMQ = sc->getMessageQueueById(exitSeq);
+
+	if (!_liftExitMQ)
+		return;
+
+	ExCommand *ex = _liftEnterMQ->getExCommandByIndex(0);
+
+	if (!ex)
+		return;
+
+	_liftX = ex->_x;
+	_liftY = ex->_y;
+
+	_lift = sc->getStaticANIObject1ById(ANI_LIFT, -1);
+
+	for (uint i = 0; i < sc->_staticANIObjectList1.size(); i++) {
+		StaticANIObject *ani = (StaticANIObject *)sc->_staticANIObjectList1[i];
+
+		if (ani->_id == ANI_LIFTBUTTON)
+			ani->_statics = ani->getStaticsById(lift_getButtonIdP(ani->_statics->_staticsId));
+	}
+
+	GameVar *var = getGameLoaderGameVar()->getSubVarByName("OBJSTATES")->getSubVarByName(sO_LiftButtons);
+	if (var) {
+		for (var = var->_subVars; var; var = var->_nextVarObj) {
+			for (uint i = 0; i < sc->_staticANIObjectList1.size(); i++) {
+				StaticANIObject *ani = (StaticANIObject *)sc->_staticANIObjectList1[i];
+
+				if (ani->_id == ANI_LIFTBUTTON) {
+					int id = lift_getButtonIdN(ani->_statics->_staticsId);
+
+					if (id == var->_value.intValue)
+						ani->_statics = ani->getStaticsById(id);
+				}
+
+			}
+		}
+	}
 }
 
 void FullpipeEngine::lift_exitSeq(ExCommand *ex) {
diff --git a/engines/fullpipe/scenes/scene03.cpp b/engines/fullpipe/scenes/scene03.cpp
index c706dad..9ba84a5 100644
--- a/engines/fullpipe/scenes/scene03.cpp
+++ b/engines/fullpipe/scenes/scene03.cpp
@@ -59,7 +59,7 @@ void scene03_initScene(Scene *sc) {
 
 	g_fp->lift_setButton(sO_Level2, ST_LBN_2N);
 
-	g_fp->lift_sub5(sc, QU_SC3_ENTERLIFT, QU_SC3_EXITLIFT);
+	g_fp->lift_init(sc, QU_SC3_ENTERLIFT, QU_SC3_EXITLIFT);
 }
 
 void scene03_setEaterState() {
diff --git a/engines/fullpipe/scenes/scene06.cpp b/engines/fullpipe/scenes/scene06.cpp
index 0c27151..7d637d8 100644
--- a/engines/fullpipe/scenes/scene06.cpp
+++ b/engines/fullpipe/scenes/scene06.cpp
@@ -531,7 +531,7 @@ void scene06_initScene(Scene *sc) {
 		g_vars->scene06_mumsy->hide();
 
 	g_fp->lift_setButton(sO_Level3, ST_LBN_3N);
-	g_fp->lift_sub5(sc, QU_SC6_ENTERLIFT, QU_SC6_EXITLIFT);
+	g_fp->lift_init(sc, QU_SC6_ENTERLIFT, QU_SC6_EXITLIFT);
 	g_fp->initArcadeKeys("SC_6");
 
 	sceneHandler06_setExits(sc);
diff --git a/engines/fullpipe/scenes/scene10.cpp b/engines/fullpipe/scenes/scene10.cpp
index 6836cd6..9c00902 100644
--- a/engines/fullpipe/scenes/scene10.cpp
+++ b/engines/fullpipe/scenes/scene10.cpp
@@ -43,7 +43,7 @@ void scene10_initScene(Scene *sc) {
 	g_vars->scene10_ladder = sc->getPictureObjectById(PIC_SC10_LADDER, 0);
 
 	g_fp->lift_setButton(sO_Level1, ST_LBN_1N);
-	g_fp->lift_sub5(sc, QU_SC10_ENTERLIFT, QU_SC10_EXITLIFT);
+	g_fp->lift_init(sc, QU_SC10_ENTERLIFT, QU_SC10_EXITLIFT);
 
 	if (g_fp->getObjectState(sO_Inflater) == g_fp->getObjectEnumState(sO_Inflater, sO_WithGum)) {
 		g_vars->scene10_hasGum = 1;
diff --git a/engines/fullpipe/scenes/scene14.cpp b/engines/fullpipe/scenes/scene14.cpp
index e0618ee..ab04879 100644
--- a/engines/fullpipe/scenes/scene14.cpp
+++ b/engines/fullpipe/scenes/scene14.cpp
@@ -72,7 +72,7 @@ void scene14_initScene(Scene *sc) {
 	}
 
 	g_fp->lift_setButton(sO_Level4, ST_LBN_4N);
-	g_fp->lift_sub5(sc, QU_SC14_ENTERLIFT, QU_SC14_EXITLIFT);
+	g_fp->lift_init(sc, QU_SC14_ENTERLIFT, QU_SC14_EXITLIFT);
 
 	g_fp->initArcadeKeys("SC_14");
 	g_fp->setArcadeOverlay(PIC_CSR_ARCADE6);
diff --git a/engines/fullpipe/scenes/scene15.cpp b/engines/fullpipe/scenes/scene15.cpp
index ece260d..1558976 100644
--- a/engines/fullpipe/scenes/scene15.cpp
+++ b/engines/fullpipe/scenes/scene15.cpp
@@ -88,7 +88,7 @@ void scene15_initScene(Scene *sc) {
 	g_fp->_currentScene = oldsc;
 
 	g_fp->lift_setButton(sO_Level5, ST_LBN_5N);
-	g_fp->lift_sub5(sc, QU_SC15_ENTERLIFT, QU_SC15_EXITLIFT);
+	g_fp->lift_init(sc, QU_SC15_ENTERLIFT, QU_SC15_EXITLIFT);
 }
 
 int scene15_updateCursor() {
diff --git a/engines/fullpipe/scenes/scene30.cpp b/engines/fullpipe/scenes/scene30.cpp
index d115a70..a807e69 100644
--- a/engines/fullpipe/scenes/scene30.cpp
+++ b/engines/fullpipe/scenes/scene30.cpp
@@ -73,7 +73,7 @@ void scene30_initScene(Scene *sc, int flag) {
 
 	g_fp->lift_setButton(sO_Level8, ST_LBN_8N);
 
-	g_fp->lift_sub5(sc, QU_SC30_ENTERLIFT, QU_SC30_EXITLIFT);
+	g_fp->lift_init(sc, QU_SC30_ENTERLIFT, QU_SC30_EXITLIFT);
 }
 
 int scene30_updateCursor() {
diff --git a/engines/fullpipe/scenes/scene32.cpp b/engines/fullpipe/scenes/scene32.cpp
index 87ecf22..597d342 100644
--- a/engines/fullpipe/scenes/scene32.cpp
+++ b/engines/fullpipe/scenes/scene32.cpp
@@ -88,7 +88,7 @@ void scene32_initScene(Scene *sc) {
 	}
 
 	g_fp->lift_setButton(sO_Level9, ST_LBN_9N);
-	g_fp->lift_sub5(sc, QU_SC32_ENTERLIFT, QU_SC32_EXITLIFT);
+	g_fp->lift_init(sc, QU_SC32_ENTERLIFT, QU_SC32_EXITLIFT);
 
 	g_fp->initArcadeKeys("SC_32");
 }
diff --git a/engines/fullpipe/scenes/scene34.cpp b/engines/fullpipe/scenes/scene34.cpp
index 72a289a..b3e0db7 100644
--- a/engines/fullpipe/scenes/scene34.cpp
+++ b/engines/fullpipe/scenes/scene34.cpp
@@ -92,7 +92,7 @@ void scene34_initScene(Scene *sc) {
 	g_fp->_floaters->init(g_fp->getGameLoaderGameVar()->getSubVarByName("SC_34"));
 
 	g_fp->lift_setButton(sO_Level7, ST_LBN_7N);
-	g_fp->lift_sub5(sc, QU_SC34_ENTERLIFT, QU_SC34_EXITLIFT);
+	g_fp->lift_init(sc, QU_SC34_ENTERLIFT, QU_SC34_EXITLIFT);
 
 	g_fp->initArcadeKeys("SC_34");
 }
diff --git a/engines/fullpipe/scenes/scene35.cpp b/engines/fullpipe/scenes/scene35.cpp
index ac8ed71..f10786b 100644
--- a/engines/fullpipe/scenes/scene35.cpp
+++ b/engines/fullpipe/scenes/scene35.cpp
@@ -64,7 +64,7 @@ void scene35_initScene(Scene *sc) {
 		g_fp->playSound(sndId, 1);
 
 	g_fp->lift_setButton(sO_Level6, ST_LBN_6N);
-	g_fp->lift_sub5(sc, QU_SC35_ENTERLIFT, QU_SC35_EXITLIFT);
+	g_fp->lift_init(sc, QU_SC35_ENTERLIFT, QU_SC35_EXITLIFT);
 
 	g_fp->initArcadeKeys("SC_35");
 
diff --git a/engines/fullpipe/scenes/scene38.cpp b/engines/fullpipe/scenes/scene38.cpp
index 2c863f6..016dc83 100644
--- a/engines/fullpipe/scenes/scene38.cpp
+++ b/engines/fullpipe/scenes/scene38.cpp
@@ -82,7 +82,7 @@ void scene38_initScene(Scene *sc) {
 		g_vars->scene38_domino1->_flags &= 0xFFFB;
 	}
 
-	g_fp->lift_sub5(sc, QU_SC38_ENTERLIFT, QU_SC38_EXITLIFT);
+	g_fp->lift_init(sc, QU_SC38_ENTERLIFT, QU_SC38_EXITLIFT);
 	g_fp->lift_setButtonStatics(sc, ST_LBN_0N);
 }
 






More information about the Scummvm-git-logs mailing list