aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--actor.cpp19
-rw-r--r--actor.h2
-rw-r--r--object.cpp4
3 files changed, 25 insertions, 0 deletions
diff --git a/actor.cpp b/actor.cpp
index 59e9aa3507..be20f2dbd6 100644
--- a/actor.cpp
+++ b/actor.cpp
@@ -1392,6 +1392,25 @@ void Scumm::resetActorBgs()
}
}
+void Actor::classChanged(int cls, bool value)
+{
+ switch(cls) {
+ case 20: // Never clip
+ break;
+ case 21: // Always clip
+ break;
+ case 22: // Ignore boxes
+ ignoreBoxes = value;
+ break;
+ case 29: // Y flip
+ break;
+ case 30: // X flip
+ break;
+ case 31: // ??
+ break;
+ }
+}
+
bool Actor::isInClass(int cls)
{
return _vm->getClass(number, cls);
diff --git a/actor.h b/actor.h
index a954d2df5d..3d9c6d3302 100644
--- a/actor.h
+++ b/actor.h
@@ -169,6 +169,8 @@ public:
void setAnimVar(byte var, int value) {
animVariable[var] = value;
}
+
+ void classChanged(int cls, bool value);
protected:
bool isInClass(int cls);
diff --git a/object.cpp b/object.cpp
index f27cf9be78..b0aa12687c 100644
--- a/object.cpp
+++ b/object.cpp
@@ -61,6 +61,10 @@ void Scumm::putClass(int obj, int cls, bool set)
_classData[obj] |= (1 << (cls - 1));
else
_classData[obj] &= ~(1 << (cls - 1));
+
+ if (1 <= obj && obj < NUM_ACTORS) {
+ _actors[obj].classChanged(cls, set);
+ }
}
int Scumm::getOwner(int obj)