bool NFPatrolState::Enter(const NFGUID& self, NFIStateMachine* pStateMachine) { if (!NFIState::Enter(self, pStateMachine)) { RandomPatrol(self, pStateMachine); } return true; }
bool NFCPatrolState::Enter(const NFGUID& self) { if (!NFIState::Enter(self)) { //进入巡逻状态 //在出生点随机找地方走动巡逻 RandomPatrol(self); } return true; }
bool NFCPatrolState::Execute(const NFGUID& self) { if (!NFIState::Execute(self)) { NFIStateMachine* pStateMachine = m_pAIModule->GetStateMachine(self); if (pStateMachine) { NFGUID ident = m_pHateModule->QueryMaxHateObject(self); NFAI_MOVE_TYPE eMoveType = (NFAI_MOVE_TYPE)(m_pKernelModule->GetPropertyInt(self, "MoveType")); //如果是定点的,则不走,继续idle switch (eMoveType) { case NFAI_MOVE_TYPE::MOVE_BY_POINT_LIST: { //查找是否有可以攻击的对象 if (!ident.IsNull()) { pStateMachine->ChangeState(FightState); } else { //下一个节点 //object记录当前的路径ID和index,以记录寻路的位置 } } break; case NFAI_MOVE_TYPE::MOVE_BY_RANDOM: { //查找是否有可以攻击的对象 if (!ident.IsNull()) { pStateMachine->ChangeState(FightState); } else { RandomPatrol(self); } } break; default: break; } } } return true; }
bool NFPatrolState::Execute(const NFGUID& self, NFIStateMachine* pStateMachine) { if (!NFIState::Execute(self, pStateMachine)) { NFGUID ident = m_pHateModule->QueryMaxHateObject(self); NFAI_NPC_TYPE eMoveType = (NFAI_NPC_TYPE)(m_pKernelModule->GetPropertyInt(self, NFrame::NPC::NPCType())); //如果是定点的,则不走,继续idle switch (eMoveType) { case NFAI_NPC_TYPE::MASTER_TYPE: { //查找是否有可以攻击的对象 if (!ident.IsNull()) { pStateMachine->ChangeState(FightState); } else { //下一个节点 //object记录当前的路径ID和index,以记录寻路的位置 } } break; case NFAI_NPC_TYPE::HERO_TYPE: { //查找是否有可以攻击的对象 if (!ident.IsNull()) { pStateMachine->ChangeState(FightState); } else { RandomPatrol(self, pStateMachine); } } break; default: break; } } return true; }