aboutsummaryrefslogtreecommitdiff
path: root/engines/m4/mads_player.cpp
diff options
context:
space:
mode:
authorPaul Gilbert2010-07-05 09:53:10 +0000
committerPaul Gilbert2010-07-05 09:53:10 +0000
commit660ffc194d217bdeb61479e5b101e7642319ecb5 (patch)
tree022940dd431dedd9953392f694dfdebe5cc7dde5 /engines/m4/mads_player.cpp
parent830c7611dc76ea94a0869b4943b541035ee28d1c (diff)
downloadscummvm-rg350-660ffc194d217bdeb61479e5b101e7642319ecb5.tar.gz
scummvm-rg350-660ffc194d217bdeb61479e5b101e7642319ecb5.tar.bz2
scummvm-rg350-660ffc194d217bdeb61479e5b101e7642319ecb5.zip
Bugfixes for new player code - Rex is now correctly positioned when the player manager takes over from the wakeup animation sequence
svn-id: r50669
Diffstat (limited to 'engines/m4/mads_player.cpp')
-rw-r--r--engines/m4/mads_player.cpp13
1 files changed, 7 insertions, 6 deletions
diff --git a/engines/m4/mads_player.cpp b/engines/m4/mads_player.cpp
index 2ba009459e..57cb9eefd3 100644
--- a/engines/m4/mads_player.cpp
+++ b/engines/m4/mads_player.cpp
@@ -49,7 +49,7 @@ MadsPlayer::MadsPlayer() {
_currentScale = 0;
strcpy(_spritesPrefix, "");
for (int idx = 0; idx < 8; ++idx)
- _spriteSetIndexes[idx] = 0;
+ _spriteSetsPresent[idx] = false;
_frameNum = 0;
_frameOffset = 0;
_unk1 = 0;
@@ -76,7 +76,7 @@ bool MadsPlayer::loadSprites(const char *prefix) {
if (prefixLen == 0) {
// No player sprites at at all
for (int idx = 0; idx < 8; ++idx)
- _spriteSetIndexes[idx] = 0;
+ _spriteSetsPresent[idx] = false;
} else {
strcpy(setName, "*");
strcat(setName, _spritesPrefix);
@@ -86,13 +86,13 @@ bool MadsPlayer::loadSprites(const char *prefix) {
for (int idx = 0; idx < 8; ++idx) {
*digitP = suffixList[idx];
- _spriteSetIndexes[idx] = -1;
+ _spriteSetsPresent[idx] = true;
int setIndex = _madsVm->scene()->_spriteSlots.addSprites(setName, true, SPRITE_SET_CHAR_INFO);
if (setIndex < 0) {
if (idx < 7)
break;
- _spriteSetIndexes[idx] = 0;
+ _spriteSetsPresent[idx] = false;
} else {
++_spriteSetCount;
}
@@ -212,8 +212,9 @@ void MadsPlayer::setupFrame() {
resetActionList();
_frameOffset = 0;
_spriteListIdx2 = _directionListIndexes[_direction];
- if (_spriteSetIndexes[_spriteListIdx2] == 0) {
- _spriteListIdx2 = 4;
+ if (!_spriteSetsPresent[_spriteListIdx2]) {
+ // Direction isn't present, so use alternate direction, with entries flipped
+ _spriteListIdx2 -= 4;
_frameOffset = 0x8000;
}