[Scummvm-cvs-logs] scummvm master -> 83a03d883dd657d06b3ec9d41c279a04f2ea8d25

dreammaster dreammaster at scummvm.org
Sun Sep 18 08:31:33 CEST 2011


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

Summary:
95467a379c TSAGE: Implemented Blue Force scene 370 - Future Wave bedroom
83a03d883d TSAGE: Fixed ordering of scenes in Blue Force group 3


Commit: 95467a379c6b929d55f9f4d6389e0ae715ff9087
    https://github.com/scummvm/scummvm/commit/95467a379c6b929d55f9f4d6389e0ae715ff9087
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2011-09-17T22:56:07-07:00

Commit Message:
TSAGE: Implemented Blue Force scene 370 - Future Wave bedroom

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



diff --git a/engines/tsage/blue_force/blueforce_logic.cpp b/engines/tsage/blue_force/blueforce_logic.cpp
index d962215..c0831e6 100644
--- a/engines/tsage/blue_force/blueforce_logic.cpp
+++ b/engines/tsage/blue_force/blueforce_logic.cpp
@@ -107,8 +107,10 @@ Scene *BlueForceGame::createScene(int sceneNumber) {
 		return new Scene350();
 	case 355:
 	case 360:
-	case 370:
 		error("Scene group 3 not implemented");
+	case 370:
+		// Future Wave Bedroom
+		return new Scene370();
 	case 380:
 		// Outside City Hall & Jail
 		return new Scene380();
@@ -414,7 +416,7 @@ bool NamedObject::startAction(CursorType action, Event &event) {
 	}
 
 	if (!handled)
-		((SceneExt *)BF_GLOBALS._sceneManager._scene)->display(action);
+		handled = ((SceneExt *)BF_GLOBALS._sceneManager._scene)->display(action);
 	return handled;
 }
 
diff --git a/engines/tsage/blue_force/blueforce_logic.h b/engines/tsage/blue_force/blueforce_logic.h
index 21dc417..72e1f55 100644
--- a/engines/tsage/blue_force/blueforce_logic.h
+++ b/engines/tsage/blue_force/blueforce_logic.h
@@ -124,6 +124,19 @@ public:
 	}
 };
 
+class NamedObject2: public NamedObject {
+public:
+	int _v1, _v2;
+
+	NamedObject2() { _v1 = _v2 = 0; }
+	virtual Common::String getClassName() { return "NamedObject2"; }
+	virtual void synchronize(Serializer &s) {
+		NamedObject::synchronize(s);
+		s.syncAsSint16LE(_v1);
+		s.syncAsSint16LE(_v2);
+	}
+};
+
 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 4a03fd1..2f38d3a 100644
