diff options
| -rw-r--r-- | engines/scumm/actor.cpp | 13 | ||||
| -rw-r--r-- | engines/scumm/actor.h | 20 | ||||
| -rw-r--r-- | engines/scumm/scumm.cpp | 10 | 
3 files changed, 18 insertions, 25 deletions
| diff --git a/engines/scumm/actor.cpp b/engines/scumm/actor.cpp index df143f6288..8c211ed59d 100644 --- a/engines/scumm/actor.cpp +++ b/engines/scumm/actor.cpp @@ -42,18 +42,10 @@  namespace Scumm {  byte Actor::kInvalidBox = 0; -ScummEngine *Actor::_vm = 0; -void Actor::initActorClass(ScummEngine *scumm) { -	_vm = scumm; -	if (_vm->_game.features & GF_SMALL_HEADER) { -		kInvalidBox = 255; -	} -} - -Actor::Actor(int id) { +Actor::Actor(ScummEngine *scumm, int id) : +	_vm(scumm), _number(id) {  	assert(_vm != 0); -	_number = id;  }  void Actor::initActor(int mode) { @@ -492,7 +484,6 @@ void Actor::walkActor() {  	_moving &= ~MF_NEW_LEG;  	do { -  		if (_walkbox == kInvalidBox) {  			setBox(_walkdata.destbox);  			_walkdata.curbox = _walkdata.destbox; diff --git a/engines/scumm/actor.h b/engines/scumm/actor.h index 61c5216133..2beccf3a72 100644 --- a/engines/scumm/actor.h +++ b/engines/scumm/actor.h @@ -77,14 +77,18 @@ struct AdjustBoxResult {	/* Result type of AdjustBox functions */  	byte box;  }; -class Actor : public Serializable { +enum { +	kOldInvalidBox = 255,	// For small header games +	kNewInavlidBox = 0 +}; +class Actor : public Serializable {  public:  	static byte kInvalidBox; -	static void initActorClass(ScummEngine *scumm); -  protected: +	ScummEngine *_vm; +  	/** The position of the actor inside the virtual screen. */  	Common::Point _pos; @@ -175,11 +179,9 @@ protected:  	ActorWalkData _walkdata;  	int16 _animVariable[27]; -	static ScummEngine *_vm; -  public: -	Actor(int id); +	Actor(ScummEngine *scumm, int id);  	virtual ~Actor() {}  //protected: @@ -334,7 +336,7 @@ protected:  class Actor_v3 : public Actor {  public: -	Actor_v3(int id) : Actor(id) {} +	Actor_v3(ScummEngine *scumm, int id) : Actor(scumm, id) {}  	virtual void walkActor(); @@ -345,7 +347,7 @@ protected:  class Actor_v2 : public Actor_v3 {  public: -	Actor_v2(int id) : Actor_v3(id) {} +	Actor_v2(ScummEngine *scumm, int id) : Actor_v3(scumm, id) {}  	virtual void initActor(int mode);  	virtual void walkActor(); @@ -361,7 +363,7 @@ public:  	byte _miscflags;  public: -	ActorC64(int id) : Actor_v2(id) {} +	ActorC64(ScummEngine *scumm, int id) : Actor_v2(scumm, id) {}  	virtual void initActor(int mode) {  		Actor_v2::initActor(mode);  		if (mode == -1) { diff --git a/engines/scumm/scumm.cpp b/engines/scumm/scumm.cpp index b808ccb061..267b78d1f7 100644 --- a/engines/scumm/scumm.cpp +++ b/engines/scumm/scumm.cpp @@ -1295,18 +1295,18 @@ void ScummEngine::resetScumm() {  	_cursor.animate = 1;  	// Allocate and Initialize actors -	Actor::initActorClass(this); +	Actor::kInvalidBox = ((_game.features & GF_SMALL_HEADER) ? kOldInvalidBox : kNewInavlidBox);  	_actors = new Actor * [_numActors];  	_sortedActors = new Actor * [_numActors];  	for (i = 0; i < _numActors; ++i) {  		if (_game.version == 0) -			_actors[i] = new ActorC64(i); +			_actors[i] = new ActorC64(this, i);  		else if (_game.version <= 2) -			_actors[i] = new Actor_v2(i); +			_actors[i] = new Actor_v2(this, i);  		else if (_game.version == 3) -			_actors[i] = new Actor_v3(i); +			_actors[i] = new Actor_v3(this, i);  		else -			_actors[i] = new Actor(i); +			_actors[i] = new Actor(this, i);  		_actors[i]->initActor(-1);  		// this is from IDB | 
