diff options
author | Travis Howell | 2006-07-10 10:14:10 +0000 |
---|---|---|
committer | Travis Howell | 2006-07-10 10:14:10 +0000 |
commit | 76e67fba9264cee212af40f327f60231d40e08eb (patch) | |
tree | f6af2024a635077c3f6a0fd2a0eef52fcc626203 /engines/scumm/actor.cpp | |
parent | d8e974ba72a5ed9faf43e1a8fcd5611f4606e9db (diff) | |
download | scummvm-rg350-76e67fba9264cee212af40f327f60231d40e08eb.tar.gz scummvm-rg350-76e67fba9264cee212af40f327f60231d40e08eb.tar.bz2 scummvm-rg350-76e67fba9264cee212af40f327f60231d40e08eb.zip |
Fix actor glitches in the stomach location of pajama3
svn-id: r23471
Diffstat (limited to 'engines/scumm/actor.cpp')
-rw-r--r-- | engines/scumm/actor.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/engines/scumm/actor.cpp b/engines/scumm/actor.cpp index fb89554247..b8252adda7 100644 --- a/engines/scumm/actor.cpp +++ b/engines/scumm/actor.cpp @@ -154,6 +154,7 @@ void Actor::initActor(int mode) { _auxBlock.reset(); _hePaletteNum = 0; + _heFlags = 0; _vm->_classData[_number] = (_vm->_game.version >= 7) ? _vm->_classData[0] : 0; } @@ -1314,6 +1315,9 @@ void ScummEngine::resetActorBgs() { clearGfxUsageBit(strip, USAGE_BIT_DIRTY); clearGfxUsageBit(strip, USAGE_BIT_RESTORED); for (j = 1; j < _numActors; j++) { + if (_actors[j]._heFlags & 1) + continue; + if (testGfxUsageBit(strip, j) && ((_actors[j]._top != 0x7fffffff && _actors[j]._needRedraw) || _actors[j]._needBgReset)) { clearGfxUsageBit(strip, j); @@ -2046,6 +2050,15 @@ bool Actor::isPlayer() { return isInClass(kObjectClassPlayer); } +void Actor::setHEFlag(int bit, int set) { + // Note that condition is inverted + if (!set) { + _heFlags |= bit; + } else { + _heFlags &= ~bit; + } +} + void Actor::setUserCondition(int slot, int set) { const int condMaskCode = (_vm->_game.heversion >= 85) ? 0x1FFF : 0x3FF; checkRange(32, 1, slot, "Condition %d out of range"); |