State

From Valve Developer Community
Revision as of 12:10, 3 August 2005 by Fluxtah (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

The NPC's State and Condition, helps the NPC decide on an ideal Schedule. At any given time the NPC will only ever be in one state.

NPC_STATE_INVALID NPC_STATE_NONE NPC_STATE_IDLE NPC_STATE_ALERT NPC_STATE_COMBAT NPC_STATE_SCRIPT NPC_STATE_PLAYDEAD NPC_STATE_PRONE NPC_STATE_DEAD

SelectIdealState() The select ideal state method chooses a state based on it's current state and conditions.

The function has a switch statement that reverts Ideal state selection to specific functions to the current state.

Code:

switch ( m_NPCState ) { case NPC_STATE_IDLE: { NPC_STATE nState = SelectIdleIdealState(); if ( nState != NPC_STATE_INVALID ) return nState; } break;

case NPC_STATE_ALERT: { NPC_STATE nState = SelectAlertIdealState(); if ( nState != NPC_STATE_INVALID ) return nState; } break;

case NPC_STATE_COMBAT: { // COMBAT goes to ALERT upon death of enemy if ( GetEnemy() == NULL ) { return NPC_STATE_ALERT; } break; }

case NPC_STATE_SCRIPT: { NPC_STATE nState = SelectScriptIdealState(); if ( nState != NPC_STATE_INVALID ) return nState; } break;

case NPC_STATE_DEAD: return NPC_STATE_DEAD; }


We can see above in the case of NPC_STATE_IDLE state selection will be reverted to SelectIdleIdealState() function.

SelectIdealState() is called in MaintainSchedule () function (see below) if there is no current schedule and the current state is not the ideal state, it also does a check to see if it should select the ideal state, again, based on states and conditions which adds to the complexity level of state selection.