38 lines
744 B
C++
38 lines
744 B
C++
#pragma once
|
|
|
|
#include "aicomponent.h"
|
|
#include "weakptr.h"
|
|
|
|
enum HeroState_e : int;
|
|
class HeroAINode;
|
|
class HeroAI : public AIComponent
|
|
{
|
|
public:
|
|
|
|
HeroAI();
|
|
virtual ~HeroAI() override;
|
|
virtual void Update(int delta_time) override;
|
|
float GetAttackRate();
|
|
|
|
private:
|
|
void UpdateAI();
|
|
void UpdateIdle();
|
|
void UpdateThinking();
|
|
void UpdateAttack();
|
|
void UpdateRandomWalk();
|
|
void UpdatePursuit();
|
|
void UpdateFollowMaster();
|
|
void DoMoveAI();
|
|
void ChangeToStateAI(HeroState_e to_state);
|
|
void DoShotAI();
|
|
|
|
Creature* GetTarget();
|
|
float GetAttackRange();
|
|
int GetAttackTimes();
|
|
|
|
private:
|
|
MetaData::AI* ai_meta = nullptr;
|
|
HeroAINode* node_ = nullptr;
|
|
bool moving_ = false;
|
|
};
|