--- a/engines/tsage/blue_force/blueforce_scenes3.cpp
+++ b/engines/tsage/blue_force/blueforce_scenes3.cpp
@@ -2819,6 +2819,485 @@ void Scene350::checkGun() {
 }
 
 /*--------------------------------------------------------------------------
+ * Scene 370 - Future Wave Bedroom
+ *
+ *--------------------------------------------------------------------------*/
+
+bool Scene370::GreensGun::startAction(CursorType action, Event &event) {
+	Scene370 *scene = (Scene370 *)BF_GLOBALS._sceneManager._scene;
+
+	switch (action) {
+	case CURSOR_LOOK:
+		SceneItem::display2(370, 4);
+		return true;
+	case CURSOR_USE:
+		if ((BF_INVENTORY.getObjectScene(INV_HANDCUFFS) != 1) || BF_GLOBALS.getFlag(greenTaken)) {
+			BF_GLOBALS._player.disableControl();
+			BF_GLOBALS._walkRegions.proc2(3);
+			scene->_sceneMode = 3711;
+			scene->setAction(&scene->_sequenceManager, scene, 3711, &BF_GLOBALS._player, this, NULL);
+		} else {
+			SceneItem::display2(370, 5);
+		}
+		return true;
+	default:
+		return NamedObject::startAction(action, event);
+	}
+}
+
+bool Scene370::Green::startAction(CursorType action, Event &event) {
+	Scene370 *scene = (Scene370 *)BF_GLOBALS._sceneManager._scene;
+
+	switch (action) {
+	case CURSOR_LOOK:
+		SceneItem::display2(370, (_v2 < 3) ? 10 : 0);
+		return true;
+	case CURSOR_USE:
+		if (_v2 != 3) 
+			SceneItem::display2(370, 1);
+		else if (BF_INVENTORY.getObjectScene(INV_HANDCUFFS) == 1)
+			SceneItem::display2(370, 26);
+		else if (BF_INVENTORY.getObjectScene(INV_GREENS_KNIFE) == 1) {
+			scene->_sceneMode = 2;
+			scene->_stripManager.start(3717, scene);
+		} else {
+			BF_GLOBALS._player.disableControl();
+			BF_GLOBALS._walkRegions.proc2(3);
+			scene->_sceneMode = 3715;
+			scene->setAction(&scene->_sequenceManager, scene, 3715, &BF_GLOBALS._player, this, NULL);
+		}
+		return true;
+	case CURSOR_TALK:
+		BF_GLOBALS._player.disableControl();
+		switch (_v2) {
+		case 0:
+			++_v2;
+			scene->_sceneMode = 3706;
+			scene->setAction(&scene->_sequenceManager, scene, 3706, NULL);
+			break;
+		case 1:
+			++_v2;
+			scene->_sceneMode = 3707;
+
+			scene->_object5.postInit();
+			scene->_object5.setVisage(362);
+			scene->_object5.setStrip(3);
+			scene->_object5.setPosition(scene->_harrison._position);
+			scene->_object5.hide();
+
+			scene->setAction(&scene->_sequenceManager, scene, 3707, &scene->_harrison, &scene->_object5, NULL);
+			break;
+		case 2:
+			++_v2;
+			scene->_sceneMode = 3708;
+			scene->setAction(&scene->_sequenceManager, scene, 3708, this, &scene->_laura, &scene->_harrison, 
+				&scene->_object5, &scene->_greensGun, NULL);
+			break;
+		case 3:
+			scene->_sceneMode = BF_INVENTORY.getObjectScene(INV_HANDCUFFS) == 1 ? 3713 : 2;
+			scene->_stripManager.start(3717, scene);
+			break;
+		default:
+			break;
+		}
+		return true;
+	case INV_COLT45:
+		if ((BF_INVENTORY.getObjectScene(INV_GREENS_GUN) == 370) || (BF_INVENTORY.getObjectScene(INV_GREENS_GUN) == 1))
+			SceneItem::display2(370, 28);
+		else if (!BF_GLOBALS.getHasBullets())
+			SceneItem::display2(1, 1);
+		else {
+			BF_GLOBALS._player.disableControl();
+			BF_GLOBALS._deathReason = 9;
+			scene->_sceneMode = 3702;
+			scene->setAction(&scene->_sequenceManager, scene, 3702, &BF_GLOBALS._player, this, &scene->_harrison, NULL);
+		}
+		return true;
+	case INV_HANDCUFFS:
+		if (_v2 != 3)
+			SceneItem::display2(370, 2);
+		else {
+			BF_GLOBALS._uiElements.addScore(50);
+			BF_GLOBALS._player.disableControl();
+			scene->_sceneMode = 3704;
+			scene->setAction(&scene->_sequenceManager, scene, 3704, &BF_GLOBALS._player, this, &scene->_harrison, NULL);
+		}
+		return true;
+	case INV_MIRANDA_CARD:
+		if (BF_INVENTORY.getObjectScene(INV_HANDCUFFS) == 1)
+			SceneItem::display2(370, 5);
+		else if (BF_GLOBALS.getFlag(readGreenRights))
+			SceneItem::display2(390, 15);
+		else {
+			BF_GLOBALS.setFlag(readGreenRights);
+			BF_GLOBALS._player.disableControl();
+			BF_GLOBALS._player.updateAngle(this->_position);
+			scene->_sceneMode = 3717;
+			scene->setAction(&scene->_sequenceManager, scene, 3717, &BF_GLOBALS._player, NULL);
+		}
+		return true;
+	default:
+		break;
+	}
+
+	return NamedObject2::startAction(action, event);
+}
+
+bool Scene370::Harrison::startAction(CursorType action, Event &event) {
+	Scene370 *scene = (Scene370 *)BF_GLOBALS._sceneManager._scene;
+
+	switch (action) {
+	case CURSOR_LOOK:
+		SceneItem::display2(370, 8);
+		return true;
+	case CURSOR_TALK:
+		if (scene->_green._v2 != 3) {
+			scene->_sceneMode = 3;
+			scene->_stripManager.start(3714, scene);
+		} else if ((BF_INVENTORY.getObjectScene(INV_GREENS_KNIFE) == 1) ||
+				((BF_INVENTORY.getObjectScene(INV_GREENS_GUN) == 1) && BF_GLOBALS._sceneObjects->contains(&scene->_laura))) {
+			BF_GLOBALS._player.disableControl();
+			scene->_sceneMode = 3716;
+			scene->setAction(&scene->_sequenceManager, scene, 3716, &BF_GLOBALS._player, &scene->_green, this, NULL);
+		} else {
+			BF_GLOBALS._player.updateAngle(this->_position);
+			scene->_stripManager.start(3715, scene);
+		}
+		return true;
+	default:
+		return NamedObject::startAction(action, event);
+	}
+}
+
+bool Scene370::Laura::startAction(CursorType action, Event &event) {
+	Scene370 *scene = (Scene370 *)BF_GLOBALS._sceneManager._scene;
+
+	switch (action) {
+	case CURSOR_LOOK:
+		SceneItem::display2(370, 11);
+		return true;
+	case CURSOR_USE:
+		SceneItem::display2(370, BF_GLOBALS._sceneObjects->contains(&scene->_green) ? 12 : 13);
+		return true;
+	case CURSOR_TALK:
+		if (BF_INVENTORY.getObjectScene(INV_HANDCUFFS) != 1) {
+			BF_GLOBALS._player.disableControl();
+			scene->_sceneMode = 3705;
+			scene->setAction(&scene->_sequenceManager, scene, 3705, &BF_GLOBALS._player, this, NULL);
+			return true;
+		}
+		// Deliberate fall-through
+	default:
+		return NamedObject::startAction(action, event);
+	}
+}
+
+/*--------------------------------------------------------------------------*/
+
+bool Scene370::Item1::startAction(CursorType action, Event &event) {
+	Scene370 *scene = (Scene370 *)BF_GLOBALS._sceneManager._scene;
+
+	switch (action) {
+	case CURSOR_LOOK:
+		SceneItem::display2(370, 15);
+		return true;
+	case CURSOR_USE:
+		SceneItem::display2(370, 16);
+		return true;
+	case INV_COLT45:
+		if (BF_GLOBALS._sceneObjects->contains(&scene->_green) && (BF_INVENTORY.getObjectScene(INV_GREENS_GUN) != 370)) {
+			scene->_green.setAction(NULL);
+			scene->_sceneMode = 3703;
+			scene->setAction(&scene->_sequenceManager, scene, 3703, &BF_GLOBALS._player, &scene->_green, &scene->_harrison, NULL);
+			return true;
+		}
+		// Deliberate fall-through
+	default:
+		return NamedHotspot::startAction(action, event);
+	}
+}
+
+bool Scene370::Item6::startAction(CursorType action, Event &event) {
+	Scene370 *scene = (Scene370 *)BF_GLOBALS._sceneManager._scene;
+
+	switch (action) {
+	case CURSOR_LOOK:
+		SceneItem::display2(370, 14);
+		return true;
+	case CURSOR_USE:
+		SceneItem::display2(370, 29);
+		return true;
+	case INV_COLT45:
+		if (BF_GLOBALS._sceneObjects->contains(&scene->_green) && (BF_INVENTORY.getObjectScene(INV_GREENS_GUN) != 370) &&
+				(BF_INVENTORY.getObjectScene(INV_HANDCUFFS) == 1)) {
+			BF_GLOBALS._player.disableControl();
+			scene->_green.setAction(NULL);
+			scene->_sceneMode = 3703;
+			scene->setAction(&scene->_sequenceManager, scene, 3703, &BF_GLOBALS._player, &scene->_green, &scene->_harrison, NULL);
+			return true;
+		}
+		// Deliberate fall-through
+	default:
+		return SceneHotspot::startAction(action, event);
+	}
+}
+
+
+bool Scene370::Exit::startAction(CursorType action, Event &event) {
+	Scene370 *scene = (Scene370 *)BF_GLOBALS._sceneManager._scene;
+
+	if (BF_GLOBALS._sceneObjects->contains(&scene->_green))
+		return false;
+	else {
+		ADD_PLAYER_MOVER(event.mousePos.x, event.mousePos.y);
+		return true;
+	}
+}
+
+/*--------------------------------------------------------------------------*/
+
+void Scene370::postInit(SceneObjectList *OwnerList) {
+	SceneExt::postInit();
+	loadScene(370);
+
+	_stripManager.addSpeaker(&_gameTextSpeaker);
+	_stripManager.addSpeaker(&_jakeUniformSpeaker);
+	_stripManager.addSpeaker(&_lauraSpeaker);
+	_stripManager.addSpeaker(&_lauraHeldSpeaker);
+	_stripManager.addSpeaker(&_greenSpeaker);
+	_stripManager.addSpeaker(&_harrisonSpeaker);
+
+	BF_GLOBALS._player.postInit();
+	BF_GLOBALS._player.setVisage(1351);
+	BF_GLOBALS._player.animate(ANIM_MODE_1, NULL);
+	BF_GLOBALS._player.setObjectWrapper(new SceneObjectWrapper());
+	BF_GLOBALS._player.setStrip(8);
+	BF_GLOBALS._player.setPosition(Common::Point(310, 153));
+	BF_GLOBALS._player._moveDiff = Common::Point(7, 2);
+	BF_GLOBALS._player.disableControl();
+
+	if (BF_GLOBALS.getFlag(greenTaken)) {
+		// Green has already been arrested
+		BF_GLOBALS._player.setVisage(BF_GLOBALS.getFlag(onDuty) ? 361 : 368);
+		BF_GLOBALS._player._moveDiff.x = 6;
+		BF_GLOBALS._player.enableControl();
+	} else {
+		// Hostage scene setup
+		_green.postInit();
+		_green.setVisage(373);
+		_green.setStrip(2);
+		_green._numFrames = 5;
+		_green.setPosition(Common::Point(164, 137));
+		_green.animate(ANIM_MODE_7, NULL);
+		_green.fixPriority(125);
+		BF_GLOBALS._sceneItems.push_back(&_green);
+
+		_laura.postInit();
+		_laura.setVisage(374);
+		_laura.setStrip(2);
+		_laura.setPosition(_green._position);
+		_laura.hide();
+		_laura.animate(ANIM_MODE_1, NULL);
+
+		_harrison.postInit();
+		_harrison.setVisage(372);
+		_harrison.setPosition(Common::Point(256, 166));
+		BF_GLOBALS._sceneItems.push_back(&_harrison);
+
+		_sceneMode = 3700;
+		setAction(&_sequenceManager, this, 3700, NULL);
+	}
+
+	if ((BF_INVENTORY.getObjectScene(INV_GREENS_GUN) != 320) && (BF_INVENTORY.getObjectScene(INV_GREENS_GUN) != 1)) {
+		_greensGun.postInit();
+		_greensGun.setVisage(362);
+		_greensGun.setStrip(6);
+		_greensGun.setPosition(_green._position);
+		_greensGun.fixPriority(149);
+		_greensGun.hide();
+	}
+
+	if ((BF_INVENTORY.getObjectScene(INV_GREENS_GUN) == 370) && (BF_GLOBALS._dayNumber == 1)) {
+		_greensGun.setPosition(Common::Point(172, 137));
+		_greensGun.show();
+		BF_GLOBALS._sceneItems.push_front(&_greensGun);
+	}
+
+	_item1._sceneRegionId = 8;
+	BF_GLOBALS._sceneItems.push_back(&_item1);
+	_item2.setDetails(9, 370, 17, -1, 18, 1);
+	_item3.setDetails(10, 370, 19, -1, 20, 1);
+	_item4.setDetails(11, 370, 21, -1, 22, 1);
+	_item5.setDetails(12, 370, 23, -1, 24, 1);
+	_exit.setDetails(Rect(316, 133, 320, 166), 360, -1, -1, -1, 1, NULL);
+	_item6.setBounds(Rect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT));
+
+	BF_GLOBALS._sceneItems.push_back(&_item6);
+	BF_GLOBALS._sceneItems.remove(&BF_GLOBALS._player);
+	BF_GLOBALS._sceneItems.push_back(&BF_GLOBALS._player);
+}
+
+void Scene370::signal() {
+	switch (_sceneMode) {
+	case 1:
+		BF_GLOBALS._bookmark = bArrestedGreen;
+		BF_GLOBALS._sceneManager.changeScene(350);
+		break;
+	case 2:
+	case 3717:
+		BF_GLOBALS._player.enableControl();
+		break;
+	case 3:
+		break;
+	case 3707:
+		_object5.setDetails(370, 6, -1, 7, 1, NULL);
+		BF_GLOBALS._sceneItems.push_back(&_object5);
+		// Deliberate fall-through
+	case 3700:
+	case 3706:
+		_green.setAction(&_sequenceManager, this, 3701, NULL);
+		BF_GLOBALS._player.enableControl();
+		BF_GLOBALS._player._canWalk = false;
+		break;
+	case 3701:
+		BF_GLOBALS._player.disableControl();
+		setAction(&_sequenceManager, this, 3710, NULL);
+		break;
+	case 3702:
+		// Player tried to shoot Green
+		BF_GLOBALS._deathReason = 2;
+		BF_GLOBALS._sceneManager.changeScene(666);
+		break;
+	case 3703:
+		// Player dropped his gun
+		BF_GLOBALS._deathReason = 9;
+		BF_GLOBALS._sceneManager.changeScene(666);
+		break;
+	case 3704:
+		BF_GLOBALS.clearFlag(gunDrawn);
+		BF_INVENTORY.setObjectScene(INV_HANDCUFFS, 390);
+		BF_GLOBALS._player.setVisage(361);
+		BF_GLOBALS._player.animate(ANIM_MODE_1, NULL);
+		BF_GLOBALS._player.setObjectWrapper(new SceneObjectWrapper());
+		BF_GLOBALS._player.setStrip(3);
+
+		BF_GLOBALS._sceneItems.push_front(&_laura);
+		BF_GLOBALS._walkRegions.proc1(3);
+		_harrison.setAction(NULL);
+		BF_GLOBALS._player.enableControl();
+
+		BF_GLOBALS.set2Flags(f1015Marina);
+		BF_GLOBALS.set2Flags(f1027Marina);
+		BF_GLOBALS.set2Flags(f1098Marina);
+		break;
+	case 3705:
+		_laura.remove();
+		BF_GLOBALS._walkRegions.proc2(6);
+		BF_GLOBALS._walkRegions.proc2(1);
+		BF_GLOBALS._player.enableControl();
+		break;
+	case 3708:
+		_sound1.play(6);
+		BF_GLOBALS._sound1.changeSound(35);
+		BF_INVENTORY.setObjectScene(INV_GREENS_GUN, 370);
+		BF_GLOBALS._uiElements.addScore(50);
+		BF_GLOBALS._sceneItems.push_front(&_greensGun);
+
+		BF_GLOBALS._player.enableControl();
+		BF_GLOBALS._player._canWalk = false;
+
+		_sceneMode = 0;
+		_object5.remove();
+		_green.setAction(NULL);
+		BF_GLOBALS._walkRegions.proc1(6);
+		BF_GLOBALS._walkRegions.proc1(1);
+		break;
+	case 3709:
+		BF_GLOBALS._player.disableControl();
+		_sceneMode = 3713;
+		setAction(&_sequenceManager, this, 3713, NULL);
+		break;
+	case 3710:
+		BF_GLOBALS._player.enableControl();
+		BF_GLOBALS._player._canWalk = false;
+		_sceneMode = 3701;
+		_green.setAction(&_sequenceManager, this, 3701, NULL);
+		break;
+	case 3711:
+		BF_GLOBALS._walkRegions.proc1(3);
+		BF_INVENTORY.setObjectScene(INV_GREENS_GUN, 1);
+		BF_GLOBALS._uiElements.addScore(30);
+		_greensGun.remove();
+		BF_GLOBALS._player.enableControl();
+		break;
+	case 3712:
+		BF_GLOBALS._uiElements._active = false;
+		BF_GLOBALS._uiElements.hide();
+
+		if (BF_GLOBALS._sceneObjects->contains(&_greensGun))
+			_greensGun.remove();
+		_sceneMode = 1;
+		setAction(&_sequenceManager, this, 3714, NULL);
+		break;
+	case 3713:
+		BF_GLOBALS._player.enableControl();
+		BF_GLOBALS._player._canWalk = false;
+		break;
+	case 3715:
+		BF_GLOBALS._uiElements.addScore(50);
+		BF_INVENTORY.setObjectScene(INV_GREEN_ID, 1);
+		BF_INVENTORY.setObjectScene(INV_GREENS_KNIFE, 1);
+		BF_GLOBALS._walkRegions.proc1(3);
+		BF_GLOBALS._player.enableControl();
+		break;
+	case 3716:
+		BF_GLOBALS.clearFlag(fCalledBackup);
+		BF_GLOBALS.clearFlag(fBackupIn350);
+		BF_GLOBALS.clearFlag(fBackupArrived340);
+		BF_GLOBALS.setFlag(greenTaken);
+		BF_GLOBALS.setFlag(fToldToLeave340);
+
+		BF_GLOBALS._bookmark = bCalledToDomesticViolence;
+		_harrison.remove();
+		_green.remove();
+		BF_GLOBALS._player.enableControl();
+		break;
+	}
+}
+
+void Scene370::process(Event &event) {
+	SceneExt::process(event);
+
+	if (BF_GLOBALS._player._enabled && !_eventHandler && (event.mousePos.y < (BF_INTERFACE_Y - 1))) {
+		// Check if the cursor is on an exit
+		if (_exit.contains(event.mousePos)) {
+			GfxSurface surface = _cursorVisage.getFrame(EXITFRAME_E);
+			BF_GLOBALS._events.setCursor(surface);
+		} else {
+			// In case an exit cursor was being shown, restore the previously selected cursor
+			CursorType cursorId = BF_GLOBALS._events.getCursor();
+			BF_GLOBALS._events.setCursor(cursorId);
+		}
+	}
+}
+
+void Scene370::dispatch() {
+	SceneExt::dispatch();
+
+	if ((BF_GLOBALS._player._position.x >= 316) && !BF_GLOBALS._sceneObjects->contains(&_laura) &&
+				!BF_GLOBALS._sceneObjects->contains(&_green)) {
+		if (BF_GLOBALS._bookmark < bArrestedGreen) {
+			BF_GLOBALS._player.disableControl();
+			_sceneMode = 3712;
+			setAction(&_sequenceManager, this, 3712, &BF_GLOBALS._player, NULL);
+		} else {
+			BF_GLOBALS._sound1.fadeSound(35);
+			BF_GLOBALS._sceneManager.changeScene(360);
+		}
+	}
+}
+
+/*--------------------------------------------------------------------------
  * Scene 385 - City Hall
  *
  *--------------------------------------------------------------------------*/
