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

dreammaster dreammaster at scummvm.org
Sat Sep 10 03:30:50 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:
c75da8051c TSAGE: Implemented Scene 325 - Police Conference Room
b3773f7c37 TSAGE: Cleaned up the savegame code, and enabled it for Blue Force


Commit: c75da8051cd81548d112201c347c422fa570ea0b
    https://github.com/scummvm/scummvm/commit/c75da8051cd81548d112201c347c422fa570ea0b
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2011-09-09T18:21:57-07:00

Commit Message:
TSAGE: Implemented Scene 325 - Police Conference Room

Changed paths:
    engines/tsage/blue_force/blueforce_logic.cpp
    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 c91007e..73467d8 100644
--- a/engines/tsage/blue_force/blueforce_logic.cpp
+++ b/engines/tsage/blue_force/blueforce_logic.cpp
@@ -87,6 +87,8 @@ Scene *BlueForceGame::createScene(int sceneNumber) {
 		// Inside Police Station
 		return new Scene315();
 	case 325:
+		// Police Station Conference Room
+		return new Scene325();
 	case 330:
 	case 340:
 	case 342:
diff --git a/engines/tsage/blue_force/blueforce_scenes3.cpp b/engines/tsage/blue_force/blueforce_scenes3.cpp
index 7ceb9bd..7ab6295 100644
--- a/engines/tsage/blue_force/blueforce_scenes3.cpp
+++ b/engines/tsage/blue_force/blueforce_scenes3.cpp
@@ -45,8 +45,8 @@ void Scene300::Object::startAction(CursorType action, Event &event) {
 	}
 }
 
