State: Difference between revisions
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 12: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.