diff --git a/engines/tsage/blue_force/blueforce_scenes3.h b/engines/tsage/blue_force/blueforce_scenes3.h
index dfc963c..24582d0 100644
--- a/engines/tsage/blue_force/blueforce_scenes3.h
+++ b/engines/tsage/blue_force/blueforce_scenes3.h
@@ -490,6 +490,70 @@ public:
 	virtual void checkGun();
 };
 
+class Scene370: public SceneExt {
+	/* Items */
+	class Item1: public NamedHotspot {
+	public:
+		virtual bool startAction(CursorType action, Event &event);
+	};
+	class Item6: public SceneHotspot {
+	public:
+		virtual bool startAction(CursorType action, Event &event);
+	};
+	class Exit: public NamedHotspot {
+	public:
+		virtual bool startAction(CursorType action, Event &event);
+	};
+
+	/* Objects */
+	class GreensGun: public NamedObject {
+	public:
+		virtual bool startAction(CursorType action, Event &event);
+	};
+	class Green: public NamedObject2 {
+	public:
+		virtual bool startAction(CursorType action, Event &event);
+	};
+	class Harrison: public NamedObject {
+	public:
+		virtual bool startAction(CursorType action, Event &event);
+	};
+	class Laura: public NamedObject {
+	public:
+		virtual bool startAction(CursorType action, Event &event);
+	};
+
+	/* Speakers */
+	class SpeakerLaura370: public SpeakerLaura {
+	public:
+		virtual void setText(const Common::String &msg);
+	};
+public:
+	SequenceManager _sequenceManager;
+	SpeakerGameText _gameTextSpeaker;
+	SpeakerJakeUniform _jakeUniformSpeaker;
+	SpeakerLaura _lauraSpeaker;
+	SpeakerLauraHeld _lauraHeldSpeaker;
+	SpeakerGreen _greenSpeaker;
+	SpeakerHarrison _harrisonSpeaker;
+	GreensGun _greensGun;
+	Green _green;
+	Harrison _harrison;
+	Laura _laura;
+	NamedObject _object5;
+	SceneObject _object6;
+	Item1 _item1;
+	NamedHotspot _item2, _item3, _item4, _item5;
+	Item6 _item6;
+	Exit _exit;
+	ASound _sound1;
+
+	virtual void postInit(SceneObjectList *OwnerList = NULL);
+	virtual void signal();
+	virtual void process(Event &event);
+	virtual void dispatch();
+};
+
 class Scene380: public SceneExt {
 	/* Objects */
 	class Vechile: public NamedObjectExt {
diff --git a/engines/tsage/blue_force/blueforce_speakers.cpp b/engines/tsage/blue_force/blueforce_speakers.cpp
index ff6b477..66dd33c 100644
--- a/engines/tsage/blue_force/blueforce_speakers.cpp
+++ b/engines/tsage/blue_force/blueforce_speakers.cpp
@@ -574,6 +574,50 @@ void SpeakerJake385::setText(const Common::String &msg) {
 	_object2.fixCountdown(8, _numFrames);
 }
 
+/*--------------------------------------------------------------------------*/
+
+SpeakerLaura::SpeakerLaura(): VisualSpeaker() {
+	_color1 = 97;
+	_color2 = 105;
+	_speakerName = "LAURA";
+}
+
+void SpeakerLaura::setText(const Common::String &msg) {
+	_removeObject2 = true;
+
+	_object2.postInit();
+	_object2.setVisage(345);
+	_object2.setStrip2(2);
+	_object2.fixPriority(255);
+	_object2.setPosition(Common::Point(BF_GLOBALS._sceneManager._scene->_sceneBounds.left + 38,
+		BF_GLOBALS._sceneManager._scene->_sceneBounds.top + 166));
+
+	VisualSpeaker::setText(msg);
+	_object2.fixCountdown(8, _numFrames);
+}
+
+/*--------------------------------------------------------------------------*/
+
+SpeakerLauraHeld::SpeakerLauraHeld(): VisualSpeaker() {
+	_color1 = 97;
+	_color2 = 105;
+	_speakerName = "LAURAHELD";
+}
+
+void SpeakerLauraHeld::setText(const Common::String &msg) {
+	_removeObject2 = true;
+
+	_object2.postInit();
+	_object2.setVisage(374);
+	_object2.setStrip2(1);
+	_object2.fixPriority(255);
+	_object2.setPosition(Common::Point(BF_GLOBALS._sceneManager._scene->_sceneBounds.left + 120,
+		BF_GLOBALS._sceneManager._scene->_sceneBounds.top + 120));
+
+	VisualSpeaker::setText(msg);
+	_object2.fixCountdown(8, _numFrames);
+}
+
 } // End of namespace BlueForce
 
 } // End of namespace TsAGE
