diff options
| -rw-r--r-- | engines/tsage/ringworld2/ringworld2_scenes3.cpp | 81 | ||||
| -rw-r--r-- | engines/tsage/ringworld2/ringworld2_scenes3.h | 2 | 
2 files changed, 81 insertions, 2 deletions
| diff --git a/engines/tsage/ringworld2/ringworld2_scenes3.cpp b/engines/tsage/ringworld2/ringworld2_scenes3.cpp index 7261d6438f..7aa27e9330 100644 --- a/engines/tsage/ringworld2/ringworld2_scenes3.cpp +++ b/engines/tsage/ringworld2/ringworld2_scenes3.cpp @@ -1717,6 +1717,83 @@ void Scene3375::synchronize(Serializer &s) {  		s.syncAsSint16LE(_field148A[i]);  } +void Scene3375::subFC696(int sceneMode) { +	switch (sceneMode) { +	case 3379: +		R2_GLOBALS._player.setPosition(Common::Point(0, 155)); +		_actor1.setPosition(Common::Point(-20, 163)); +		_actor2.setPosition(Common::Point(-5, 150)); +		_actor3.setPosition(Common::Point(-20, 152)); +		break; +	case 3380: +		++R2_GLOBALS._v56A9E; +		if (R2_GLOBALS._v56A9E >= 4) +			R2_GLOBALS._v56A9E = 0; + +		loadScene(_field148A[R2_GLOBALS._v56A9E]); + +		R2_GLOBALS._uiElements.show(); +		R2_GLOBALS._player.setStrip(4); +		R2_GLOBALS._player.setPosition(Common::Point(148, 230)); + +		_actor1.setPosition(Common::Point(191, 274)); +		_actor1._effect = 1; +		_actor2.setPosition(Common::Point(124, 255)); +		_actor2._effect = 1; +		_actor3.setPosition(Common::Point(155, 245)); +		_actor3._effect = 1; +		break; +	case 3381: +		--R2_GLOBALS._v56A9E; +		if (R2_GLOBALS._v56A9E < 0) +			R2_GLOBALS._v56A9E = 3; + +		loadScene(_field148A[R2_GLOBALS._v56A9E]); + +		R2_GLOBALS._uiElements.show(); +		R2_GLOBALS._player.setStrip(6); +		R2_GLOBALS._player.setPosition(Common::Point(201, 131)); + +		_actor1.setPosition(Common::Point(231, 127)); +		_actor1._effect = 1; +		_actor2.setPosition(Common::Point(231, 127)); +		_actor2._effect = 1; +		_actor3.setPosition(Common::Point(231, 127)); +		_actor3._effect = 1; +		break; +	default: +		R2_GLOBALS._player.setPosition(Common::Point(192, 155)); + +		_actor1.setPosition(Common::Point(138, 134)); +		_actor2.setPosition(Common::Point(110, 139)); +		_actor3.setPosition(Common::Point(125, 142)); +		break; +	} + +	if (R2_GLOBALS._v56A9E == 2) { +		R2_GLOBALS._sceneItems.remove(&_actor4); +		for (int i = 0; i <= 12; i++) +			R2_GLOBALS._sceneItems.remove(&_itemArray[i]); +		R2_GLOBALS._sceneItems.remove(&_item1); + +		_actor4.show(); +		_actor4.setDetails(3375, 9, 10, -1, 1, NULL); + +		for (int i = 0; i <= 12; i++) +			_itemArray[i].setDetails(3375, 3, -1, -1); + +		_item1.setDetails(Rect(0, 0, 320, 200), 3375, 0, -1, -1, 1, NULL); +	} else { +		_actor4.hide(); +		R2_GLOBALS._sceneItems.remove(&_actor4); +	} + +	if (_sceneMode == 0) +		signal(); +	else +		setAction(&_sequenceManager, this, _sceneMode, &R2_GLOBALS._player, &_actor1, &_actor2, &_actor3, NULL); +} +  bool Scene3375::Actor1::startAction(CursorType action, Event &event) {  	Scene3375 *scene = (Scene3375 *)R2_GLOBALS._sceneManager._scene; @@ -2000,7 +2077,7 @@ void Scene3375::postInit(SceneObjectList *OwnerList) {  	else  		_sceneMode = 0; -	warning("sub_FC696(_sceneMode)"); +	subFC696(_sceneMode);  }  void Scene3375::remove() { @@ -2064,7 +2141,7 @@ void Scene3375::signal() {  		_actor2._shade = 4;  		_actor3._effect = 6;  		_actor3._shade = 4; -		warning("sub_FC696(_sceneMode)"); +		subFC696(_sceneMode);  		break;  	case 3379:  		signalCase3379(); diff --git a/engines/tsage/ringworld2/ringworld2_scenes3.h b/engines/tsage/ringworld2/ringworld2_scenes3.h index 36e4ae83fc..d5e2e451f4 100644 --- a/engines/tsage/ringworld2/ringworld2_scenes3.h +++ b/engines/tsage/ringworld2/ringworld2_scenes3.h @@ -428,6 +428,8 @@ class Scene3375 : public SceneExt {  	};  	void signalCase3379(); +	void subFC696(int sceneMode); +  public:  	SpeakerQuinn3375 _quinnSpeaker;  	SpeakerSeeker3375 _seekerSpeaker; | 
