[Scummvm-cvs-logs] scummvm master -> 413a48bbe3ef6110a6f36f360a9ab92b0ce46cf0

dreammaster dreammaster at scummvm.org
Sat Sep 17 13:43:09 CEST 2011


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

Summary:
413a48bbe3 TSAGE: Implemented Blue Force scene 390 - City Jail


Commit: 413a48bbe3ef6110a6f36f360a9ab92b0ce46cf0
    https://github.com/scummvm/scummvm/commit/413a48bbe3ef6110a6f36f360a9ab92b0ce46cf0
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2011-09-17T04:37:02-07:00

Commit Message:
TSAGE: Implemented Blue Force scene 390 - City Jail

Changed paths:
    engines/tsage/blue_force/blueforce_logic.cpp
    engines/tsage/blue_force/blueforce_logic.h
    engines/tsage/blue_force/blueforce_scenes3.cpp
    engines/tsage/blue_force/blueforce_scenes3.h
    engines/tsage/blue_force/blueforce_speakers.cpp
    engines/tsage/blue_force/blueforce_speakers.h
    engines/tsage/core.h



diff --git a/engines/tsage/blue_force/blueforce_logic.cpp b/engines/tsage/blue_force/blueforce_logic.cpp
index 0fbe647..162e061 100644
--- a/engines/tsage/blue_force/blueforce_logic.cpp
+++ b/engines/tsage/blue_force/blueforce_logic.cpp
@@ -109,11 +109,13 @@ Scene *BlueForceGame::createScene(int sceneNumber) {
 	case 360:
 	case 370:
 	case 380:
+		error("Scene group 3 not implemented");
 	case 385:
 		// City Hall
 		return new Scene385();
 	case 390:
-		error("Scene group 3 not implemented");
+		// City Jail
+		return new Scene390();
 	case 410:
 	case 415:
 	case 440:
diff --git a/engines/tsage/blue_force/blueforce_logic.h b/engines/tsage/blue_force/blueforce_logic.h
index 96e19d4..21dc417 100644
--- a/engines/tsage/blue_force/blueforce_logic.h
+++ b/engines/tsage/blue_force/blueforce_logic.h
@@ -112,6 +112,18 @@ public:
 	void setDetails(int resNum, int lookLineNum, int talkLineNum, int useLineNum);
 };
 
+class NamedObjectExt: public NamedObject {
+public:
+	int _flag;
+
+	NamedObjectExt() { _flag = 0; }
+	virtual Common::String getClassName() { return "NamedObjectExt"; }
+	virtual void synchronize(Serializer &s) {
+		NamedObject::synchronize(s);
+		s.syncAsSint16LE(_flag);
+	}
+};
+
 class CountdownObject: public NamedObject {
 public:
 	int _countDown;
diff --git a/engines/tsage/blue_force/blueforce_scenes3.cpp b/engines/tsage/blue_force/blueforce_scenes3.cpp
index 6512882..7b0e4bf 100644
--- a/engines/tsage/blue_force/blueforce_scenes3.cpp
+++ b/engines/tsage/blue_force/blueforce_scenes3.cpp
@@ -3144,6 +3144,420 @@ void Scene385::dispatch() {
 	}
 }
 