diff --git a/engines/tsage/blue_force/blueforce_speakers.h b/engines/tsage/blue_force/blueforce_speakers.h
index d5a38f8..3e6728c 100644
--- a/engines/tsage/blue_force/blueforce_speakers.h
+++ b/engines/tsage/blue_force/blueforce_speakers.h
@@ -211,6 +211,22 @@ public:
 	virtual void setText(const Common::String &msg);
 };
 
+class SpeakerLaura: public VisualSpeaker {
+public:
+	SpeakerLaura();
+
+	virtual Common::String getClassName() { return "SpeakerLaura"; }
+	virtual void setText(const Common::String &msg);
+};
+
+class SpeakerLauraHeld: public VisualSpeaker {
+public:
+	SpeakerLauraHeld();
+
+	virtual Common::String getClassName() { return "SpeakerLaura"; }
+	virtual void setText(const Common::String &msg);
+};
+
 } // End of namespace BlueForce
 
 } // End of namespace TsAGE


Commit: 83a03d883dd657d06b3ec9d41c279a04f2ea8d25
    https://github.com/scummvm/scummvm/commit/83a03d883dd657d06b3ec9d41c279a04f2ea8d25
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2011-09-17T22:58:24-07:00

Commit Message:
TSAGE: Fixed ordering of scenes in Blue Force group 3

