diff options
| author | lukaslw | 2014-06-01 04:26:41 +0200 | 
|---|---|---|
| committer | lukaslw | 2014-06-22 20:08:33 +0200 | 
| commit | 3864655978c9fd6af94122a8305a0cc69395e683 (patch) | |
| tree | fa914d66ec91d3f2dd4c9523b4c07839e0d320ac | |
| parent | b9e63a41a46e4366ccd97e9eb5ca6b2a2c782dc0 (diff) | |
| download | scummvm-rg350-3864655978c9fd6af94122a8305a0cc69395e683.tar.gz scummvm-rg350-3864655978c9fd6af94122a8305a0cc69395e683.tar.bz2 scummvm-rg350-3864655978c9fd6af94122a8305a0cc69395e683.zip | |
PRINCE: checkNak for showBackAnims, beginning of Z axis for it
| -rw-r--r-- | engines/prince/prince.cpp | 19 | ||||
| -rw-r--r-- | engines/prince/prince.h | 2 | 
2 files changed, 21 insertions, 0 deletions
| diff --git a/engines/prince/prince.cpp b/engines/prince/prince.cpp index a82fe9569d..77e21fbf8d 100644 --- a/engines/prince/prince.cpp +++ b/engines/prince/prince.cpp @@ -942,8 +942,27 @@ void PrinceEngine::showBackAnims() {  			int phaseFrameIndex = _backAnimList[i].backAnims[activeSubAnim]._animData->getPhaseFrameIndex(phase);  			int x = _backAnimList[i].backAnims[activeSubAnim]._x + _backAnimList[i].backAnims[activeSubAnim]._animData->getPhaseOffsetX(phase);  			int y = _backAnimList[i].backAnims[activeSubAnim]._y + _backAnimList[i].backAnims[activeSubAnim]._animData->getPhaseOffsetY(phase); +			int animFlag = _backAnimList[i].backAnims[activeSubAnim]._flags; +			int checkMaskFlag = (animFlag & 1); +			int maxFrontFlag = (animFlag & 2); +			int specialZFlag = _backAnimList[i].backAnims[activeSubAnim]._nextAnim; +			int z = _backAnimList[i].backAnims[activeSubAnim]._nextAnim; +			int frameWidth = _backAnimList[i].backAnims[activeSubAnim]._animData->getFrameWidth(phaseFrameIndex); +			int frameHeight = _backAnimList[i].backAnims[activeSubAnim]._animData->getFrameHeight(phaseFrameIndex);  			if (x != 0 || y != 0 || phaseCount != 1 || frameCount != 1) { // fix for room no. 5 - animation 8 (propably unnecessary anim) +				if (checkMaskFlag != 0) { +					if (_backAnimList[i].backAnims[activeSubAnim]._nextAnim == 0) { +						z = y + frameHeight - 1; +					} +					checkMasks(x, y, frameWidth, frameHeight, z); +				} +				if (maxFrontFlag != 0) { +					z = kMaxPicHeight + 1; +				} +				if (specialZFlag != 0) { +					z = specialZFlag; +				}  				Graphics::Surface *backAnimSurface = _backAnimList[i].backAnims[activeSubAnim]._animData->getFrame(phaseFrameIndex); //still with memory leak  				showSprite(backAnimSurface, x, y);  				backAnimSurface->free(); diff --git a/engines/prince/prince.h b/engines/prince/prince.h index 15dfdb4b7b..b9e61f67d3 100644 --- a/engines/prince/prince.h +++ b/engines/prince/prince.h @@ -244,6 +244,8 @@ public:  	static const int16 kNormalWidth = 640;  	static const int16 kNormalHeight = 480; +	static const int16 kMaxPicWidth = 1280; +	static const int16 kMaxPicHeight = 480;  	void checkMasks(int x1, int y1, int sprWidth, int sprHeight, int z);  	void insertMasks(const Graphics::Surface *originalRoomSurface); | 
