diff --git a/engines/saga2/assign.cpp b/engines/saga2/assign.cpp index 1fcce574f28..bc3d6fc9638 100644 --- a/engines/saga2/assign.cpp +++ b/engines/saga2/assign.cpp @@ -35,6 +35,8 @@ namespace Saga2 { const uint16 indefinitely = CalenderTime::framesPerDay; +extern Common::Array nameList; + /* ===================================================================== * ActorAssignment member functions * ===================================================================== */ @@ -44,7 +46,10 @@ ActorAssignment::ActorAssignment(Actor *a, uint16 until) : startFrame(calender.frameInDay()), endFrame(until) { _actor = a; + debugC(2, kDebugActors, "New assignment for %p (%s) from %d until %d: %p", + (void *)a, nameList[a->proto()->nameIndex], startFrame, endFrame, (void *)this); a->_assignment = this; + a->flags |= hasAssignment; } //---------------------------------------------------------------------- @@ -60,6 +65,7 @@ ActorAssignment::ActorAssignment(Actor *ac, void **buf) { _actor = ac; ac->_assignment = this; + a->flags |= hasAssignment; } //---------------------------------------------------------------------- @@ -67,6 +73,8 @@ ActorAssignment::ActorAssignment(Actor *ac, void **buf) { ActorAssignment::~ActorAssignment(void) { Actor *a = getActor(); + debugC(2, kDebugActors, "Ending assignment for %p (%s): %p", + (void *)a, nameList[a->proto()->nameIndex], (void *)this); // Determine if the actor has a task initiated by this assignment if (a->currentGoal == actorGoalFollowAssignment @@ -76,6 +84,8 @@ ActorAssignment::~ActorAssignment(void) { delete a->curTask; a->curTask = NULL; } + + a->flags &= ~hasAssignment; } //---------------------------------------------------------------------- diff --git a/engines/saga2/assign.h b/engines/saga2/assign.h index 9e052f37232..9db8e665a92 100644 --- a/engines/saga2/assign.h +++ b/engines/saga2/assign.h @@ -50,6 +50,11 @@ enum AssignmentTypes { * ===================================================================== */ class ActorAssignment { + + enum { + hasAssignment = (1 << 3) + }; + uint16 startFrame, // Time in day when this was constructed endFrame; // End time of the assignment