diff options
| author | Paul Gilbert | 2013-07-04 19:00:18 -0400 | 
|---|---|---|
| committer | Paul Gilbert | 2013-07-04 19:00:18 -0400 | 
| commit | 16748f1341ec6c10582288de8bcce5a4837693c0 (patch) | |
| tree | 947c6c062532155f22305eaafea0ba1b682ae3f5 | |
| parent | fb4c860e68284fa1251c66a7c3f231544173e765 (diff) | |
| download | scummvm-rg350-16748f1341ec6c10582288de8bcce5a4837693c0.tar.gz scummvm-rg350-16748f1341ec6c10582288de8bcce5a4837693c0.tar.bz2 scummvm-rg350-16748f1341ec6c10582288de8bcce5a4837693c0.zip  | |
TSAGE: Bugfixes for laser panel in R2R scene 1200
| -rw-r--r-- | engines/tsage/ringworld2/ringworld2_scenes1.cpp | 56 | ||||
| -rw-r--r-- | engines/tsage/ringworld2/ringworld2_scenes1.h | 14 | 
2 files changed, 39 insertions, 31 deletions
diff --git a/engines/tsage/ringworld2/ringworld2_scenes1.cpp b/engines/tsage/ringworld2/ringworld2_scenes1.cpp index 062badc7f1..7cd1e92b8b 100644 --- a/engines/tsage/ringworld2/ringworld2_scenes1.cpp +++ b/engines/tsage/ringworld2/ringworld2_scenes1.cpp @@ -858,9 +858,10 @@ void Scene1100::saveCharacter(int characterIndex) {  }  /*-------------------------------------------------------------------------- - * Scene 1200 - + * Scene 1200 - Air Ducts Maze   *   *--------------------------------------------------------------------------*/ +  Scene1200::Scene1200() {  	_field412 = 0;  	_field414 = 0; @@ -881,17 +882,17 @@ void Scene1200::synchronize(Serializer &s) {  	s.syncAsSint16LE(_field41C);  } -Scene1200::Area1::Area1() { +Scene1200::LaserPanel::LaserPanel() {  	_field20 = 0;  } -void Scene1200::Area1::synchronize(Serializer &s) { +void Scene1200::LaserPanel::synchronize(Serializer &s) {  	SceneArea::synchronize(s);  	s.syncAsByte(_field20);  } -void Scene1200::Area1::Actor3::init(int state) { +void Scene1200::LaserPanel::Jumper::init(int state) {  	_state = state;  	SceneActor::postInit(); @@ -912,6 +913,7 @@ void Scene1200::Area1::Actor3::init(int state) {  		default:  			break;  		} +		break;  	case 2:  		switch (R2_GLOBALS._v56AA7) {  		case 1: @@ -929,6 +931,7 @@ void Scene1200::Area1::Actor3::init(int state) {  		default:  			break;  		} +		break;  	case 3:  		switch (R2_GLOBALS._v56AA8) {  		case 1: @@ -942,6 +945,7 @@ void Scene1200::Area1::Actor3::init(int state) {  		default:  			break;  		} +		break;  	default:  		break;  	} @@ -949,7 +953,7 @@ void Scene1200::Area1::Actor3::init(int state) {  	setDetails(1200, 12, -1, -1, 2, (SceneItem *) NULL);  } -bool Scene1200::Area1::Actor3::startAction(CursorType action, Event &event) { +bool Scene1200::LaserPanel::Jumper::startAction(CursorType action, Event &event) {  	if (action != CURSOR_USE)  		return SceneActor::startAction(action, event); @@ -1018,7 +1022,7 @@ bool Scene1200::Area1::Actor3::startAction(CursorType action, Event &event) {  	return true;  } -void Scene1200::Area1::postInit(SceneObjectList *OwnerList) { +void Scene1200::LaserPanel::postInit(SceneObjectList *OwnerList) {  	Scene1200 *scene = (Scene1200 *)R2_GLOBALS._sceneManager._scene;  	scene->_field41A = 1; @@ -1026,24 +1030,24 @@ void Scene1200::Area1::postInit(SceneObjectList *OwnerList) {  	proc12(1003, 1, 1, 100, 40);  	proc13(1200, 11, -1, -1);  	R2_GLOBALS._sound2.play(259); -	_actor3.init(1); -	_actor4.init(2); -	_actor5.init(3); +	_jumper1.init(1); +	_jumper2.init(2); +	_jumper3.init(3);  	R2_GLOBALS._player._canWalk = false;  } -void Scene1200::Area1::remove() { +void Scene1200::LaserPanel::remove() {  	Scene1200 *scene = (Scene1200 *)R2_GLOBALS._sceneManager._scene;  	scene->_field41A = 0;  	warning("Unexpected _sceneAreas.remove() call"); -//	scene->_sceneAreas.remove(&_actor3); -//	scene->_sceneAreas.remove(&_actor4); -//	scene->_sceneAreas.remove(&_actor5); -	_actor3.remove(); -	_actor4.remove(); -	_actor5.remove(); +//	scene->_sceneAreas.remove(&_jumper1); +//	scene->_sceneAreas.remove(&_jumper2); +//	scene->_sceneAreas.remove(&_jumper3); +	_jumper1.remove(); +	_jumper2.remove(); +	_jumper3.remove();  	// sub201EA  	R2_GLOBALS._sceneItems.remove((SceneItem *)this); @@ -1055,7 +1059,7 @@ void Scene1200::Area1::remove() {  	R2_GLOBALS._player._canWalk = true;  } -void Scene1200::Area1::process(Event &event) { +void Scene1200::LaserPanel::process(Event &event) {  	if (_field20 != R2_GLOBALS._insetUp)  		return; @@ -1081,7 +1085,7 @@ void Scene1200::Area1::process(Event &event) {  	}  } -void Scene1200::Area1::proc12(int visage, int stripFrameNum, int frameNum, int posX, int posY) { +void Scene1200::LaserPanel::proc12(int visage, int stripFrameNum, int frameNum, int posX, int posY) {  	Scene1200 *scene = (Scene1200 *)R2_GLOBALS._sceneManager._scene;  	_actor2.postInit(); @@ -1094,7 +1098,7 @@ void Scene1200::Area1::proc12(int visage, int stripFrameNum, int frameNum, int p  	_field20 = R2_GLOBALS._insetUp;  } -void Scene1200::Area1::proc13(int resNum, int lookLineNum, int talkLineNum, int useLineNum) { +void Scene1200::LaserPanel::proc13(int resNum, int lookLineNum, int talkLineNum, int useLineNum) {  	_actor2.setDetails(resNum, lookLineNum, talkLineNum, useLineNum, 2, (SceneItem *) NULL);  } @@ -1426,7 +1430,7 @@ void Scene1200::process(Event &event) {  					|| ((cellPos.x == 33) && (cellPos.y == 17))  					|| ((cellPos.x == 35) && (cellPos.y == 17))  					|| ((cellPos.x == 41) && (cellPos.y == 21)) ) { -					_area1.postInit(); +					_laserPanel.postInit();  					event.handled = true;  				}  			} @@ -1461,6 +1465,7 @@ void Scene1200::process(Event &event) {  				event.handled = true;  				switch (cellPos.x) {  				case 3: +					// It was your cell.  					SceneItem::display(1200, 8, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999);  						break;  				case 9: @@ -1470,6 +1475,7 @@ void Scene1200::process(Event &event) {  					if (cellPos.y == 27)  						R2_GLOBALS._sceneManager.changeScene(3210);  					else +						// A vent grill  						SceneItem::display(1200, 10, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999);  					break;  				case 17: @@ -1484,6 +1490,7 @@ void Scene1200::process(Event &event) {  						R2_GLOBALS._sceneManager.changeScene(3200);  						break;  					default: +						// A vent grill  						SceneItem::display(1200, 10, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999);  						break;  					} @@ -1496,6 +1503,7 @@ void Scene1200::process(Event &event) {  				}  			}  			if (cellId > 36) { +				// "An anti-pest laser"  				event.handled = true;  				SceneItem::display(1200, 9, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999);  			} @@ -7108,7 +7116,7 @@ void Scene1550::UnkArea1550::remove() {  }  void Scene1550::UnkArea1550::process(Event &event) { -// This is a copy of Scene1200::Area1::process +// This is a copy of Scene1200::LaserPanel::process  	if (_field20 != R2_GLOBALS._insetUp)  		return; @@ -7172,7 +7180,7 @@ void Scene1550::UnkArea1550::proc12(int visage, int stripFrameNum, int frameNum,  }  void Scene1550::UnkArea1550::proc13(int resNum, int lookLineNum, int talkLineNum, int useLineNum) { -	// Copy of Scene1200::Area1::proc13 +	// Copy of Scene1200::LaserPanel::proc13  	_areaActor.setDetails(resNum, lookLineNum, talkLineNum, useLineNum, 2, (SceneItem *) NULL);  } @@ -13131,7 +13139,7 @@ void Scene1950::Area1::remove() {  }  void Scene1950::Area1::process(Event &event) { -// This is a copy of Scene1200::Area1::process +// This is a copy of Scene1200::LaserPanel::process  	if (_field20 != R2_GLOBALS._insetUp)  		return; @@ -13184,7 +13192,7 @@ void Scene1950::Area1::proc12(int visage, int stripFrameNum, int frameNum, int p  }  void Scene1950::Area1::proc13(int resNum, int lookLineNum, int talkLineNum, int useLineNum) { -	// Copy of Scene1200::Area1::proc13() +	// Copy of Scene1200::LaserPanel::proc13()  	_areaActor.setDetails(resNum, lookLineNum, talkLineNum, useLineNum, 2, (SceneItem *) NULL);  } diff --git a/engines/tsage/ringworld2/ringworld2_scenes1.h b/engines/tsage/ringworld2/ringworld2_scenes1.h index 4ac518c980..626e596f0b 100644 --- a/engines/tsage/ringworld2/ringworld2_scenes1.h +++ b/engines/tsage/ringworld2/ringworld2_scenes1.h @@ -118,22 +118,22 @@ public:  };  class Scene1200 : public SceneExt { -	class Area1: public SceneArea { +	class LaserPanel: public SceneArea {  	public: -		class Actor3 : public SceneActorExt { +		class Jumper : public SceneActorExt {  		public:  			void init(int state);  			virtual bool startAction(CursorType action, Event &event);  		};  		SceneActor _actor2; -		Actor3 _actor3; -		Actor3 _actor4; -		Actor3 _actor5; +		Jumper _jumper1; +		Jumper _jumper2; +		Jumper _jumper3;  		byte _field20; -		Area1(); +		LaserPanel();  		void synchronize(Serializer &s);  		virtual void postInit(SceneObjectList *OwnerList = NULL); @@ -146,7 +146,7 @@ class Scene1200 : public SceneExt {  public:  	NamedHotspot _item1;  	SceneActor _actor1; -	Area1 _area1; +	LaserPanel _laserPanel;  	MazeUI _mazeUI;  	SequenceManager _sequenceManager;  | 
