void CStateMachinen::Update(CMonster& monster, eStateEvent evt) { switch(monster.mStateParamter.stateCur) { case eMA_STAND: { DoStand( monster, evt); break; } case eMA_WALKAROUND: { DoWalkAround( monster, evt); break; } case eMA_PERSUIT: { DoPursuit( monster, evt); break; } case eMA_WALKAWAY: case eMA_RUNAWAY: { DoRunAway( monster, evt); break; } case eMA_ATTACK: { DoAttack( monster, evt); break; } case eMA_SCRIPT_RUN: case eMA_SCRIPT_WALK: { DoScriptMove( monster, evt); break; } case eMA_PAUSE: { DoPause( monster, evt); break; } } }
void KAIBase::OnEscape(void) { // 决定是否还要逃跑 BOOL bRetCode = FALSE; KG_PROCESS_ERROR(g_pSO3World->m_nGameLoop < m_EscapeData.nEscapeFrame); Escape(); return; Exit0: // 不跑了,开打 DoPursuit(); return; }