31 lines
753 B
C++
31 lines
753 B
C++
#pragma once
|
|
|
|
class BehaviorAI
|
|
{
|
|
public:
|
|
virtual void Initialize(CAnimal *pSelf, PAICONFIG pConfig) = 0;
|
|
|
|
virtual void Update(TICKCOUNT nCurrentTick) = 0;
|
|
};
|
|
|
|
class TalkAI : public BehaviorAI
|
|
{
|
|
public:
|
|
typedef TalkAI Inherited;
|
|
|
|
TalkAI() : m_bHasNonCombatTalk(false), m_bHasCombatTalk(false){}
|
|
virtual void Initialize(CAnimal *pSelf, PAICONFIG pConfig);
|
|
virtual void Update(TICKCOUNT nCurrentTick);
|
|
|
|
protected:
|
|
void UpdateNPCTalk();
|
|
void UpdateNPCNonCombatTalkImpl();
|
|
void PostponeTalkTimer();
|
|
|
|
private:
|
|
CAnimal *m_pSelf; // 实体指针
|
|
PAICONFIG m_pAIConfig; // AI配置
|
|
bool m_bHasNonCombatTalk; // 是否有非战斗发言
|
|
bool m_bHasCombatTalk; // 是否有战斗发言
|
|
CTimer<2000> m_t2sTalk; // 发言定时器
|
|
}; |