diff options
| author | Travis Howell | 2005-04-01 09:55:17 +0000 | 
|---|---|---|
| committer | Travis Howell | 2005-04-01 09:55:17 +0000 | 
| commit | 879de392d1d1932d9e341ba2fb376444f759755d (patch) | |
| tree | c7bf2b8372346ea68d1d58e86adf7cfaca26aad7 | |
| parent | b4ecd9f56ec9c3488f95f1b8ec5955748e51093b (diff) | |
| download | scummvm-rg350-879de392d1d1932d9e341ba2fb376444f759755d.tar.gz scummvm-rg350-879de392d1d1932d9e341ba2fb376444f759755d.tar.bz2 scummvm-rg350-879de392d1d1932d9e341ba2fb376444f759755d.zip  | |
A random object state is possible in scumm7 too.
svn-id: r17324
| -rw-r--r-- | scumm/object.cpp | 24 | ||||
| -rw-r--r-- | scumm/script_v8.cpp | 30 | 
2 files changed, 22 insertions, 32 deletions
diff --git a/scumm/object.cpp b/scumm/object.cpp index 28a4f86955..a1e3555702 100644 --- a/scumm/object.cpp +++ b/scumm/object.cpp @@ -183,10 +183,13 @@ int ScummEngine::getObjectImageCount(int object) {  	if (!imhd)  		return 0; -	if (_version == 8) +	if (_version == 8) {  		return (READ_LE_UINT32(&imhd->v8.image_count)); -	else +	} else if (_version == 7) { +		return(READ_LE_UINT16(&imhd->v7.image_count)); +	} else {  		return (READ_LE_UINT16(&imhd->old.image_count)); +	}  }  int ScummEngine::whereIsObject(int object) const { @@ -1373,12 +1376,27 @@ void ScummEngine::setObjectState(int obj, int state, int x, int y) {  		return;  	} -	if (x != -1) { +	if (x != -1 && x != 0x7FFFFFFF) {  		_objs[i].x_pos = x * 8;  		_objs[i].y_pos = y * 8;  	}  	addObjectToDrawQue(i); +	if (_version >= 7) { +		int imagecount; +		if (state == 0xFF) { +			state = getState(obj); +			imagecount = getObjectImageCount(obj); + +			if (state < imagecount) +				state++; +			else +				state = 1; +		} + +		if (state == 0xFE) +			state = _rnd.getRandomNumber(getObjectImageCount(obj)); +	}  	putState(obj, state);  } diff --git a/scumm/script_v8.cpp b/scumm/script_v8.cpp index 9c14ac2537..cd3e6d7f7e 100644 --- a/scumm/script_v8.cpp +++ b/scumm/script_v8.cpp @@ -1501,35 +1501,7 @@ void ScummEngine_v8::o8_drawObject() {  	int y = pop();  	int x = pop();  	int obj = pop(); -	int objnum = getObjectIndex(obj); -	int imagecount; -	ObjectData *od; - -	if (objnum == -1) -		return; - -	od = &_objs[objnum]; -	if (x != 0x7FFFFFFF) { -		od->x_pos = x; -		od->y_pos = y; -	} - -	addObjectToDrawQue(objnum); - -	if (state == 0xFF) { -		state = getState(obj); -		imagecount = getObjectImageCount(obj); - -		if (state < imagecount) -			state++; -		else -			state = 1; -	} - -	if (state == 0xFE) -		state = _rnd.getRandomNumber(getObjectImageCount(obj)); - -	putState(obj, state); +	setObjectState(obj, state, x, y);  }  } // End of namespace Scumm  | 