Changed paths:
    engines/tsage/blue_force/blueforce_scenes3.cpp



diff --git a/engines/tsage/blue_force/blueforce_scenes3.cpp b/engines/tsage/blue_force/blueforce_scenes3.cpp
index 2f38d3a..6bb3911 100644
--- a/engines/tsage/blue_force/blueforce_scenes3.cpp
+++ b/engines/tsage/blue_force/blueforce_scenes3.cpp
@@ -3298,6 +3298,137 @@ void Scene370::dispatch() {
 }
 
 /*--------------------------------------------------------------------------
+ * Scene 380 - Outside City Hall & Jail
+ *
+ *--------------------------------------------------------------------------*/
+
+bool Scene380::Vechile::startAction(CursorType action, Event &event) {
+	Scene380 *scene = (Scene380 *)BF_GLOBALS._sceneManager._scene;
+
+	switch (action) {
+	case CURSOR_USE:
+		BF_GLOBALS._player.disableControl();
+		scene->_sceneMode = 1;
+		scene->setAction(&scene->_sequenceManager, scene, 3802, &BF_GLOBALS._player, NULL);
+		return true;
+	default:
+		return NamedObject::startAction(action, event);
+	}
+}
+
+bool Scene380::Door::startAction(CursorType action, Event &event) {
+	Scene380 *scene = (Scene380 *)BF_GLOBALS._sceneManager._scene;
+
+	switch (action) {
+	case CURSOR_USE:
+		BF_GLOBALS._player.disableControl();
+		scene->_sceneMode = 2;
+		scene->setAction(&scene->_sequenceManager, scene, 3800, &BF_GLOBALS._player, &scene->_door, NULL);
+		return true;
+	default:
+		return NamedObject::startAction(action, event);
+	}
+}
+
+/*--------------------------------------------------------------------------*/
+
+void Scene380::postInit(SceneObjectList *OwnerList) {
+	SceneExt::postInit();
+	loadScene(380);
+	setZoomPercents(68, 80, 131, 100);
+
+	BF_GLOBALS._sound1.fadeSound(33);
+	BF_GLOBALS._walkRegions.proc1(9);
+
+	_door.postInit();
+	_door.setVisage(380);
+	_door.setStrip(4);
+	_door.setPosition(Common::Point(132, 66));
+	_door.setDetails(380, 12, 13, -1, 1, NULL);
+
+	BF_GLOBALS._player.postInit();
+	BF_GLOBALS._player.setObjectWrapper(new SceneObjectWrapper());
+	BF_GLOBALS._player.animate(ANIM_MODE_1, NULL);
+	BF_GLOBALS._player.changeZoom(-1);
+
+	_vechile.postInit();
+	_vechile.setVisage(380);
+	_vechile.fixPriority(109);
+	
+	if (BF_GLOBALS.getFlag(fWithLyle)) {
+		// Show vechile as car
+		_vechile.setStrip(3);
+		_vechile.setPosition(Common::Point(273, 125));
+		_vechile.setDetails(580, 2, 3, -1, 1, NULL);
+
+		BF_GLOBALS._player.setVisage(129);
+		BF_GLOBALS._walkRegions.proc1(12);
+		BF_GLOBALS._walkRegions.proc1(18);
+		BF_GLOBALS._walkRegions.proc1(19);
+		BF_GLOBALS._walkRegions.proc1(20);
+		BF_GLOBALS._walkRegions.proc1(25);
+		BF_GLOBALS._walkRegions.proc1(26);
+		BF_GLOBALS._walkRegions.proc1(27);
+	} else if (BF_GLOBALS.getFlag(onDuty)) {
+		// Show on duty motorcycle
+		_vechile.setStrip(2);
+		_vechile.setDetails(300, 11, 13, -1, 1, NULL);
+		_vechile.setPosition(Common::Point(252, 115));
+
+		BF_GLOBALS._player.setVisage(1341);
+	} else {
+		// Show off duty motorcycle
+		_vechile.setStrip(1);
+		_vechile.setDetails(580, 0, 1, -1, 1, NULL);
+		_vechile.setPosition(Common::Point(249, 110));
+
+		BF_GLOBALS._player.setVisage(129);
+	}
+
+	BF_GLOBALS._player.updateAngle(_vechile._position);
+	BF_GLOBALS._sceneItems.push_back(&_door);
+
+	switch (BF_GLOBALS._sceneManager._previousScene) {
+	case 50:
+	case 60:
+	case 330:
+	case 370:
+		BF_GLOBALS._player.setPosition(Common::Point(251, 100));
+		BF_GLOBALS._player._strip = 3;
+		BF_GLOBALS._player.enableControl();
+		break;
+	default:
+		BF_GLOBALS._player.disableControl();
+		_sceneMode = 0;
+		setAction(&_sequenceManager, this, 3801, &BF_GLOBALS._player, &_door, NULL);
+		break;
+	}
+
+	_item1.setDetails(7, 380, 0, 1, 2, 1);
+	_item2.setDetails(9, 380, 3, 4, 5, 1);
+	_item3.setDetails(17, 380, 6, 7, 8, 1);
+	_item4.setDetails(20, 380, 9, 10, 11, 1);
+	_item5.setDetails(15, 380, 14, 15, 16, 1);
+	_item6.setDetails(4, 380, 17, 18, 19, 1);
+	_item7.setDetails(19, 380, 20, 4, 21, 1);
+	_item8.setDetails(18, 380, 22, 23, 24, 1);
+	_item9.setDetails(6, 380, 25, 26, 27, 1);
+}
+
+void Scene380::signal() {
+	switch (_sceneMode) {
+	case 1:
+		BF_GLOBALS._sceneManager.changeScene(60);
+		break;
+	case 2:
+		BF_GLOBALS._sceneManager.changeScene(385);
+		break;
+	default:
+		BF_GLOBALS._player.enableControl();
+	}
+}
+
+/*--------------------------------------------------------------------------
  * Scene 385 - City Hall
  *
  *--------------------------------------------------------------------------*/
