aboutsummaryrefslogtreecommitdiff
path: root/engines/prince/hero.cpp
diff options
context:
space:
mode:
authorlukaslw2014-06-21 20:23:17 +0200
committerlukaslw2014-06-22 20:09:22 +0200
commit31ea2154478ed4cb0344711861f835c848e97dde (patch)
treec5732c6a9734e3f00fbe86f3ec19cd20dba37bd1 /engines/prince/hero.cpp
parent422eeab07a068ade9bd70e0f9e88dd62a8d886d9 (diff)
downloadscummvm-rg350-31ea2154478ed4cb0344711861f835c848e97dde.tar.gz
scummvm-rg350-31ea2154478ed4cb0344711861f835c848e97dde.tar.bz2
scummvm-rg350-31ea2154478ed4cb0344711861f835c848e97dde.zip
PRINCE: Hero animations fix - frame height calculation
Diffstat (limited to 'engines/prince/hero.cpp')
-rw-r--r--engines/prince/hero.cpp21
1 files changed, 17 insertions, 4 deletions
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();
}