-void Scene300::Object17::startAction(CursorType action, Event &event) {
-	if ((action != CURSOR_USE) || !BF_GLOBALS.getFlag(3)) {
+void Scene300::Object19::startAction(CursorType action, Event &event) {
+	if ((action != CURSOR_USE) || !BF_GLOBALS.getFlag(onDuty)) {
 		NamedObject::startAction(action, event);
 	} else if ((BF_GLOBALS._dayNumber != 2) || (BF_GLOBALS._bookmark >= bEndDayOne)) {
 		Scene300 *scene = (Scene300 *)BF_GLOBALS._sceneManager._scene;
@@ -175,7 +175,7 @@ void Scene300::Action4::signal() {
 		setAction(&scene->_sequenceManager1, this, 316, &BF_GLOBALS._player, &scene->_object19, NULL);
 		break;
 	case 2:
-		BF_GLOBALS._sceneManager.changeScene(15);
+		BF_GLOBALS._sceneManager.changeScene(60);
 		break;
 	case 3:
 		setAction(&scene->_sequenceManager1, this, 319, &scene->_object19, NULL);
@@ -203,7 +203,6 @@ void Scene300::Action5::signal() {
 		break;
 	case 2:
 		scene->_stripManager.start(3004, this);
-		BF_GLOBALS._sceneManager.changeScene(15);
 		break;
 	case 3: {
 		ADD_PLAYER_MOVER_NULL(BF_GLOBALS._player, 186, 140);
@@ -1075,7 +1074,8 @@ void Scene315::postInit(SceneObjectList *OwnerList) {
 		_object7.postInit();
 		_object8.setFrame(8);
 		_sceneMode = (BF_GLOBALS._dayNumber == 1) ? 3152 : 3155;
-		setAction(&_sequenceManager, this, _sceneMode, &_object6, &_object7, &_object8, NULL);
+		setAction(&_sequenceManager, this, _sceneMode, &BF_GLOBALS._player, &_object6, 
+			&_object7, &_object8, NULL);
 		break;
 	case 300:
 	default:
@@ -1341,6 +1341,85 @@ void Scene315::dispatch() {
 	}
 }
 
+/*--------------------------------------------------------------------------
+ * Scene 325 - Police Station Conference Room
+ *
+ *--------------------------------------------------------------------------*/
+
+void Scene325::Item1::startAction(CursorType action, Event &event) {
+	if (action == CURSOR_EXIT) {
+		BF_GLOBALS._events.setCursor(CURSOR_WALK);
+		BF_GLOBALS._player.disableControl();
+		BF_GLOBALS._sceneManager.changeScene(315);
+	}
+}
+
+/*--------------------------------------------------------------------------*/
+
+void Scene325::postInit(SceneObjectList *OwnerList) {
+	SceneExt::postInit();
+	loadScene(325);
+	BF_GLOBALS._interfaceY = 200;
+	BF_GLOBALS.clearFlag(fCanDrawGun);
+
+	if (BF_GLOBALS._dayNumber == 0)
+		BF_GLOBALS._dayNumber = 1;
+
+	// Add the speakers
+	_stripManager.addSpeaker(&_gameTextSpeaker);
+	_stripManager.addSpeaker(&_PSutterSpeaker);
+
+	BF_GLOBALS._player.postInit();
+	BF_GLOBALS._player.hide();
+
+	if (BF_GLOBALS._dayNumber == 1) {
+		_object1.postInit();
+		_object1.setVisage(325);
+		_object1.setStrip(8);
+		_object1.setPosition(Common::Point(128, 44));
+	} else {
+		_object1.postInit();
+		_object1.setVisage(325);
+		_object1.setStrip(8);
+		_object1.setFrame(2);
+		_object1.setPosition(Common::Point(132, 28));
+		
+		_object2.postInit();
+		_object2.setVisage(325);
+		_object2.setStrip(8);
+		_object2.setFrame(3);
+		_object2.setPosition(Common::Point(270, 24));
+	}
+
+	_object3.postInit();
+	_object3.setVisage(335);
+	_object3.setStrip(4);
+	_object3.setPosition(Common::Point(202, 122));
+
+	_object4.postInit();
+	_object4.setVisage(335);
+	_object4.setStrip(2);
+	_object4.setPosition(Common::Point(283, 102));
+
+	_object5.postInit();
+	_object5.setVisage(335);
+	_object5.setStrip(1);
+	_object5.setPosition(Common::Point(135, 167));
+
+	_item1.setup(Rect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT), 560, -1, -1, -1, 1, NULL);
+	BF_GLOBALS._player.disableControl();
+
+	_sceneMode = (BF_GLOBALS._dayNumber == 1) ? 3250 : 3251;
+	setAction(&_sequenceManager, this, _sceneMode, &_object3, &_object4, &_object5, NULL);
+}
+
+void Scene325::signal() {
+	BF_GLOBALS._player._uiEnabled = 0;
+	BF_GLOBALS._player._canWalk = true;
+	BF_GLOBALS._player._enabled = true;
+	BF_GLOBALS._events.setCursor(CURSOR_EXIT);
+}
+
 } // 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 e0e7d78..df03057 100644
--- a/engines/tsage/blue_force/blueforce_scenes3.h
+++ b/engines/tsage/blue_force/blueforce_scenes3.h
@@ -49,7 +49,7 @@ class Scene300: public SceneExt {
 
 		virtual void startAction(CursorType action, Event &event);
 	};
-	class Object17: public NamedObject {
+	class Object19: public NamedObject {
 	public:
 		virtual void startAction(CursorType action, Event &event);
 	};
@@ -103,8 +103,8 @@ public:
 	SceneObject _object8, _object9, _object10;
 	NamedObject _object11, _object12;
 	Object _object13, _object14, _object15, _object16;
-	Object17 _object17;
-	NamedObject _object18, _object19;
+	NamedObject _object17, _object18;
+	Object19 _object19;
 	Item1 _item1;
 	Item2 _item2;
 	NamedHotspot _item3, _item4, _item5, _item6, _item7;
@@ -226,6 +226,23 @@ public:
 	virtual void dispatch();
 };
 
+class Scene325: public SceneExt {
+	/* Items */
+	class Item1: public NamedHotspot {
+	public:
+		virtual void startAction(CursorType action, Event &event);
+	};
+public:
+	SequenceManager _sequenceManager;
+	SpeakerGameText _gameTextSpeaker;
+	SpeakerPSutter _PSutterSpeaker;
+	Item1 _item1;
+	NamedObject _object1, _object2, _object3, _object4, _object5;
+
+	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 58db865..f35fa22 100644
--- a/engines/tsage/blue_force/blueforce_speakers.cpp
+++ b/engines/tsage/blue_force/blueforce_speakers.cpp
@@ -286,6 +286,27 @@ void SpeakerJailer::setText(const Common::String &msg) {
 	_object2.fixCountdown(8, _numFrames);
 }
 
+/*--------------------------------------------------------------------------*/
+
+SpeakerPSutter::SpeakerPSutter(): VisualSpeaker() {
+	_color1 = 20;
+	_color2 = 22;
+	_speakerName = "PSUTTER";
+}
+
+void SpeakerPSutter::setText(const Common::String &msg) {
+	_removeObject2 = true;
+
+	_object2.postInit();
+	_object2.setVisage(335);
+	_object2.setStrip2(3);
+	_object2.fixPriority(200);
+	_object2.setPosition(Common::Point(202, 48));
+
+	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 9db0dd2..1bb56ec 100644
--- a/engines/tsage/blue_force/blueforce_speakers.h
+++ b/engines/tsage/blue_force/blueforce_speakers.h
@@ -116,6 +116,15 @@ public:
 	virtual void setText(const Common::String &msg);
 };
 
+class SpeakerPSutter: public VisualSpeaker {
+public:
+	SpeakerPSutter();
+
+	virtual Common::String getClassName() { return "SpeakerPSutter"; }
+	virtual void setText(const Common::String &msg);
+};
+
+
 } // End of namespace BlueForce
 
 } // End of namespace TsAGE


Commit: b3773f7c378ccf1ff43091af16c068944f357479
    https://github.com/scummvm/scummvm/commit/b3773f7c378ccf1ff43091af16c068944f357479
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2011-09-09T18:22:39-07:00

Commit Message:
TSAGE: Cleaned up the savegame code, and enabled it for Blue Force

Changed paths:
    engines/tsage/core.cpp
    engines/tsage/events.cpp
    engines/tsage/globals.cpp
    engines/tsage/globals.h
    engines/tsage/ringworld/ringworld_logic.cpp
    engines/tsage/ringworld/ringworld_logic.h
    engines/tsage/scenes.cpp
    engines/tsage/scenes.h



diff --git a/engines/tsage/core.cpp b/engines/tsage/core.cpp
index 78a4cef..bee2214 100644
--- a/engines/tsage/core.cpp
+++ b/engines/tsage/core.cpp
@@ -3790,8 +3790,9 @@ void SceneHandler::process(Event &event) {
 		}
 
 		// Mouse press handling
-		if (_globals->_player._uiEnabled && (event.eventType == EVENT_BUTTON_DOWN) &&
-				!_globals->_sceneItems.empty()) {
+		bool enabled = (_vm->getGameID() == GType_BlueForce) ? _globals->_player._enabled :
+			_globals->_player._uiEnabled;
+		if (enabled && (event.eventType == EVENT_BUTTON_DOWN) && !_globals->_sceneItems.empty()) {
 			// Check if the mouse is on the player
 			if (_globals->_player.contains(event.mousePos)) {
 				playerAction(event);
diff --git a/engines/tsage/events.cpp b/engines/tsage/events.cpp
index 00c200e..d2ade97 100644
--- a/engines/tsage/events.cpp
+++ b/engines/tsage/events.cpp
@@ -196,7 +196,7 @@ void EventsClass::setCursor(CursorType cursorType) {
 		// Exit cursor (Blue Force)
 		assert(_vm->getGameID() == GType_BlueForce);
 		cursor = _resourceManager->getSubResource(1, 5, 7, &size);
-		_currentCursor = CURSOR_TALK;
+		_currentCursor = CURSOR_EXIT;
 		break;
 
 	case CURSOR_ARROW:
diff --git a/engines/tsage/globals.cpp b/engines/tsage/globals.cpp
index 050ad49..b13cd98 100644
--- a/engines/tsage/globals.cpp
+++ b/engines/tsage/globals.cpp
@@ -188,7 +188,24 @@ BlueForceGlobals::BlueForceGlobals(): Globals() {
 
 void BlueForceGlobals::synchronize(Serializer &s) {
 	Globals::synchronize(s);
-	error("Sync variables");
+
+	s.syncAsSint16LE(_dayNumber);
+	s.syncAsSint16LE(_v4CEA4);
+	s.syncAsSint16LE(_v4CEA8);
+	s.syncAsSint16LE(_driveFromScene);
+	s.syncAsSint16LE(_driveToScene);
+	s.syncAsSint16LE(_v4CF9E);
+	s.syncAsSint16LE(_v4E238);
+	s.syncAsSint16LE(_v501FC);
+	s.syncAsSint16LE(_v50696);
+	s.syncAsSint16LE(_v51C42);
+	s.syncAsSint16LE(_v51C44);
+	s.syncAsSint16LE(_interfaceY);
+	s.syncAsSint16LE(_bookmark);
+	s.syncAsSint16LE(_mapLocationId);
+	s.syncAsSint16LE(_clip1Bullets);
+	s.syncAsSint16LE(_clip2Bullets);
+
 }
 
 void BlueForceGlobals::reset() {
diff --git a/engines/tsage/globals.h b/engines/tsage/globals.h
index 9938802..2ddbfb3 100644
--- a/engines/tsage/globals.h
+++ b/engines/tsage/globals.h
@@ -166,6 +166,7 @@ class BlueForceGlobals: public Globals {
 public:
 	ASoundExt _sound1, _sound2, _sound3;
 	UIElements _uiElements;
+	StripProxy _stripProxy;
 	int _dayNumber;
 	int _v4CEA4;
 	int _v4CEA8;
@@ -173,15 +174,14 @@ public:
 	int _driveToScene;
 	int _v4CF9E;
 	int _v4E238;
-	int _v50696;
 	int _v501FC;
+	int _v50696;
 	int _v51C42;
 	int _v51C44;
 	int _interfaceY;
 	Bookmark _bookmark;
 	int _mapLocationId;
 	int _clip1Bullets, _clip2Bullets;
-	StripProxy _stripProxy;
 
 	BlueForceGlobals();
 	void reset();
diff --git a/engines/tsage/ringworld/ringworld_logic.cpp b/engines/tsage/ringworld/ringworld_logic.cpp
index 4bd0b0a..a131969 100644
--- a/engines/tsage/ringworld/ringworld_logic.cpp
+++ b/engines/tsage/ringworld/ringworld_logic.cpp
@@ -21,8 +21,6 @@
  */
 
 #include "common/config-manager.h"
-#include "common/translation.h"
-#include "gui/saveload.h"
 #include "tsage/ringworld/ringworld_logic.h"
 #include "tsage/scenes.h"
 #include "tsage/tsage.h"
@@ -406,51 +404,6 @@ RingworldInvObjectList::RingworldInvObjectList() :
 
 /*--------------------------------------------------------------------------*/
 
-void RingworldGame::restartGame() {
-	if (MessageDialog::show(RESTART_MSG, CANCEL_BTN_STRING, RESTART_BTN_STRING) == 1)
-		_globals->_game->restart();
-}
-
-void RingworldGame::saveGame() {
-	if (!_vm->canSaveGameStateCurrently())
-		MessageDialog::show(SAVING_NOT_ALLOWED_MSG, OK_BTN_STRING);
-	else {
-		// Show the save dialog
-		handleSaveLoad(true, _globals->_sceneHandler->_saveGameSlot, _globals->_sceneHandler->_saveName);
-	}
-}
-
-void RingworldGame::restoreGame() {
-	if (!_vm->canLoadGameStateCurrently())
-		MessageDialog::show(RESTORING_NOT_ALLOWED_MSG, OK_BTN_STRING);
-	else {
-		// Show the load dialog
-		handleSaveLoad(false, _globals->_sceneHandler->_loadGameSlot, _globals->_sceneHandler->_saveName);
-	}
-}
-
-void RingworldGame::quitGame() {
-	if (MessageDialog::show(QUIT_CONFIRM_MSG, CANCEL_BTN_STRING, QUIT_BTN_STRING) == 1)
-		_vm->quitGame();
-}
-
-void RingworldGame::handleSaveLoad(bool saveFlag, int &saveSlot, Common::String &saveName) {
-	const EnginePlugin *plugin = 0;
-	EngineMan.findGame(_vm->getGameId(), &plugin);
-	GUI::SaveLoadChooser *dialog;
-	if (saveFlag)
-		dialog = new GUI::SaveLoadChooser(_("Save game:"), _("Save"));
-	else
-		dialog = new GUI::SaveLoadChooser(_("Load game:"), _("Load"));
-
-	dialog->setSaveMode(saveFlag);
-
-	saveSlot = dialog->runModalWithPluginAndTarget(plugin, ConfMan.getActiveDomainName());
-	saveName = dialog->getResultString();
-
-	delete dialog;
-}
-
 void RingworldGame::start() {
 	// Set some default flags
 	_globals->setFlag(12);
diff --git a/engines/tsage/ringworld/ringworld_logic.h b/engines/tsage/ringworld/ringworld_logic.h
index 286abd3..40b202b 100644
--- a/engines/tsage/ringworld/ringworld_logic.h
+++ b/engines/tsage/ringworld/ringworld_logic.h
@@ -147,15 +147,9 @@ public:
 #define RING_INVENTORY (*((::TsAGE::Ringworld::RingworldInvObjectList *)_globals->_inventory))
 
 class RingworldGame: public Game {
-protected:
-	virtual void handleSaveLoad(bool saveFlag, int &saveSlot, Common::String &saveName);
 public:
 	virtual void start();
 	virtual void restart();
-	virtual void restartGame();
-	virtual void saveGame();
-	virtual void restoreGame();
-	virtual void quitGame();
 	virtual void endGame(int resNum, int lineNum);
 
 	virtual Scene *createScene(int sceneNumber);
diff --git a/engines/tsage/scenes.cpp b/engines/tsage/scenes.cpp
index e8b3189..d68f5c2 100644
--- a/engines/tsage/scenes.cpp
+++ b/engines/tsage/scenes.cpp
@@ -20,11 +20,15 @@
  *
  */
 
+#include "common/config-manager.h"
+#include "common/translation.h"
+#include "gui/saveload.h"
 #include "tsage/scenes.h"
 #include "tsage/globals.h"
 #include "tsage/ringworld/ringworld_logic.h"
 #include "tsage/tsage.h"
 #include "tsage/saveload.h"
+#include "tsage/staticres.h"
 
 namespace TsAGE {
 
@@ -505,6 +509,51 @@ void Scene::setZoomPercents(int yStart, int minPercent, int yEnd, int maxPercent
 
 /*--------------------------------------------------------------------------*/
 
+void Game::restartGame() {
+	if (MessageDialog::show(RESTART_MSG, CANCEL_BTN_STRING, RESTART_BTN_STRING) == 1)
+		_globals->_game->restart();
+}
+
+void Game::saveGame() {
+	if (!_vm->canSaveGameStateCurrently())
+		MessageDialog::show(SAVING_NOT_ALLOWED_MSG, OK_BTN_STRING);
+	else {
+		// Show the save dialog
+		handleSaveLoad(true, _globals->_sceneHandler->_saveGameSlot, _globals->_sceneHandler->_saveName);
+	}
+}
+
+void Game::restoreGame() {
+	if (!_vm->canLoadGameStateCurrently())
+		MessageDialog::show(RESTORING_NOT_ALLOWED_MSG, OK_BTN_STRING);
+	else {
+		// Show the load dialog
+		handleSaveLoad(false, _globals->_sceneHandler->_loadGameSlot, _globals->_sceneHandler->_saveName);
+	}
+}
+
+void Game::quitGame() {
+	if (MessageDialog::show(QUIT_CONFIRM_MSG, CANCEL_BTN_STRING, QUIT_BTN_STRING) == 1)
+		_vm->quitGame();
+}
+
+void Game::handleSaveLoad(bool saveFlag, int &saveSlot, Common::String &saveName) {
+	const EnginePlugin *plugin = 0;
+	EngineMan.findGame(_vm->getGameId(), &plugin);
+	GUI::SaveLoadChooser *dialog;
+	if (saveFlag)
+		dialog = new GUI::SaveLoadChooser(_("Save game:"), _("Save"));
+	else
+		dialog = new GUI::SaveLoadChooser(_("Load game:"), _("Load"));
+
+	dialog->setSaveMode(saveFlag);
+
+	saveSlot = dialog->runModalWithPluginAndTarget(plugin, ConfMan.getActiveDomainName());
+	saveName = dialog->getResultString();
+
+	delete dialog;
+}
+
 void Game::execute() {
 	// Main game loop
 	bool activeFlag = false;
diff --git a/engines/tsage/scenes.h b/engines/tsage/scenes.h
index 793013b..b03b8fa 100644
--- a/engines/tsage/scenes.h
+++ b/engines/tsage/scenes.h
@@ -115,7 +115,7 @@ protected:
 	SynchronizedList<GameHandler *> _handlers;
 
 	static bool notLockedFn(GameHandler *g);
-	virtual void handleSaveLoad(bool saveFlag, int &saveSlot, Common::String &saveName) {}
+	virtual void handleSaveLoad(bool saveFlag, int &saveSlot, Common::String &saveName);
 public:
 	virtual ~Game() {}
 
@@ -125,10 +125,10 @@ public:
 	void execute();
 	virtual void start() = 0;
 	virtual void restart() {}
-	virtual void restartGame() {}
-	virtual void saveGame() {}
-	virtual void restoreGame() {}
-	virtual void quitGame() {}
+	virtual void restartGame();
+	virtual void saveGame();
+	virtual void restoreGame();
+	virtual void quitGame();
 	virtual void endGame(int resNum, int lineNum) {}
 	virtual Scene *createScene(int sceneNumber) = 0;
 	virtual void processEvent(Event &event) {}






More information about the Scummvm-git-logs mailing list