+/*--------------------------------------------------------------------------
+ * Scene 390 - City Jail
+ *
+ *--------------------------------------------------------------------------*/
+
+void Scene390::Action1::signal() {
+	Scene390 *scene = (Scene390 *)BF_GLOBALS._sceneManager._scene;
+
+	switch (_actionIndex++) {
+	case 0:
+		setDelay(1);
+		break;
+	case 1:
+		switch (scene->_sceneMode) {
+		case 3900:
+		case 3905:
+		case 3906:
+		case 3913:
+		case 3914:
+		case 3916:
+		case 3917: {
+			ADD_PLAYER_MOVER(75, 122);
+			break;
+		}
+		default: {
+			ADD_PLAYER_MOVER(147, 133);
+			break;
+		}
+		}
+		break;
+	case 2:
+		switch (scene->_sceneMode) {
+		case 3900:
+		case 3905:
+		case 3906:
+		case 3913:
+		case 3914:
+		case 3916:
+		case 3917: {
+			BF_GLOBALS._player.changeAngle(315);
+			break;
+		}
+		default: {
+			BF_GLOBALS._player.changeAngle(90);
+			break;
+		}
+		}
+		setDelay(1);
+		break;
+	case 3:
+		scene->_stripManager.start(scene->_sceneMode, this);
+		break;
+	case 4:
+		BF_GLOBALS._player.enableControl();
+		remove();
+		break;
+	}
+}
+
+/*--------------------------------------------------------------------------*/
+
+bool Scene390::BookingForms::startAction(CursorType action, Event &event) {
+	Scene390 *scene = (Scene390 *)BF_GLOBALS._sceneManager._scene;
+
+	switch (action) {
+	case CURSOR_USE:
+		if (_flag) {
+			SceneItem::display2(390, 16);
+		} else if (!BF_GLOBALS.getFlag(onDuty)) {
+			SceneItem::display2(390, 22);
+		} else if (((BF_GLOBALS._bookmark < bLauraToParamedics) && BF_GLOBALS.getFlag(greenTaken)) ||
+				((BF_GLOBALS._bookmark >= bStoppedFrankie) && !BF_GLOBALS.getFlag(frankInJail) && (BF_GLOBALS._dayNumber == 1))) {
+			BF_GLOBALS._player.disableControl();
+			++_flag;
+			scene->_sceneMode = 3902;
+			setAction(&scene->_sequenceManager, scene, 3902, &BF_GLOBALS._player, NULL);
+		} else {
+			SceneItem::display2(390, 23);
+		}
+		return true;
+	default:
+		return NamedHotspotExt::startAction(action, event);
+	}
+}
+
+/*--------------------------------------------------------------------------*/
+
+bool Scene390::Green::startAction(CursorType action, Event &event) {
+	Scene390 *scene = (Scene390 *)BF_GLOBALS._sceneManager._scene;
+
+	switch (action) {
+	case CURSOR_TALK:
+		if (!_flag) {
+			++_flag;
+			scene->_sceneMode = 3901;
+		} else {
+			scene->_sceneMode = 3902;
+		}
+		scene->setAction(&scene->_action1);
+		return true;
+	case INV_MIRANDA_CARD:
+		if (BF_GLOBALS.getFlag(readGreenRights)) {
+			SceneItem::display2(390, 15);
+		} else {
+			BF_GLOBALS._uiElements.addScore(30);
+			BF_GLOBALS.setFlag(readGreenRights);
+			BF_GLOBALS._player.disableControl();
+			scene->_sceneMode = 3904;
+
+			scene->setAction(&scene->_sequenceManager, scene, 3904, &BF_GLOBALS._player, this, NULL);
+		}
+		return true;
+	default:
+		return NamedObjectExt::startAction(action, event);
+	}
+}
+
+bool Scene390::Object2::startAction(CursorType action, Event &event) {
+	Scene390 *scene = (Scene390 *)BF_GLOBALS._sceneManager._scene;
+
+	switch (action) {
+	case CURSOR_TALK:
+		if (!_flag)
+			break;
+
+		if (!BF_GLOBALS.getFlag(onDuty)) {
+			scene->_sceneMode = 3917;
+		} else if (BF_GLOBALS.getFlag(fTalkedToBarry) && !BF_GLOBALS.getFlag(fTalkedToLarry)) {
+			scene->_sceneMode = 3913;
+		} else if (!BF_GLOBALS.getFlag(fTalkedToLarry)) {
+			scene->_sceneMode = 3914;
+		} else {
+			++_flag;
+
+			if (BF_GLOBALS._sceneObjects->contains(&scene->_green)) {
+				scene->_sceneMode = 3900;
+			} else if (!BF_GLOBALS._sceneObjects->contains(&scene->_green)) {
+				scene->_sceneMode = 3905;
+			} else if (BF_GLOBALS.getFlag(fCuffedFrankie)) {
+				scene->_sceneMode = 3906;
+			} else {
+				scene->_sceneMode = 3916;
+			}
+		}
+
+		BF_GLOBALS.setFlag(fTalkedToLarry);
+		scene->setAction(&scene->_action1);
+		return true;
+	case INV_BOOKING_GREEN:
+		if (BF_GLOBALS._bookmark >= bLauraToParamedics)
+			SceneItem::display2(390, 21);
+		else {
+			BF_GLOBALS._player.disableControl();
+			BF_GLOBALS._bookmark = bLauraToParamedics;
+			scene->_sceneMode = 3905;
+			
+			BF_INVENTORY.setObjectScene(INV_GREEN_ID, 390);
+			if (BF_GLOBALS.getFlag(fLeftTraceIn910))
+				BF_GLOBALS.clearFlag(fLeftTraceIn910);
+			
+			scene->setAction(&scene->_sequenceManager, scene, 3905, &BF_GLOBALS._player, this, NULL);
+			BF_GLOBALS.clearFlag(f1015Marina);
+			BF_GLOBALS.clearFlag(f1027Marina);
+			BF_GLOBALS.clearFlag(f1035Marina);
+		}
+		return true;
+	case INV_BOOKING_FRANKIE:
+	case INV_BOOKING_GANG:
+		if (BF_GLOBALS.getFlag(frankInJail)) {
+			SceneItem::display2(390, 21);
+		} else {
+			scene->_sceneMode = 3905;
+			BF_GLOBALS._player.disableControl();
+			scene->setAction(&scene->_sequenceManager, scene, 3905, &BF_GLOBALS._player, this, NULL);
+
+			BF_INVENTORY.setObjectScene(INV_FRANKIE_ID, 390);
+			BF_INVENTORY.setObjectScene(INV_TYRONE_ID, 390);
+			BF_GLOBALS.clearFlag(frankInJail);
+			BF_GLOBALS.clearFlag(f1015Frankie);
+			BF_GLOBALS.clearFlag(f1027Frankie);
+			BF_GLOBALS.clearFlag(f1035Frankie);
+		}
+		return true;
+	default:
+		break;
+	}
+
+	return NamedObjectExt::startAction(action, event);
+}
+
+bool Scene390::Object3::startAction(CursorType action, Event &event) {
+	Scene390 *scene = (Scene390 *)BF_GLOBALS._sceneManager._scene;
+
+	switch (action) {
+	case INV_GREEN_ID:
+		scene->_sceneMode = 3903;
+		setAction(&scene->_sequenceManager, scene, 3902, &BF_GLOBALS._player, NULL);
+		remove();
+		BF_INVENTORY.setObjectScene(INV_BOOKING_GREEN, 1);
+		return true;
+	case INV_FRANKIE_ID:
+		BF_INVENTORY.setObjectScene(INV_BOOKING_FRANKIE, 1);
+		scene->_sceneMode = 3903;
+		setAction(&scene->_sequenceManager, scene, 3902, &BF_GLOBALS._player, NULL);
+		remove();
+		return true;
+	case INV_TYRONE_ID:
+		scene->_sceneMode = 3903;
+		setAction(&scene->_sequenceManager, scene, 3902, &BF_GLOBALS._player, NULL);
+		remove();
+		BF_INVENTORY.setObjectScene(INV_BOOKING_GANG, 1);
+		return true;
+	default:
+		return NamedObject::startAction(action, event);
+	}
+}
+
+bool Scene390::GangMember1::startAction(CursorType action, Event &event) {
+	Scene390 *scene = (Scene390 *)BF_GLOBALS._sceneManager._scene;
+
+	switch (action) {
+	case CURSOR_TALK:
+		scene->_sceneMode = 3908;
+		scene->setAction(&scene->_action1);
+		return true;
+	case INV_MIRANDA_CARD:
+		if (BF_GLOBALS.getFlag(readFrankRights)) {
+			SceneItem::display2(390, 15);
+		} else {
+			BF_GLOBALS.setFlag(readFrankRights);
+			BF_GLOBALS._uiElements.addScore(30);
+			BF_GLOBALS._player.disableControl();
+			
+			scene->_sceneMode = 3904;
+			scene->setAction(&scene->_sequenceManager, scene, 3907, &BF_GLOBALS._player, NULL);
+		}
+		return true;
+	default:
+		return NamedObject::startAction(action, event);
+	}
+}
+
+bool Scene390::GangMember2::startAction(CursorType action, Event &event) {
+	Scene390 *scene = (Scene390 *)BF_GLOBALS._sceneManager._scene;
+
+	switch (action) {
+	case CURSOR_TALK:
+		scene->_sceneMode = 3909;
+		scene->setAction(&scene->_action1);
+		return true;
+	case INV_MIRANDA_CARD:
+		if (BF_GLOBALS.getFlag(readFrankRights)) {
+			SceneItem::display2(390, 15);
+		} else {
+			BF_GLOBALS._uiElements.addScore(30);
+			BF_GLOBALS.setFlag(readFrankRights);
+			BF_GLOBALS._player.disableControl();
+			
+			scene->_sceneMode = 3904;
+			scene->setAction(&scene->_sequenceManager, scene, 3907, &BF_GLOBALS._player, NULL);
+		}
+		return true;
+	default:
+		return NamedObject::startAction(action, event);
+	}
+}
+
+bool Scene390::Door::startAction(CursorType action, Event &event) {
+	Scene390 *scene = (Scene390 *)BF_GLOBALS._sceneManager._scene;
+
+	switch (action) {
+	case CURSOR_USE:
+		if ((BF_INVENTORY.getObjectScene(INV_BOOKING_GREEN) == 1) && (BF_INVENTORY.getObjectScene(INV_GREEN_ID) == 1)) {
+			scene->_stripManager.start(3918, &BF_GLOBALS._stripProxy);
+		} else if ((BF_INVENTORY.getObjectScene(INV_BOOKING_FRANKIE) == 1) && (BF_INVENTORY.getObjectScene(INV_FRANKIE_ID) == 1)) {
+			scene->_stripManager.start(3918, &BF_GLOBALS._stripProxy);
+		} else if ((BF_INVENTORY.getObjectScene(INV_BOOKING_GANG) == 1) && (BF_INVENTORY.getObjectScene(INV_TYRONE_ID) == 1)) {
+			scene->_stripManager.start(3918, &BF_GLOBALS._stripProxy);
+		} else {
+			BF_GLOBALS._player.disableControl();
+			scene->_sceneMode = 3900;
+			scene->setAction(&scene->_sequenceManager, scene, 3900, &BF_GLOBALS._player, this, NULL);
+		}
+		return true;
+	default:
+		return NamedObject::startAction(action, event);
+	}
+}
+
+/*--------------------------------------------------------------------------*/
+
+void Scene390::postInit(TsAGE::SceneObjectList *OwnerList) {
+	BF_GLOBALS._sound1.play(17);
+	SceneExt::postInit();
+	setZoomPercents(105, 85, 130, 100);
+	loadScene(390);
+	
+	_stripManager.addSpeaker(&_gameTextSpeaker);
+	_stripManager.addSpeaker(&_jakeUniformSpeaker);
+	_stripManager.addSpeaker(&_jakeJacketSpeaker);
+	_stripManager.addSpeaker(&_greenSpeaker);
+	_stripManager.addSpeaker(&_jailerSpeaker);
+	_stripManager.addSpeaker(&_shooterSpeaker);
+	_stripManager.addSpeaker(&_driverSpeaker);
+
+	if (BF_GLOBALS._dayNumber == 0) {
+		BF_GLOBALS.setFlag(onDuty);
+		BF_GLOBALS._bookmark = bStoppedFrankie;
+		BF_GLOBALS.clearFlag(frankInJail);
+		BF_GLOBALS.setFlag(fTalkedToBarry);
+		BF_INVENTORY.setObjectScene(INV_22_SNUB, 1);
+	}
+
+	BF_GLOBALS._player.postInit();
+	BF_GLOBALS._player.setVisage(BF_GLOBALS.getFlag(onDuty) ? 361 : 368);
+	BF_GLOBALS._player.animate(ANIM_MODE_1, NULL);
+	BF_GLOBALS._player.setObjectWrapper(new SceneObjectWrapper());
+	BF_GLOBALS._player.setPosition(Common::Point(147, 114));
+	BF_GLOBALS._player.setStrip(6);
+	BF_GLOBALS._player.changeZoom(-1);
+
+	_object2.postInit();
+	_object2.setVisage(395);
+	_object2.setStrip(2);
+	_object2.setPosition(Common::Point(38, 84));
+	_object2.fixPriority(50);
+	_object2._flag = 0;
+	_object2.setDetails(390, 10, 17, 10, 1, NULL);
+
+	_door.postInit();
+	_door.setVisage(390);
+	_door.setStrip(2);
+	_door.setPosition(Common::Point(151, 18));
+	_door.setDetails(390, 5, -1, -1, 1, NULL);
+
+	BF_GLOBALS._player.disableControl();
+	_sceneMode = 3901;
+	setAction(&_sequenceManager, this, 3901, &BF_GLOBALS._player, NULL);
+
+	if ((BF_GLOBALS._bookmark < bLauraToParamedics) && BF_GLOBALS.getFlag(greenTaken)) {
+		_green.postInit();
+		_green.setVisage(392);
+		_green.setPosition(Common::Point(241, 164));
+		_green.fixPriority(153);
+		_green.setDetails(390, 12, -1, 13, 1, NULL);
+		_green._flag = 0;
+	}
+
+	if ((BF_GLOBALS._bookmark >= bStoppedFrankie) && !BF_GLOBALS.getFlag(frankInJail) && (BF_GLOBALS._dayNumber == 1)) {
+		_gangMember1.postInit();
+		_gangMember1.setVisage(396);
+		_gangMember1.setPosition(Common::Point(273, 169));
+		_gangMember1.fixPriority(152);
+		_gangMember1._flag = 0;
+		_gangMember1.setDetails(390, 19, -1, 20, 1, NULL);
+
+		_gangMember2.postInit();
+		_gangMember2.setVisage(396);
+		_gangMember2.setStrip(2);
+		_gangMember2.setPosition(Common::Point(241, 153));
+		_gangMember2.fixPriority(152);
+		_gangMember2._flag = 0;
+		_gangMember2.setDetails(390, 19, -1, 20, 1, NULL);
+	}
+
+	_item1.setDetails(Rect(22, 40, 77, 67), 390, 0, -1, 1, 1, NULL);
+	_bookingForms.setDetails(Rect(89, 46, 110, 65), 390, 2, -1, -1, 1, NULL);
+	_item3.setDetails(Rect(193, 0, 320, 165), 390, 4, -1, -1, 1, NULL);
+	_item4.setDetails(Rect(0, 0, 320, 170), 390, 7, -1, -1, 1, NULL);
+}
+
+void Scene390::signal() {
+	switch (_sceneMode) {
+	case 3900:
+		BF_GLOBALS._sound1.fadeOut2(NULL);
+		BF_GLOBALS._sceneManager.changeScene(385);
+		break;
+	case 3901:
+	case 3904:
+		if ((BF_INVENTORY.getObjectScene(INV_22_SNUB) == 410) && BF_GLOBALS._sceneObjects->contains(&_gangMember1)) {
+			_sceneMode = 3906;
+			setAction(&_sequenceManager, this, 3906, &BF_GLOBALS._player, &_object2, NULL);
+		} else if ((BF_INVENTORY.getObjectScene(INV_GREENS_KNIFE) == 370) && BF_GLOBALS._sceneObjects->contains(&_green)) {
+			_sceneMode = 3906;
+			setAction(&_sequenceManager, this, 3906, &BF_GLOBALS._player, &_object2, NULL);
+		} else {
+			BF_GLOBALS._player.enableControl();
+		}
+		break;
+	case 3902:
+		SceneItem::display2(390, 3);
+
+		_object3.postInit();
+		_object3.setVisage(390);
+		_object3.setPosition(Common::Point(250, 60));
+		_object3.fixPriority(255);
+		_object3.setDetails(390, 8, -1, 9, 2, NULL);
+		break;
+	case 3903:
+		SceneItem::display2(390, 18);
+		break;
+	case 3905:
+		BF_GLOBALS._uiElements.addScore(30);
+		_object2.remove();
+		BF_INVENTORY.setObjectScene(INV_HANDCUFFS, 1);
+		break;
+	case 3906:
+		BF_GLOBALS._deathReason = 18;
+		BF_GLOBALS._sceneManager.changeScene(666);
+		break;
+	}
+}
+
+
 } // End of namespace BlueForce
 
 } // End of namespace TsAGE
