State: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
No edit summary
No edit summary
Line 14: Line 14:




One interesting method that deals with states is the SelectIdealState() method. This method chooses a state based on it's current state and conditions.  
One interesting method that deals with states is the <code>SelectIdealState()</code> method. This method chooses a state based on it's current state and conditions.  


The method implementation has a switch statement that reverts Ideal state selection to specific functions to the current state.  
The method implementation has a switch statement that reverts Ideal state selection to specific functions to the current state.  
Line 60: Line 60:
</pre>
</pre>


We can see the switch statement in the case of NPC_STATE_IDLE state selection will be reverted to SelectIdleIdealState() method.
We can see the switch statement in the case of <code>NPC_STATE_IDLE</code> state selection will be reverted to <code>SelectIdleIdealState()</code> method.

Revision as of 13:01, 3 August 2005

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


One interesting method that deals with states is the SelectIdealState() method. This method chooses a state based on it's current state and conditions.

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

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 the switch statement in the case of NPC_STATE_IDLE state selection will be reverted to SelectIdleIdealState() method.