@@ -4036,137 +4167,6 @@ void Scene390::signal() {
 	}
 }
 
-/*--------------------------------------------------------------------------
- * Scene 380 - Outside City Hall & Jail
- *
- *--------------------------------------------------------------------------*/
-
-bool Scene380::Vechile::startAction(CursorType action, Event &event) {
-	Scene380 *scene = (Scene380 *)BF_GLOBALS._sceneManager._scene;
-
-	switch (action) {
-	case CURSOR_USE:
-		BF_GLOBALS._player.disableControl();
-		scene->_sceneMode = 1;
-		scene->setAction(&scene->_sequenceManager, scene, 3802, &BF_GLOBALS._player, NULL);
-		return true;
-	default:
-		return NamedObject::startAction(action, event);
-	}
-}
-
-bool Scene380::Door::startAction(CursorType action, Event &event) {
-	Scene380 *scene = (Scene380 *)BF_GLOBALS._sceneManager._scene;
-
-	switch (action) {
-	case CURSOR_USE:
-		BF_GLOBALS._player.disableControl();
-		scene->_sceneMode = 2;
-		scene->setAction(&scene->_sequenceManager, scene, 3800, &BF_GLOBALS._player, &scene->_door, NULL);
-		return true;
-	default:
-		return NamedObject::startAction(action, event);
-	}
-}
-
-/*--------------------------------------------------------------------------*/
-
-void Scene380::postInit(SceneObjectList *OwnerList) {
-	SceneExt::postInit();
-	loadScene(380);
-	setZoomPercents(68, 80, 131, 100);
-
-	BF_GLOBALS._sound1.fadeSound(33);
-	BF_GLOBALS._walkRegions.proc1(9);
-
-	_door.postInit();
-	_door.setVisage(380);
-	_door.setStrip(4);
-	_door.setPosition(Common::Point(132, 66));
-	_door.setDetails(380, 12, 13, -1, 1, NULL);
-
-	BF_GLOBALS._player.postInit();
-	BF_GLOBALS._player.setObjectWrapper(new SceneObjectWrapper());
-	BF_GLOBALS._player.animate(ANIM_MODE_1, NULL);
-	BF_GLOBALS._player.changeZoom(-1);
-
-	_vechile.postInit();
-	_vechile.setVisage(380);
-	_vechile.fixPriority(109);
-	
-	if (BF_GLOBALS.getFlag(fWithLyle)) {
-		// Show vechile as car
-		_vechile.setStrip(3);
-		_vechile.setPosition(Common::Point(273, 125));
-		_vechile.setDetails(580, 2, 3, -1, 1, NULL);
-
-		BF_GLOBALS._player.setVisage(129);
-		BF_GLOBALS._walkRegions.proc1(12);
-		BF_GLOBALS._walkRegions.proc1(18);
-		BF_GLOBALS._walkRegions.proc1(19);
-		BF_GLOBALS._walkRegions.proc1(20);
-		BF_GLOBALS._walkRegions.proc1(25);
-		BF_GLOBALS._walkRegions.proc1(26);
-		BF_GLOBALS._walkRegions.proc1(27);
-	} else if (BF_GLOBALS.getFlag(onDuty)) {
-		// Show on duty motorcycle
-		_vechile.setStrip(2);
-		_vechile.setDetails(300, 11, 13, -1, 1, NULL);
-		_vechile.setPosition(Common::Point(252, 115));
-
-		BF_GLOBALS._player.setVisage(1341);
-	} else {
-		// Show off duty motorcycle
-		_vechile.setStrip(1);
-		_vechile.setDetails(580, 0, 1, -1, 1, NULL);
-		_vechile.setPosition(Common::Point(249, 110));
-
-		BF_GLOBALS._player.setVisage(129);
-	}
-
-	BF_GLOBALS._player.updateAngle(_vechile._position);
-	BF_GLOBALS._sceneItems.push_back(&_door);
-
-	switch (BF_GLOBALS._sceneManager._previousScene) {
-	case 50:
-	case 60:
-	case 330:
-	case 370:
-		BF_GLOBALS._player.setPosition(Common::Point(251, 100));
-		BF_GLOBALS._player._strip = 3;
-		BF_GLOBALS._player.enableControl();
-		break;
-	default:
-		BF_GLOBALS._player.disableControl();
-		_sceneMode = 0;
-		setAction(&_sequenceManager, this, 3801, &BF_GLOBALS._player, &_door, NULL);
-		break;
-	}
-
-	_item1.setDetails(7, 380, 0, 1, 2, 1);
-	_item2.setDetails(9, 380, 3, 4, 5, 1);
-	_item3.setDetails(17, 380, 6, 7, 8, 1);
-	_item4.setDetails(20, 380, 9, 10, 11, 1);
-	_item5.setDetails(15, 380, 14, 15, 16, 1);
-	_item6.setDetails(4, 380, 17, 18, 19, 1);
-	_item7.setDetails(19, 380, 20, 4, 21, 1);
-	_item8.setDetails(18, 380, 22, 23, 24, 1);
-	_item9.setDetails(6, 380, 25, 26, 27, 1);
-}
-
-void Scene380::signal() {
-	switch (_sceneMode) {
-	case 1:
-		BF_GLOBALS._sceneManager.changeScene(60);
-		break;
-	case 2:
-		BF_GLOBALS._sceneManager.changeScene(385);
-		break;
-	default:
-		BF_GLOBALS._player.enableControl();
-	}
-}
-
 } // End of namespace BlueForce
 
 } // End of namespace TsAGE






More information about the Scummvm-git-logs mailing list