diff options
| author | Paul Gilbert | 2011-03-08 21:24:30 +1100 | 
|---|---|---|
| committer | Paul Gilbert | 2011-03-08 21:24:30 +1100 | 
| commit | 0c5fdebbd23c98e859e2c9fae1d1c1bae52bc899 (patch) | |
| tree | c56e2ebdf1a9c736a598463f9d638527ad57b0e4 | |
| parent | ba94342f6f7a1728d8794faa1b429491ba2e0ec2 (diff) | |
| download | scummvm-rg350-0c5fdebbd23c98e859e2c9fae1d1c1bae52bc899.tar.gz scummvm-rg350-0c5fdebbd23c98e859e2c9fae1d1c1bae52bc899.tar.bz2 scummvm-rg350-0c5fdebbd23c98e859e2c9fae1d1c1bae52bc899.zip | |
TSAGE: Completed Implementation of Scene 2200 - Spaceship - AutoDoc
| -rw-r--r-- | engines/tsage/ringworld_logic.cpp | 2 | ||||
| -rw-r--r-- | engines/tsage/ringworld_scenes3.cpp | 72 | ||||
| -rw-r--r-- | engines/tsage/ringworld_scenes3.h | 22 | 
3 files changed, 90 insertions, 6 deletions
| diff --git a/engines/tsage/ringworld_logic.cpp b/engines/tsage/ringworld_logic.cpp index eff1ddac3c..d73e583407 100644 --- a/engines/tsage/ringworld_logic.cpp +++ b/engines/tsage/ringworld_logic.cpp @@ -78,7 +78,7 @@ Scene *SceneFactory::createScene(int sceneNumber) {  	case 2120: return new Scene2120();  	// Spaceship - Level 2  	case 2150: return new Scene2150(); -	// Spaceship - Cyro-tube cutscene +	// Spaceship - AutoDoc  	case 2200: return new Scene2200();  	/* Scene group 4 */ diff --git a/engines/tsage/ringworld_scenes3.cpp b/engines/tsage/ringworld_scenes3.cpp index 48283d856d..90dfd3fc30 100644 --- a/engines/tsage/ringworld_scenes3.cpp +++ b/engines/tsage/ringworld_scenes3.cpp @@ -2629,7 +2629,7 @@ void Scene2150::dispatch() {  }  /*-------------------------------------------------------------------------- - * Scene 2200 - Spaceship - Cyro-tube cutscene + * Scene 2200 - Spaceship - AutoDoc   *   *--------------------------------------------------------------------------*/ @@ -2806,9 +2806,76 @@ void Scene2200::Action4::signal() {  /*--------------------------------------------------------------------------*/ +void Scene2200::Hotspot3::doAction(int action) { +	Scene2200 *scene = (Scene2200 *)_globals->_sceneManager._scene; + +	switch (action) { +	case CURSOR_LOOK: +		SceneItem::display2(2200, 10); +		break; +	case CURSOR_USE: +		SceneItem::display2(2200, 11); +		break; +	case CURSOR_TALK: +		_globals->_player._uiEnabled = false; +		scene->setAction(&scene->_action4); +		break; +	default: +		SceneHotspot::doAction(action); +		break; +	} +} + +void Scene2200::Hotspot5::doAction(int action) { +	Scene2200 *scene = (Scene2200 *)_globals->_sceneManager._scene; + +	switch (action) { +	case CURSOR_LOOK: +		SceneItem::display2(2200, 8); +		break; +	case CURSOR_USE: +		SceneItem::display2(2200, 9); +		break; +	case CURSOR_TALK: +		scene->_sceneMode = 2201; +		_globals->_player._uiEnabled = false; +		scene->setAction(&scene->_sequenceManager, scene, 2201, NULL); +		break; +	default: +		SceneHotspot::doAction(action); +		break; +	} +} + +void Scene2200::Hotspot9::doAction(int action) { +	Scene2200 *scene = (Scene2200 *)_globals->_sceneManager._scene; + +	switch (action) { +	case CURSOR_LOOK: +		SceneItem::display2(2200, _globals->getFlag(8) ? 1 : 0); +		break; +	case CURSOR_USE: +		SceneItem::display2(2200, 3); +		break; +	case OBJECT_INFODISK: +		if (_globals->_sceneManager._previousScene == 2310) { +			scene->_soundHandler2.startSound(35); +			_globals->_player.disableControl(); +			scene->setAction(&scene->_action3); +		} +		break; +	default: +		SceneHotspot::doAction(action); +		break; +	} +} + +/*--------------------------------------------------------------------------*/ -Scene2200::Scene2200() { +Scene2200::Scene2200(): +		_hotspot1(0, CURSOR_LOOK, 2200, 5, CURSOR_USE, 2200, 6, LIST_END), +		_hotspot10(0, CURSOR_LOOK, 2200, 4, LIST_END) {  }  void Scene2200::postInit(SceneObjectList *OwnerList) { @@ -2898,6 +2965,7 @@ void Scene2200::postInit(SceneObjectList *OwnerList) {  		_soundHandler2.startSound(100);  		_globals->_soundHandler.proc5(true); +		_globals->_sceneItems.push_back(&_hotspot5);  		setAction(&_action2);  		break;  	} diff --git a/engines/tsage/ringworld_scenes3.h b/engines/tsage/ringworld_scenes3.h index 49f9e3f5dc..9c758035a0 100644 --- a/engines/tsage/ringworld_scenes3.h +++ b/engines/tsage/ringworld_scenes3.h @@ -407,7 +407,18 @@ class Scene2200: public Scene {  	};  	/* Hotspots */ - +	class Hotspot3: public SceneObject { +	public: +		virtual void doAction(int action); +	}; +	class Hotspot5: public SceneObject { +	public: +		virtual void doAction(int action); +	}; +	class Hotspot9: public SceneObject { +	public: +		virtual void doAction(int action); +	};  public:  	SequenceManager _sequenceManager;  	SpeakerMText _speakerMText; @@ -423,8 +434,13 @@ public:  	Action2 _action2;  	Action3 _action3;  	Action4 _action4; -	SceneObject _hotspot1, _hotspot2, _hotspot3, _hotspot4, _hotspot5; -	SceneObject _hotspot6, _hotspot7, _hotspot8, _hotspot9, _hotspot10; +	DisplayHotspot _hotspot1; +	Hotspot3 _hotspot3; +	Hotspot5 _hotspot5; +	Hotspot9 _hotspot9; +	DisplayHotspot _hotspot10; +	SceneObject _hotspot2, _hotspot4; +	SceneObject _hotspot6, _hotspot7, _hotspot8;  	SoundHandler _soundHandler1, _soundHandler2;  	Scene2200(); | 