diff --git a/engines/tsage/blue_force/blueforce_scenes3.h b/engines/tsage/blue_force/blueforce_scenes3.h
index a2bc427..7825154 100644
--- a/engines/tsage/blue_force/blueforce_scenes3.h
+++ b/engines/tsage/blue_force/blueforce_scenes3.h
@@ -543,6 +543,67 @@ public:
 	virtual void dispatch();
 };
 
+class Scene390: public SceneExt {
+	/* Items */
+	class BookingForms: public NamedHotspotExt {
+	public:
+		virtual bool startAction(CursorType action, Event &event);
+	};
+
+	/* Objects */
+	class Green: public NamedObjectExt {
+	public:
+		virtual bool startAction(CursorType action, Event &event);
+	};
+	class Object2: public NamedObjectExt {
+	public:
+		virtual bool startAction(CursorType action, Event &event);
+	};
+	class Object3: public NamedObject {
+	public:
+		virtual bool startAction(CursorType action, Event &event);
+	};
+	class GangMember1: public NamedObjectExt {
+	public:
+		virtual bool startAction(CursorType action, Event &event);
+	};
+	class GangMember2: public NamedObjectExt {
+	public:
+		virtual bool startAction(CursorType action, Event &event);
+	};
+	class Door: public NamedObject {
+	public:
+		virtual bool startAction(CursorType action, Event &event);
+	};
+
+	/* Actions */
+	class Action1: public Action {
+	public:
+		virtual void signal();
+	};
+public:
+	SequenceManager _sequenceManager;
+	SpeakerGameText _gameTextSpeaker;
+	SpeakerJakeUniform _jakeUniformSpeaker;
+	SpeakerJakeJacket _jakeJacketSpeaker;
+	SpeakerGreen _greenSpeaker;
+	SpeakerJailer _jailerSpeaker;
+	SpeakerDriver _driverSpeaker;
+	SpeakerShooter _shooterSpeaker;
+	Action1 _action1;
+	Green _green;
+	Object2 _object2;
+	Object3 _object3;
+	GangMember1 _gangMember1;
+	GangMember2 _gangMember2;
+	Door _door;
+	NamedHotspot _item1, _item3, _item4;
+	BookingForms _bookingForms;
+
+	virtual void postInit(SceneObjectList *OwnerList = NULL);
+	virtual void signal();
+};
+
 } // End of namespace BlueForce
 
 } // End of namespace TsAGE
