diff options
| -rw-r--r-- | engines/tsage/core.cpp | 15 | ||||
| -rw-r--r-- | engines/tsage/core.h | 6 | ||||
| -rw-r--r-- | engines/tsage/ringworld2/ringworld2_logic.cpp | 3 | ||||
| -rw-r--r-- | engines/tsage/ringworld2/ringworld2_logic.h | 1 | ||||
| -rw-r--r-- | engines/tsage/ringworld2/ringworld2_scenes0.cpp | 5 | 
5 files changed, 23 insertions, 7 deletions
| diff --git a/engines/tsage/core.cpp b/engines/tsage/core.cpp index 9cfa817946..ea6cc9f795 100644 --- a/engines/tsage/core.cpp +++ b/engines/tsage/core.cpp @@ -1835,6 +1835,8 @@ SceneObject::SceneObject() : SceneHotspot() {  	_visage = 0;  	_strip = 0;  	_frame = 0; +	_effect = 0; +	_shade = 0;  }  SceneObject::SceneObject(const SceneObject &so) : SceneHotspot() { @@ -2137,6 +2139,14 @@ SceneObject *SceneObject::clone() const {  	return obj;  } +void SceneObject::copy(SceneObject *src) { +	*this = *src; + +	_objectWrapper = NULL; +	_mover = NULL; +	_endAction = NULL; +} +  void SceneObject::checkAngle(const SceneObject *obj) {  	checkAngle(obj->_position);  } @@ -2203,6 +2213,11 @@ void SceneObject::synchronize(Serializer &s) {  	s.syncAsSint32LE(_moveRate);  	SYNC_POINTER(_endAction);  	s.syncAsUint32LE(_regionBitList); + +	if (g_vm->getGameID() == GType_Ringworld2) { +		s.syncAsSint16LE(_effect); +		s.syncAsSint16LE(_shade); +	}  }  void SceneObject::postInit(SceneObjectList *OwnerList) { diff --git a/engines/tsage/core.h b/engines/tsage/core.h index 0137134583..40a33b49b3 100644 --- a/engines/tsage/core.h +++ b/engines/tsage/core.h @@ -530,6 +530,10 @@ public:  	int _moveRate;  	Action *_endAction;  	uint32 _regionBitList; + +	// Ringworld 2 specific fields +	int _shade; +	int _effect;  public:  	SceneObject();  	SceneObject(const SceneObject &so); @@ -577,6 +581,8 @@ public:  	// New methods introduced by Blue Force  	virtual void updateAngle(const Common::Point &pt);  	virtual void changeAngle(int angle); +	// New methods introduced by Ringworld 2 +	virtual void copy(SceneObject *src);  	void setup(int visage, int stripFrameNum, int frameNum, int posX, int posY, int priority);  	void setup(int visage, int stripFrameNum, int frameNum); diff --git a/engines/tsage/ringworld2/ringworld2_logic.cpp b/engines/tsage/ringworld2/ringworld2_logic.cpp index ce29ae7235..d033627ae9 100644 --- a/engines/tsage/ringworld2/ringworld2_logic.cpp +++ b/engines/tsage/ringworld2/ringworld2_logic.cpp @@ -690,9 +690,6 @@ void SceneActor::synchronize(Serializer &s) {  	s.syncAsSint16LE(_lookLineNum);  	s.syncAsSint16LE(_talkLineNum);  	s.syncAsSint16LE(_useLineNum); - -	s.syncAsSint16LE(_effect); -	s.syncAsSint16LE(_shade);  }  bool SceneActor::startAction(CursorType action, Event &event) { diff --git a/engines/tsage/ringworld2/ringworld2_logic.h b/engines/tsage/ringworld2/ringworld2_logic.h index 13f230c78f..b12978344c 100644 --- a/engines/tsage/ringworld2/ringworld2_logic.h +++ b/engines/tsage/ringworld2/ringworld2_logic.h @@ -219,7 +219,6 @@ class SceneActor: public SceneObject {  public:  	int _resNum;  	int _lookLineNum, _talkLineNum, _useLineNum; -	int _effect, _shade;  	virtual Common::String getClassName() { return "SceneActor"; }  	virtual void synchronize(Serializer &s); diff --git a/engines/tsage/ringworld2/ringworld2_scenes0.cpp b/engines/tsage/ringworld2/ringworld2_scenes0.cpp index 004c6c2b2b..edc3f06aa2 100644 --- a/engines/tsage/ringworld2/ringworld2_scenes0.cpp +++ b/engines/tsage/ringworld2/ringworld2_scenes0.cpp @@ -316,14 +316,13 @@ void Scene100::signal() {  }  void Scene100::dispatch() { -/*  	int regionIndex = R2_GLOBALS._player.getRegionIndex();  	if (regionIndex == 13)  		R2_GLOBALS._player._shade = 4;  	if ((R2_GLOBALS._player._visage == 13) || (R2_GLOBALS._player._visage == 101)) -	(R2_GLOBALS._player._shade = 0; -*/ +	R2_GLOBALS._player._shade = 0; +  	SceneExt::dispatch();  	if ((_sceneMode == 101) && (_object7._frame == 2) && (_table._strip == 5)) { | 
