diff options
| -rw-r--r-- | engines/prince/animation.cpp | 3 | ||||
| -rw-r--r-- | engines/prince/animation.h | 2 | ||||
| -rw-r--r-- | engines/prince/hero.cpp | 2 | ||||
| -rw-r--r-- | engines/prince/prince.cpp | 155 | 
4 files changed, 13 insertions, 149 deletions
| diff --git a/engines/prince/animation.cpp b/engines/prince/animation.cpp index e2197c22f2..0aa5d464d1 100644 --- a/engines/prince/animation.cpp +++ b/engines/prince/animation.cpp @@ -113,7 +113,7 @@ int16 Animation::getFrameHeight(uint frameIndex) const {  	return READ_LE_UINT16(frameData + 2);  } -Graphics::Surface *Animation::getFrame(uint frameIndex, int i, int phase) { +Graphics::Surface *Animation::getFrame(uint frameIndex) {  	byte *frameData = _data + READ_LE_UINT32(_data + 16 + frameIndex * 4);  	int16 width = READ_LE_UINT16(frameData + 0);  	int16 height = READ_LE_UINT16(frameData + 2); @@ -132,7 +132,6 @@ Graphics::Surface *Animation::getFrame(uint frameIndex, int i, int phase) {  		}  		free(ddata);  	} else { -		debug("nr: %d, phase: %d", i, phase);  		// Uncompressed          for (uint16 i = 0; i < height; i++) {              memcpy(surf->getBasePtr(0, i), frameData + 4 + width * i, width); diff --git a/engines/prince/animation.h b/engines/prince/animation.h index 03ea220c91..941f1ba6dd 100644 --- a/engines/prince/animation.h +++ b/engines/prince/animation.h @@ -45,7 +45,7 @@ public:  	int16 getPhaseOffsetX(uint phaseIndex) const;  	int16 getPhaseOffsetY(uint phaseIndex) const;  	int16 getPhaseFrameIndex(uint phaseIndex) const; -	Graphics::Surface *getFrame(uint frameIndex, int i, int phase); +	Graphics::Surface *getFrame(uint frameIndex);  	int16 getFrameWidth(uint frameIndex) const;  	int16 getFrameHeight(uint frameIndex) const;  	int16 getZoom(uint16 offset) const; diff --git a/engines/prince/hero.cpp b/engines/prince/hero.cpp index 37b9679dbc..58f729a73e 100644 --- a/engines/prince/hero.cpp +++ b/engines/prince/hero.cpp @@ -80,7 +80,7 @@ bool Hero::loadAnimSet(uint32 animSetNr) {  Graphics::Surface *Hero::getSurface() {  	if (_moveSet[_moveSetType]) {  		int16 phaseFrameIndex = _moveSet[_moveSetType]->getPhaseFrameIndex(_phase); -		Graphics::Surface *heroFrame = _moveSet[_moveSetType]->getFrame(phaseFrameIndex, 0, 0); +		Graphics::Surface *heroFrame = _moveSet[_moveSetType]->getFrame(phaseFrameIndex);  		return heroFrame;  	}  	return NULL; diff --git a/engines/prince/prince.cpp b/engines/prince/prince.cpp index 9d5d789d60..1a6cd70f07 100644 --- a/engines/prince/prince.cpp +++ b/engines/prince/prince.cpp @@ -748,31 +748,19 @@ void PrinceEngine::showSprite(Graphics::Surface *backAnimSurface, int destX, int  }  void PrinceEngine::showBackAnims() { -  	for (uint i = 0; i < _backAnimList.size(); i++) {  		int activeSubAnim = _backAnimList[i]._seq._currRelative; -		if (_backAnimList[i].backAnims[activeSubAnim]._state == 0 && _backAnimList[i]._seq._type != 0 && _backAnimList[i]._seq._type != 1 && _backAnimList[i]._seq._type != 2) { //TEMP -			_backAnimList[i]._seq._counter++; -			/* -			if (_backAnimList[i]._seq._type == 2) { -				if (_backAnimList[i]._seq._currRelative == 0) { -					if (_backAnimList[i]._seq._counter >= _backAnimList[i]._seq._data) { -						//change_back_anim -					} -				} -			} -			*/ +		if (_backAnimList[i].backAnims[activeSubAnim]._state == 0) { +			_backAnimList[i]._seq._counter++;  			if (_backAnimList[i]._seq._type == 2) {  				//not_type_1  				if (_backAnimList[i]._seq._currRelative == 0) {  					//zero -					debug("counter: %d, data: %d", _backAnimList[i]._seq._counter, _backAnimList[i]._seq._data);  					if (_backAnimList[i]._seq._counter >= _backAnimList[i]._seq._data) {  						if (_backAnimList[i]._seq._anims > 2) { -							int rnd = _randomSource.getRandomNumber(_backAnimList[i]._seq._anims - 2); //? +							int rnd = _randomSource.getRandomNumber(_backAnimList[i]._seq._anims - 2);  							rnd++; -							//debug("rnd: %d", rnd);  							_backAnimList[i]._seq._currRelative = rnd;  							_backAnimList[i]._seq._current = rnd; // or nr of animation from lst  							activeSubAnim = rnd; @@ -791,53 +779,17 @@ void PrinceEngine::showBackAnims() {  						}  						_backAnimList[i]._seq._counter = 0;  						_backAnimList[i].backAnims[activeSubAnim]._state = 0; -						/* -						//show_bugger -						if (_backAnimList[i].backAnims[activeSubAnim]._frame < _backAnimList[i].backAnims[activeSubAnim]._animData->getPhaseCount() - 1) { -							_backAnimList[i].backAnims[activeSubAnim]._frame++; -						} -						//not_end -						*/ -					} -				} else { -					/* -					_backAnimList[i]._seq._currRelative = 0; -					_backAnimList[i]._seq._current = 0; // or nr of animation from lst -					activeSubAnim = 0; -					//only_1_type_1 -					//SetBackAnim -					int start = _backAnimList[i].backAnims[activeSubAnim]._basaData._start; -					if (start != -1) { -						_backAnimList[i].backAnims[activeSubAnim]._frame = start; -						_backAnimList[i].backAnims[activeSubAnim]._showFrame = start; -						_backAnimList[i].backAnims[activeSubAnim]._loopFrame = start;  					} -					int end = _backAnimList[i].backAnims[activeSubAnim]._basaData._end; -					if (end != -1) { -						_backAnimList[i].backAnims[activeSubAnim]._lastFrame = end; -					} -					_backAnimList[i]._seq._counter = 0; -					_backAnimList[i].backAnims[activeSubAnim]._state = 0; -					//show_bugger -					if (_backAnimList[i].backAnims[activeSubAnim]._frame < _backAnimList[i].backAnims[activeSubAnim]._animData->getPhaseCount() - 1) { -						_backAnimList[i].backAnims[activeSubAnim]._frame++; -					} -					//not_end -					*/  				}  			}  			//not_type_2_1:  			if (_backAnimList[i]._seq._type == 3) {  				if (_backAnimList[i]._seq._currRelative == 0) { -					//debug("count: %d, data2: %d", _backAnimList[i]._seq._counter, _backAnimList[i]._seq._data2);  					if (_backAnimList[i]._seq._counter < _backAnimList[i]._seq._data2) {  						//empty_frame - do not show anything  						continue;  					} else { -						//_backAnimList[i]._seq._current++; // or change to nr of animation -						//_backAnimList[i]._seq._currRelative++; //sth wrong -						//activeSubAnim++;  						//SetBackAnim  						int start = _backAnimList[i].backAnims[activeSubAnim]._basaData._start;  						if (start != -1) { @@ -849,40 +801,23 @@ void PrinceEngine::showBackAnims() {  						if (end != -1) {  							_backAnimList[i].backAnims[activeSubAnim]._lastFrame = end;  						} -						//_backAnimList[i]._seq._counter = 0;  						_backAnimList[i].backAnims[activeSubAnim]._state = 0;  					}  				}  			}  			//not_type_3_1:  			//show_bugger -			//debug("lastFrame: %d", _backAnimList[i].backAnims[activeSubAnim]._lastFrame); -			if (_backAnimList[i].backAnims[activeSubAnim]._frame == _backAnimList[i].backAnims[activeSubAnim]._lastFrame - 1) { // TEST +			if (_backAnimList[i].backAnims[activeSubAnim]._frame == _backAnimList[i].backAnims[activeSubAnim]._lastFrame - 1) {  				//loop_back_anim  				_backAnimList[i].backAnims[activeSubAnim]._frame = _backAnimList[i].backAnims[activeSubAnim]._loopFrame;  				//change_back_anim -				if (_backAnimList[i]._seq._type == 0) { -					//show_bugger -					//if (_backAnimList[i].backAnims[activeSubAnim]._frame < _backAnimList[i].backAnims[activeSubAnim]._animData->getPhaseCount() - 1) { -						//_backAnimList[i].backAnims[activeSubAnim]._frame++; -					//} -					//not_end -				} else if (_backAnimList[i]._seq._type == 1) { +				if (_backAnimList[i]._seq._type == 1) {  					//repeat_rnd -					if (_backAnimList[i]._seq._anims <= 1) { -						/* -						//show_bugger -						if (_backAnimList[i].backAnims[activeSubAnim]._frame < _backAnimList[i].backAnims[activeSubAnim]._animData->getPhaseCount() - 1) { -							_backAnimList[i].backAnims[activeSubAnim]._frame++; -						} -						//not_end -						*/ -					} else { +					if (_backAnimList[i]._seq._anims > 1) {  						int rnd;  						do {  							rnd = _randomSource.getRandomNumber(_backAnimList[i]._seq._anims - 1);  						} while (rnd == _backAnimList[i]._seq._currRelative); -						//debug("rnd: %d", rnd);  						_backAnimList[i]._seq._currRelative = rnd;  						_backAnimList[i]._seq._current = rnd; // or nr of animation from lst  						activeSubAnim = rnd; @@ -900,13 +835,6 @@ void PrinceEngine::showBackAnims() {  						}  						_backAnimList[i]._seq._counter = 0;  						_backAnimList[i].backAnims[activeSubAnim]._state = 0; -						/* -						//show_bugger -						if (_backAnimList[i].backAnims[activeSubAnim]._frame < _backAnimList[i].backAnims[activeSubAnim]._animData->getPhaseCount() - 1) { -							_backAnimList[i].backAnims[activeSubAnim]._frame++; -						} -						*/ -						//not_end  					}  				} else if (_backAnimList[i]._seq._type == 2) {  					if (_backAnimList[i]._seq._currRelative != 0) { @@ -927,40 +855,18 @@ void PrinceEngine::showBackAnims() {  						}  						_backAnimList[i]._seq._counter = 0;  						_backAnimList[i].backAnims[activeSubAnim]._state = 0; -						/* -						//show_bugger -						if (_backAnimList[i].backAnims[activeSubAnim]._frame < _backAnimList[i].backAnims[activeSubAnim]._animData->getPhaseCount() - 1) { -							_backAnimList[i].backAnims[activeSubAnim]._frame++; -						} -						//not_end -						*/ -					} /*else if (_backAnimList[i]._seq._counter < _backAnimList[i]._seq._data) { -						//show_bugger -						if (_backAnimList[i].backAnims[activeSubAnim]._frame < _backAnimList[i].backAnims[activeSubAnim]._animData->getPhaseCount() - 1) { -							_backAnimList[i].backAnims[activeSubAnim]._frame++; -						} -						//not_end -					}*/ +					}  				} else if (_backAnimList[i]._seq._type == 3) {  					//not_type_2  					_backAnimList[i]._seq._currRelative = 0; -					//_backAnimList[i]._seq._current = 0; // or nr of animation from lst +					_backAnimList[i]._seq._current = 0; // or nr of animation from lst  					_backAnimList[i]._seq._counter = 0; -					//debug("data: %d", _backAnimList[i]._seq._data);  					int rnd = _randomSource.getRandomNumber(_backAnimList[i]._seq._data - 1);  					_backAnimList[i]._seq._data2 = rnd;  					continue; // for bug in original game -					//show_bugger -					//_backAnimList[i].backAnims[activeSubAnim]._frame++; -					//not_end -				} else { -					//show_bugger -					//_backAnimList[i].backAnims[activeSubAnim]._frame++; -					//not_end  				}  			} else {  				_backAnimList[i].backAnims[activeSubAnim]._frame++; -				//not_end  			}  			//not_end: @@ -969,57 +875,16 @@ void PrinceEngine::showBackAnims() {  			//ShowFrameCode  			int phaseCount = _backAnimList[i].backAnims[activeSubAnim]._animData->getPhaseCount();  			int frameCount = _backAnimList[i].backAnims[activeSubAnim]._animData->getFrameCount(); -			//debug("frameCount: %d", frameCount); -			//debug("phaseCount: %d", phaseCount);  			int phase = _backAnimList[i].backAnims[activeSubAnim]._showFrame; -			if (phase < 0) { -				debug("phase < 0"); -			} -			if (phase >= phaseCount) { -				debug("p >= pC: i-%d, activ-%d, phase-%d, phaseC-%d", i, activeSubAnim, phase, phaseCount); -				debug("type: %d", _backAnimList[i]._seq._type); -			}  			int phaseFrameIndex = _backAnimList[i].backAnims[activeSubAnim]._animData->getPhaseFrameIndex(phase); -			if (phaseFrameIndex < 0) { -				debug("pFrameIndex: i-%d, activ-%d, phaseFrInd-%d, frameC-%d", i, activeSubAnim, phaseFrameIndex, frameCount); -				debug("type: %d", _backAnimList[i]._seq._type); -			} -			if (phaseFrameIndex >= frameCount) { -				debug("pFrameIndex2: i-%d, activ-%d, phaseFrInd-%d, frameC-%d", i, activeSubAnim, phaseFrameIndex, frameCount); -				debug("type: %d", _backAnimList[i]._seq._type); -			} -  			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);  			if (x != 0 || y != 0 || phaseCount != 1 || frameCount != 1) { // fix for room no. 5 - animation 8 (propably unnecessary anim) -				Graphics::Surface *backAnimSurface = _backAnimList[i].backAnims[activeSubAnim]._animData->getFrame(phaseFrameIndex, i, phase); //still out of bounds - -				//debug("x: %d", x); -				//debug("picWindowX: %d", _picWindowX); -				//if (x >= _picWindowX) { //  || x - _picWindowX + _backAnimList[i].backAnims[activeSubAnim]._animData->getPhaseOffsetX(frame) >= 0 ?? -					showSprite(backAnimSurface, x, y); -				//} +				Graphics::Surface *backAnimSurface = _backAnimList[i].backAnims[activeSubAnim]._animData->getFrame(phaseFrameIndex); //still with memory leak +				showSprite(backAnimSurface, x, y);  				backAnimSurface->free();  				delete backAnimSurface; - -				//if (_backAnimList[i].backAnims[activeSubAnim]._lastFrame == 1) { -					//debug("nr: %d, phase: %d, frame: %d", i, phase, phaseFrameIndex); -					//debug("phaseCount: %d, frameCount: %d, lastFrame: %d", phaseCount, frameCount, _backAnimList[i].backAnims[activeSubAnim]._lastFrame); -					//debug("x: %d", _backAnimList[i].backAnims[activeSubAnim]._x); -					//debug("y: %d", _backAnimList[i].backAnims[activeSubAnim]._y); -					//debug("offX: %d", _backAnimList[i].backAnims[activeSubAnim]._animData->getPhaseOffsetX(phase)); -					//debug("offX: %d", _backAnimList[i].backAnims[activeSubAnim]._animData->getPhaseOffsetY(phase)); -					//debug("x: %d, y: %d", x, y); -				//} - -				if (_backAnimList[i].backAnims[activeSubAnim]._x == 0 && _backAnimList[i].backAnims[activeSubAnim]._y == 0) { -					debug("x = 0, y = 0"); -				} - -				if (phaseCount == 1 && frameCount == 1) { -					debug("pC = 1, fC = 1"); -				}  			}  			//ShowFrameCodeShadow  		} | 
