diff options
| author | Paul Gilbert | 2011-02-24 22:24:19 +1100 | 
|---|---|---|
| committer | Paul Gilbert | 2011-02-24 22:24:19 +1100 | 
| commit | 597984abc32f04ba1209e3b7dcc671ba951110b0 (patch) | |
| tree | 4066f9243d0a65522a2a0a872783da0c4f96ae21 | |
| parent | 87a6398f628f94b095bfd87f320a633e3649bba8 (diff) | |
| download | scummvm-rg350-597984abc32f04ba1209e3b7dcc671ba951110b0.tar.gz scummvm-rg350-597984abc32f04ba1209e3b7dcc671ba951110b0.tar.bz2 scummvm-rg350-597984abc32f04ba1209e3b7dcc671ba951110b0.zip | |
TSAGE: Bugfixes for Scene 60 - Flycycle Controls
| -rw-r--r-- | engines/tsage/core.cpp | 10 | ||||
| -rw-r--r-- | engines/tsage/core.h | 2 | ||||
| -rw-r--r-- | engines/tsage/globals.cpp | 1 | ||||
| -rw-r--r-- | engines/tsage/ringworld_scenes1.cpp | 88 | ||||
| -rw-r--r-- | engines/tsage/ringworld_scenes1.h | 10 | 
5 files changed, 59 insertions, 52 deletions
| diff --git a/engines/tsage/core.cpp b/engines/tsage/core.cpp index 9f31425620..9f20ea398f 100644 --- a/engines/tsage/core.cpp +++ b/engines/tsage/core.cpp @@ -1420,17 +1420,21 @@ void SceneItem::display(int resNum, int lineNum, ...) {  				break;  			case SET_FONT:  				// Set the font number -				_globals->gfxManager()._font.setFontNumber(va_arg(va, int)); +				_globals->_sceneText._fontNumber = va_arg(va, int); +				_globals->gfxManager()._font.setFontNumber(_globals->_sceneText._fontNumber);  				break;  			case SET_BG_COLOUR: {  				// Set the background colour  				int bgColour = va_arg(va, int);  				_globals->gfxManager()._font._colours.background = bgColour; +				if (!bgColour) +					_globals->gfxManager().setFillFlag(false);  				break;  			}  			case SET_FG_COLOUR:  				// Set the foreground colour -				_globals->gfxManager()._font._colours.foreground = va_arg(va, int); +				_globals->_sceneText._colour1 = va_arg(va, int); +				_globals->gfxManager()._font._colours.foreground = _globals->_sceneText._colour1;  				break;  			case SET_KEEP_ONSCREEN:  				// Suppresses immediate display @@ -2054,6 +2058,8 @@ void SceneObject::dispatch() {  				} else {  					animEnded();  				} +			} else { +				setFrame(changeFrame());  			}  			break; diff --git a/engines/tsage/core.h b/engines/tsage/core.h index ad8339cdab..09f648a811 100644 --- a/engines/tsage/core.h +++ b/engines/tsage/core.h @@ -395,7 +395,7 @@ public:  	int _yDiff;  	int _sceneRegionId;  public: -	SceneItem(): EventHandler() { _msg = "Feature"; _action = NULL; } +	SceneItem(): EventHandler() { _msg = "Feature"; _action = NULL; _sceneRegionId = 0; }  	virtual void synchronise(Serialiser &s);  	virtual Common::String getClassName() { return "SceneItem"; } diff --git a/engines/tsage/globals.cpp b/engines/tsage/globals.cpp index 838b363cb2..11e8af1ffc 100644 --- a/engines/tsage/globals.cpp +++ b/engines/tsage/globals.cpp @@ -50,6 +50,7 @@ Globals::Globals():  		_dialogCentre(160, 140),  		_gfxManagerInstance(_screenSurface) {  	reset(); +	_stripNum = 0;  	_gfxFontNumber = 50;  	_gfxColours.background = 53;  	_gfxColours.foreground = 18; diff --git a/engines/tsage/ringworld_scenes1.cpp b/engines/tsage/ringworld_scenes1.cpp index b205ab20e4..9c81c1a1a4 100644 --- a/engines/tsage/ringworld_scenes1.cpp +++ b/engines/tsage/ringworld_scenes1.cpp @@ -1821,7 +1821,7 @@ void Scene50::dispatch() {  }  /*-------------------------------------------------------------------------- - * Scene 60 - + * Scene 60 - Flycycle controls   *   *--------------------------------------------------------------------------*/ @@ -1836,7 +1836,7 @@ void Scene60::Action1::signal() {  		scene->_object9.postInit();  		scene->_object9.setVisage(60);  		scene->_object9.setStrip(7); -		scene->_object1.setPosition(Common::Point(136, 65)); +		scene->_object9.setPosition(Common::Point(136, 65));  		scene->_object9.animate(ANIM_MODE_5, this);  		scene->_soundHandler1.startSound(35); @@ -1845,7 +1845,7 @@ void Scene60::Action1::signal() {  		scene->_object10.postInit();  		scene->_object10.setVisage(60);  		scene->_object10.setPosition(Common::Point(199, 186)); -		scene->_object10.animate(ANIM_MODE_8, NULL); +		scene->_object10.animate(ANIM_MODE_8, 0, NULL);  		scene->_object10._numFrames = 5;  		scene->_object6.animate(ANIM_MODE_2, NULL); @@ -1874,7 +1874,7 @@ void Scene60::Action1::signal() {  			scene->_object10.remove();  		scene->_object6.remove(); -		scene->_object7.remove(); +		scene->_slaveButton.remove();  		scene->_object8.remove();  		scene->_item1.remove();  		scene->_item2.remove(); @@ -2031,10 +2031,10 @@ void Scene60::Object4::doAction(int action) {  		scene->_object6.setPosition(Common::Point(233, 143));  		scene->_object6.animate(ANIM_MODE_2, NULL); -		scene->_object7.postInit(); -		scene->_object7.setVisage(60); -		scene->_object7.setStrip(8); -		scene->_object7.setPosition(Common::Point(143, 125)); +		scene->_slaveButton.postInit(); +		scene->_slaveButton.setVisage(60); +		scene->_slaveButton.setStrip(8); +		scene->_slaveButton.setPosition(Common::Point(143, 125));  		scene->_object8.postInit();  		scene->_object8.setVisage(60); @@ -2042,23 +2042,23 @@ void Scene60::Object4::doAction(int action) {  		scene->_object8.setPosition(Common::Point(143, 105));  		_globals->_sceneItems.push_front(&scene->_object8); -		_globals->_sceneItems.push_front(&scene->_object7); +		_globals->_sceneItems.push_front(&scene->_slaveButton);  		scene->_object10.postInit();  		scene->_object10.setVisage(60);  		scene->_object10.setPosition(Common::Point(199, 186)); -		scene->_object10.animate(ANIM_MODE_8, NULL); +		scene->_object10.animate(ANIM_MODE_8, 0, NULL);  		scene->_object10._numFrames = 5;  		scene->_object10.setAction(&scene->_sequenceManager, scene, 61, NULL); -		if (scene->_object7._state) -			scene->_object7.setFrame(2); +		if (scene->_slaveButton._state) +			scene->_slaveButton.setFrame(2);  		if (scene->_object8._state)  			scene->_object8.setFrame(2);  		_globals->_sceneItems.push_front(&scene->_item1);  		_globals->_sceneItems.push_front(&scene->_object6); -		_globals->_sceneItems.push_front(&scene->_object7); +		_globals->_sceneItems.push_front(&scene->_slaveButton);  		_globals->_sceneItems.push_front(&scene->_object8);  		_globals->_sceneItems.push_back(&scene->_item2); @@ -2094,8 +2094,8 @@ void Scene60::Object6::doAction(int action) {  		SceneItem::display2(60, 11);  	} else if (action == CURSOR_USE) {  		if (_animateMode == ANIM_MODE_NONE) -			SceneItem::display2(50, 14); -		else if (!scene->_object7._state) { +			SceneItem::display2(60, 14); +		else if (!scene->_slaveButton._state) {  			_globals->_soundHandler.startSound(40);  			_globals->_soundHandler.proc5(1);  			_globals->_sceneManager.changeScene(20); @@ -2113,13 +2113,13 @@ void Scene60::SceneObject2::synchronise(Serialiser &s) {  } -void Scene60::Object7::doAction(int action) { +void Scene60::SlaveObject::doAction(int action) {  	Scene60 *scene = (Scene60 *)_globals->_sceneManager._scene;  	if (action == CURSOR_LOOK) {  		SceneItem::display2(60, 8);  	} else if (action == CURSOR_USE) { -		if (!scene->_object8._state)  +		if (scene->_object8._state)   			scene->_sceneMode = 19;  		else if (_state) {  			scene->_soundHandler3.proc3(); @@ -2222,7 +2222,7 @@ void Scene60::Item1::doAction(int action) {  			scene->setAction(&scene->_action2);  		}  	default: -		SceneItem::doAction(action); +		SceneHotspot::doAction(action);  		break;  	}  } @@ -2232,10 +2232,10 @@ void Scene60::Item::doAction(int action) {  	switch (action) {  	case CURSOR_LOOK: -		SceneItem::display2(60, 12); +		SceneItem::display2(60, _messageNum);  		break;  	case CURSOR_USE: -		scene->_sceneMode = 12; +		scene->_sceneMode = _sceneMode;  		setAction(&scene->_sequenceManager, this, 62, NULL);  		break;  	default: @@ -2263,11 +2263,11 @@ void Scene60::postInit(SceneObjectList *OwnerList) {  	_globals->_player._uiEnabled = true;  	_globals->_events.setCursor(CURSOR_USE); -	_object7.postInit(); -	_object7.setVisage(60); -	_object7.setStrip(8); -	_object7.setPosition(Common::Point(143, 125)); -	_object7._state = 0; +	_slaveButton.postInit(); +	_slaveButton.setVisage(60); +	_slaveButton.setStrip(8); +	_slaveButton.setPosition(Common::Point(143, 125)); +	_slaveButton._state = 0;  	_object8.postInit();  	_object8.setVisage(60); @@ -2276,7 +2276,7 @@ void Scene60::postInit(SceneObjectList *OwnerList) {  	_object8._state = 0;  	_globals->_sceneItems.push_back(&_object8); -	_globals->_sceneItems.push_back(&_object7); +	_globals->_sceneItems.push_back(&_slaveButton);  	_object6.postInit();  	_object6.setVisage(60); @@ -2297,8 +2297,8 @@ void Scene60::postInit(SceneObjectList *OwnerList) {  	if (_globals->_stripNum == 0) {  		if (_globals->getFlag(117)) { -			_object7._state = 1; -			_object7.setFrame(2); +			_slaveButton._state = 1; +			_slaveButton.setFrame(2);  		}  		if (_globals->getFlag(116)) { @@ -2312,7 +2312,7 @@ void Scene60::postInit(SceneObjectList *OwnerList) {  			_object10.postInit();  			_object10.setVisage(60);  			_object10.setPosition(Common::Point(199, 186)); -			_object10.animate(ANIM_MODE_8, NULL); +			_object10.animate(ANIM_MODE_8, 0, NULL);  			_soundHandler1.startSound(35); @@ -2331,8 +2331,8 @@ void Scene60::postInit(SceneObjectList *OwnerList) {  		}  	} else {  		if (_globals->getFlag(120)) { -			_object7._state = 1; -			_object7.setFrame(2); +			_slaveButton._state = 1; +			_slaveButton.setFrame(2);  		}  		if (_globals->getFlag(119)) { @@ -2346,23 +2346,23 @@ void Scene60::postInit(SceneObjectList *OwnerList) {  			_object10.postInit();  			_object10.setVisage(60);  			_object10.setPosition(Common::Point(199, 186)); -			_object10.animate(ANIM_MODE_8, NULL); +			_object10.animate(ANIM_MODE_8, 0, NULL);  			_object10._numFrames = 5;  			_soundHandler1.startSound(35); -		} -		if (!_globals->getFlag(83)) { -			_object5.postInit(); -			_object5.setVisage(60); -			_object5.setStrip2(3); -			_object5.setFrame(2); -			_object5.setPosition(Common::Point(148, 85)); -			_object5.animate(ANIM_MODE_2, NULL); -			_object5._numFrames = 5; -			_globals->_sceneItems.push_front(&_object5); - -			_soundHandler2.startSound(38); +			if (!_globals->getFlag(83)) { +				_object5.postInit(); +				_object5.setVisage(60); +				_object5.setStrip2(3); +				_object5.setFrame(2); +				_object5.setPosition(Common::Point(148, 85)); +				_object5.animate(ANIM_MODE_2, NULL); +				_object5._numFrames = 5; +				_globals->_sceneItems.push_front(&_object5); + +				_soundHandler2.startSound(38); +			}  		}  	} diff --git a/engines/tsage/ringworld_scenes1.h b/engines/tsage/ringworld_scenes1.h index 973cf272b6..46694efd97 100644 --- a/engines/tsage/ringworld_scenes1.h +++ b/engines/tsage/ringworld_scenes1.h @@ -363,7 +363,7 @@ class Scene60: public Scene {  	public:  		virtual void doAction(int action);  	}; -	class Object7: public SceneObject2 { +	class SlaveObject: public SceneObject2 {  	public:  		virtual void doAction(int action);  	}; @@ -380,11 +380,11 @@ class Scene60: public Scene {  	public:  		virtual void doAction(int action);  	}; -	class Item1: public SceneItem { +	class Item1: public SceneHotspot {  	public:  		virtual void doAction(int action);  	}; -	class Item: public SceneItem { +	class Item: public SceneHotspot {  	public:  		int _messageNum, _sceneMode; @@ -409,11 +409,11 @@ public:  	Object4 _object4;  	Object5 _object5;  	Object6 _object6; -	Object7 _object7; +	SlaveObject _slaveButton;  	Object8 _object8;  	Object9 _object9;  	SceneObject _object10; -	SceneItem _item1; +	Item1 _item1;  	Item _item2, _item3, _item4, _item5, _item6;  	SoundHandler _soundHandler1;  	SoundHandler _soundHandler2; | 
