diff options
author | Travis Howell | 2005-02-23 09:23:54 +0000 |
---|---|---|
committer | Travis Howell | 2005-02-23 09:23:54 +0000 |
commit | 861e418e70b2c5e60d9f15c2681ea168b90eba5f (patch) | |
tree | 0398cab5b302a494efadd8b995898e9ec57d240f | |
parent | a890737e0e8b89b506edaba23ec74100fbab5322 (diff) | |
download | scummvm-rg350-861e418e70b2c5e60d9f15c2681ea168b90eba5f.tar.gz scummvm-rg350-861e418e70b2c5e60d9f15c2681ea168b90eba5f.tar.bz2 scummvm-rg350-861e418e70b2c5e60d9f15c2681ea168b90eba5f.zip |
freddicove adds extra SpriteInfo field.
Correction, only redraw sprite if value changed.
svn-id: r16876
-rw-r--r-- | scumm/intern.h | 1 | ||||
-rw-r--r-- | scumm/script_v90he.cpp | 12 | ||||
-rw-r--r-- | scumm/sprite_he.cpp | 11 | ||||
-rw-r--r-- | scumm/sprite_he.h | 1 |
4 files changed, 22 insertions, 3 deletions
diff --git a/scumm/intern.h b/scumm/intern.h index fb116b4ab7..c00c6f8638 100644 --- a/scumm/intern.h +++ b/scumm/intern.h @@ -938,6 +938,7 @@ protected: void spriteInfoSet_field_78_64(int spriteId, int value); void spriteInfoSet_setClassFlags(int spriteId, int value1, int value2); void spriteInfoSet_resetClassFlags(int spriteId); + void spriteInfoSet_field_88(int spriteId, int value1, int value2); void redrawSpriteGroup(int spriteGroupId); void spriteGroupSet_case0_0(int spriteGroupId, int value1, int value2); diff --git a/scumm/script_v90he.cpp b/scumm/script_v90he.cpp index 109324a6c2..c9350ff4c6 100644 --- a/scumm/script_v90he.cpp +++ b/scumm/script_v90he.cpp @@ -1234,8 +1234,16 @@ void ScummEngine_v90he::o90_setSpriteInfo() { } break; case 105: // HE 99+ - pop(); - pop(); + args[1] = pop(); + args[0] = pop(); + if (_curSpriteId > _curMaxSpriteId) + break; + spriteId = _curSpriteId; + if (!spriteId) + spriteId++; + + for (; spriteId <= _curMaxSpriteId; spriteId++) + spriteInfoSet_field_88(spriteId, args[0], args[1]); break; case 106: // HE 99+ args[0] = pop(); diff --git a/scumm/sprite_he.cpp b/scumm/sprite_he.cpp index 3785ff9faf..fd7039a76d 100644 --- a/scumm/sprite_he.cpp +++ b/scumm/sprite_he.cpp @@ -386,7 +386,7 @@ void ScummEngine_v90he::spriteInfoSet_Inc_tx_ty(int spriteId, int value1, int va _spriteTable[spriteId].tx += value1; _spriteTable[spriteId].ty += value2; - if (_spriteTable[spriteId].tx || _spriteTable[spriteId].ty) + if (value1 || value2) _spriteTable[spriteId].flags |= kSF01 | kSFNeedRedraw; } @@ -525,6 +525,15 @@ void ScummEngine_v90he::spriteInfoSet_resetClassFlags(int spriteId) { _spriteTable[spriteId].class_flags = 0; } +void ScummEngine_v90he::spriteInfoSet_field_88(int spriteId, int value1, int value2) { + checkRange(_varNumSprites, 1, spriteId, "Invalid sprite %d"); + + if (value1 == 0x7B) { + _spriteTable[spriteId].field_88 = value2; + _spriteTable[spriteId].flags |= kSF01 | kSFNeedRedraw; + } +} + void ScummEngine_v90he::spriteInfoSet_resetSprite(int spriteId) { checkRange(_varNumSprites, 1, spriteId, "Invalid sprite %d"); diff --git a/scumm/sprite_he.h b/scumm/sprite_he.h index 563e061668..d54fa4e387 100644 --- a/scumm/sprite_he.h +++ b/scumm/sprite_he.h @@ -100,6 +100,7 @@ struct SpriteInfo { int field_7C; int field_80; int class_flags; + int field_88; }; struct SpriteGroup { |