From b01f601d7e8dc0b7885ff058c8596dc2ad6762f4 Mon Sep 17 00:00:00 2001 From: Tobias Gunkel Date: Sat, 7 Jan 2012 18:05:42 +0100 Subject: SCUMM: use constants for c64 actor miscflags --- engines/scumm/actor.h | 13 ++++++++++++- engines/scumm/script_v0.cpp | 10 +++++----- engines/scumm/verbs.cpp | 10 +++++----- 3 files changed, 22 insertions(+), 11 deletions(-) diff --git a/engines/scumm/actor.h b/engines/scumm/actor.h index 1584d0a78b..d8e3692619 100644 --- a/engines/scumm/actor.h +++ b/engines/scumm/actor.h @@ -335,10 +335,21 @@ protected: virtual void prepareDrawActorCostume(BaseCostumeRenderer *bcr); }; +enum ActorC64MiscFlags { + kActorMiscFlagStrong = 0x01, // Kid is strong (Hunk-O-Matic used) + kActorMiscFlag_02 = 0x02, // ??? + kActorMiscFlag_04 = 0x04, // ??? + kActorMiscFlagEdsEnemy = 0x08, // Kid is not Weird Ed's friend + kActorMiscFlag_10 = 0x10, // ??? + kActorMiscFlag_20 = 0x20, // ??? + kActorMiscFlagFreeze = 0x40, // Stop moving + kActorMiscFlagHide = 0x80, // Hide actor (e.g. dead or wearing radiation suit) +}; + class ActorC64 : public Actor_v2 { public: byte _costCommand, _costFrame; - byte _miscflags; // 0x1: strong, 0x8: Ed's enemy, 0x40: stop moving, 0x80: hide(dead/radiation suit) + byte _miscflags; byte _speaking, _speakingPrev; public: diff --git a/engines/scumm/script_v0.cpp b/engines/scumm/script_v0.cpp index 14df89b28d..0f9fbc6e6f 100644 --- a/engines/scumm/script_v0.cpp +++ b/engines/scumm/script_v0.cpp @@ -542,16 +542,16 @@ void ScummEngine_v0::o_loadRoom() { } void ScummEngine_v0::o_loadRoomWithEgo() { - Actor *a; + ActorC64 *a; int obj, room, x, y, dir; obj = fetchScriptByte(); room = fetchScriptByte(); - a = derefActor(VAR(VAR_EGO), "o_loadRoomWithEgo"); + a = (ActorC64 *)derefActor(VAR(VAR_EGO), "o_loadRoomWithEgo"); //0x634F - if (((ActorC64 *)a)->_miscflags & 0x40) { + if (a->_miscflags & kActorMiscFlagFreeze) { // TODO: Check if this is the correct function // to be calling here stopObjectCode(); @@ -734,9 +734,9 @@ void ScummEngine_v0::o_setActorBitVar() { a->_miscflags &= ~mask; // This flag causes the actor to stop moving (used by script #158, Green Tentacle 'Oomph!') - if (a->_miscflags & 0x40) + if (a->_miscflags & kActorMiscFlagFreeze) a->stopActorMoving(); - if (a->_miscflags & 0x80) + if (a->_miscflags & kActorMiscFlagHide) a->setActorCostume(0); debug(0, "o_setActorBitVar(%d, %d, %d)", act, mask, mod); diff --git a/engines/scumm/verbs.cpp b/engines/scumm/verbs.cpp index 291985892a..3d0abae0a3 100644 --- a/engines/scumm/verbs.cpp +++ b/engines/scumm/verbs.cpp @@ -847,8 +847,8 @@ bool ScummEngine_v0::verbObtain(int obj) { } // Ignore verbs? - Actor *a = derefActor(VAR(VAR_EGO), "verbObtain"); - if (((ActorC64 *)a)->_miscflags & 0x40) { + ActorC64 *a = (ActorC64 *)derefActor(VAR(VAR_EGO), "verbObtain"); + if (a->_miscflags & kActorMiscFlagFreeze) { resetSentence(false); return false; } @@ -918,7 +918,7 @@ bool ScummEngine_v0::verbExec() { if (verbMoveToActor(_activeObject2Nr)) { // Ignore verbs? Actor *a = derefActor(VAR(VAR_EGO), "verbExec"); - if (((ActorC64 *)a)->_miscflags & 0x40) { + if (((ActorC64 *)a)->_miscflags & kActorMiscFlagFreeze) { resetSentence(false); return false; } @@ -1052,7 +1052,7 @@ void ScummEngine_v0::checkExecVerbs() { } } - if (a->_miscflags & 0x80) { + if (a->_miscflags & kActorMiscFlagHide) { if (_activeVerb != kVerbNewKid) { _activeVerb = kVerbNone; } @@ -1210,7 +1210,7 @@ void ScummEngine_v0::checkExecVerbs() { if (zone->number == kMainVirtScreen) { // Ignore verbs? - if (a->_miscflags & 0x40) { + if (a->_miscflags & kActorMiscFlagFreeze) { resetSentence(false); return; } -- cgit v1.2.3