aboutsummaryrefslogtreecommitdiff
path: root/engines/scumm/actor.cpp
diff options
context:
space:
mode:
authorTravis Howell2006-07-10 10:14:10 +0000
committerTravis Howell2006-07-10 10:14:10 +0000
commit76e67fba9264cee212af40f327f60231d40e08eb (patch)
treef6af2024a635077c3f6a0fd2a0eef52fcc626203 /engines/scumm/actor.cpp
parentd8e974ba72a5ed9faf43e1a8fcd5611f4606e9db (diff)
downloadscummvm-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.cpp13
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");