From 31ea2154478ed4cb0344711861f835c848e97dde Mon Sep 17 00:00:00 2001 From: lukaslw Date: Sat, 21 Jun 2014 20:23:17 +0200 Subject: PRINCE: Hero animations fix - frame height calculation --- engines/prince/hero.cpp | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) (limited to 'engines/prince/hero.cpp') diff --git a/engines/prince/hero.cpp b/engines/prince/hero.cpp index eadfd899b6..44bd07f12a 100644 --- a/engines/prince/hero.cpp +++ b/engines/prince/hero.cpp @@ -196,11 +196,20 @@ void Hero::countDrawPosition() { } else { tempMiddleY = _middleY; } - _frameXSize = _moveSet[_moveSetType]->getFrameWidth(_phase); - _frameYSize = _moveSet[_moveSetType]->getFrameHeight(_phase); + int phaseFrameIndex = _moveSet[_moveSetType]->getPhaseFrameIndex(_phase); + _frameXSize = _moveSet[_moveSetType]->getFrameWidth(phaseFrameIndex); + _frameYSize = _moveSet[_moveSetType]->getFrameHeight(phaseFrameIndex); _scaledFrameXSize = getScaledValue(_frameXSize); _scaledFrameYSize = getScaledValue(_frameYSize); + // any use of this? + /* + if (!_moveSet[_moveSetType]->testId()) { + int diffX = _moveSet[_moveSetType]->getIdXDiff(); + int diffY = _moveSet[_moveSetType]->getIdYDiff(); + } + */ + if (_zoomFactor != 0) { //notfullSize _drawX = _middleX - _scaledFrameXSize / 2; @@ -525,10 +534,14 @@ void Hero::showHeroShadow(Graphics::Surface *heroFrame) { } void Hero::showHeroAnimFrame() { - if (_phase < _moveSet[_moveSetType]->getFrameCount() - 1) { + if (_phase < _moveSet[_moveSetType]->getPhaseCount() - 1) { _phase++; } else { - _phase = 0; + if (_state == TALK) { + _phase = _moveSet[_moveSetType]->getLoopCount(); + } else { + _phase = 0; + } } countDrawPosition(); } -- cgit v1.2.3