aboutsummaryrefslogtreecommitdiff
path: root/engines/prince/hero.cpp
diff options
context:
space:
mode:
authorlukaslw2014-08-04 12:02:00 +0200
committerlukaslw2014-08-04 12:02:00 +0200
commitc3a3bdebd729be66210e7099fa696676139188e0 (patch)
treec8ff6abd6039b26a4c4a3f1a0a041f9d2b289ad3 /engines/prince/hero.cpp
parent85f4c2ccd2079b75c3c2d18b5b6ced7c37b14746 (diff)
downloadscummvm-rg350-c3a3bdebd729be66210e7099fa696676139188e0.tar.gz
scummvm-rg350-c3a3bdebd729be66210e7099fa696676139188e0.tar.bz2
scummvm-rg350-c3a3bdebd729be66210e7099fa696676139188e0.zip
PRINCE: showHero() update
Diffstat (limited to 'engines/prince/hero.cpp')
-rw-r--r--engines/prince/hero.cpp33
1 files changed, 12 insertions, 21 deletions
diff --git a/engines/prince/hero.cpp b/engines/prince/hero.cpp
index 993665d833..e3493c4966 100644
--- a/engines/prince/hero.cpp
+++ b/engines/prince/hero.cpp
@@ -42,7 +42,7 @@ Hero::Hero(PrinceEngine *vm, GraphicsMan *graph) : _vm(vm), _graph(graph),
_shadZoomFactor(0), _shadScaleValue(0), _shadLineLen(0), _shadDrawX(0), _shadDrawY(0),
_frameXSize(0), _frameYSize(0), _scaledFrameXSize(0), _scaledFrameYSize(0), _color(0),
_coords(nullptr), _dirTab(nullptr), _currCoords(nullptr), _currDirTab(nullptr), _step(0),
- _maxBoredom(200), _turnAnim(0), _leftRightMainDir(0), _upDownMainDir(0), _animSetNr(0)
+ _maxBoredom(200), _leftRightMainDir(0), _upDownMainDir(0), _animSetNr(0)
{
_shadowLine = (byte *)malloc(kShadowLineArraySize);
}
@@ -737,7 +737,7 @@ void Hero::showHero() {
int rotateDir = rotateHero(_lastDirection, _destDirection);
_lastDirection = _destDirection;
if (rotateDir) {
- _turnAnim = rotateDir;
+ _moveSetType = rotateDir;
_state = kHeroStateTran;
} else {
_state = kHeroStateStay;
@@ -750,9 +750,8 @@ void Hero::showHero() {
}
if (_state == kHeroStateTran) {
- if (_moveSet[_turnAnim] != nullptr) {
+ if (_moveSet[_moveSetType] != nullptr) {
// only in bear form
- _moveSetType = _turnAnim;
if (_phase < _moveSet[_moveSetType]->getPhaseCount() - 2) {
_phase += 2;
} else {
@@ -766,9 +765,8 @@ void Hero::showHero() {
}
if (_state == kHeroStateMvan) {
- if (_moveSet[_turnAnim] != nullptr) {
+ if (_moveSet[_moveSetType] != nullptr) {
// only in bear form
- _moveSetType = _turnAnim;
if (_phase < _moveSet[_moveSetType]->getPhaseCount() - 2) {
_phase += 2;
} else {
@@ -802,26 +800,19 @@ void Hero::showHero() {
_phase = 0;
int rotateDir = rotateHero(_lastDirection, dir);
_lastDirection = dir;
- if (!rotateDir) {
- continue;
- } else {
- _turnAnim = rotateDir;
+ if (_moveSet[rotateDir] != nullptr) {
+ // only in bear form
_state = kHeroStateMvan;
- if (_moveSet[_turnAnim] != nullptr) {
- // only in bear form
- _moveSetType = _turnAnim;
- if (_phase < _moveSet[_moveSetType]->getPhaseCount() - 2) {
- _phase += 2;
- break;
- } else {
- _turnAnim = 0;
- _state = kHeroStateMove;
- continue;
- }
+ _moveSetType = rotateDir;
+ if (_phase < _moveSet[_moveSetType]->getPhaseCount() - 2) {
+ _phase += 2;
+ break;
} else {
_state = kHeroStateMove;
continue;
}
+ } else {
+ continue;
}
}
//no_need_direction_change