diff --git a/engines/tsage/blue_force/blueforce_speakers.cpp b/engines/tsage/blue_force/blueforce_speakers.cpp
index d0cc44d..ff6b477 100644
--- a/engines/tsage/blue_force/blueforce_speakers.cpp
+++ b/engines/tsage/blue_force/blueforce_speakers.cpp
@@ -288,6 +288,28 @@ void SpeakerJailer::setText(const Common::String &msg) {
 
 /*--------------------------------------------------------------------------*/
 
+SpeakerGreen::SpeakerGreen(): VisualSpeaker() {
+	_color1 = 96;
+	_color2 = 99;
+	_speakerName = "GREEN";
+}
+
+void SpeakerGreen::setText(const Common::String &msg) {
+	_removeObject2 = true;
+
+	_object2.postInit();
+	_object2.setVisage(373);
+	_object2.setStrip2(1);
+	_object2.fixPriority(255);
+	_object2.setPosition(Common::Point(BF_GLOBALS._sceneManager._scene->_sceneBounds.left + 40,
+		BF_GLOBALS._sceneManager._scene->_sceneBounds.top + 166));
+
+	VisualSpeaker::setText(msg);
+	_object2.fixCountdown(8, _numFrames);
+}
+
+/*--------------------------------------------------------------------------*/
+
 SpeakerPSutter::SpeakerPSutter(): VisualSpeaker() {
 	_color1 = 20;
 	_color2 = 22;
diff --git a/engines/tsage/blue_force/blueforce_speakers.h b/engines/tsage/blue_force/blueforce_speakers.h
index dd902a0..d5a38f8 100644
--- a/engines/tsage/blue_force/blueforce_speakers.h
+++ b/engines/tsage/blue_force/blueforce_speakers.h
@@ -116,6 +116,14 @@ public:
 	virtual void setText(const Common::String &msg);
 };
 
+class SpeakerGreen: public VisualSpeaker {
+public:
+	SpeakerGreen();
+
+	virtual Common::String getClassName() { return "SpeakerGreen"; }
+	virtual void setText(const Common::String &msg);
+};
+
 class SpeakerPSutter: public VisualSpeaker {
 public:
 	SpeakerPSutter();
diff --git a/engines/tsage/core.h b/engines/tsage/core.h
index 851c72c..e722daf 100644
--- a/engines/tsage/core.h
+++ b/engines/tsage/core.h
@@ -459,6 +459,18 @@ public:
 	virtual void setDetails(int sceneRegionId, int resNum, int lookLineNum, int talkLineNum, int useLineNum, int mode);
 };
 
+class NamedHotspotExt : public NamedHotspot {
+public:
+	int _flag;
+	NamedHotspotExt() { _flag = 0; }
+
+	virtual Common::String getClassName() { return "NamedHotspot"; }
+	virtual void synchronize(Serializer &s) {
+		NamedHotspot::synchronize(s);
+		s.syncAsSint16LE(_flag);
+	}
+};
+
 enum AnimateMode {ANIM_MODE_NONE = 0, ANIM_MODE_1 = 1, ANIM_MODE_2 = 2, ANIM_MODE_3 = 3,
 		ANIM_MODE_4 = 4, ANIM_MODE_5 = 5, ANIM_MODE_6 = 6, ANIM_MODE_7 = 7, ANIM_MODE_8 = 8,
 		// Introduced in Blue Force






More information about the Scummvm-git-logs mailing list