This commit is contained in:
aozhiwei 2020-07-29 15:18:20 +08:00
parent ee6108b632
commit 96f317ea1a
5 changed files with 26 additions and 0 deletions

View File

@ -9,6 +9,7 @@ class AIComponent
virtual ~AIComponent();
virtual void Update(int delta_time);
virtual float GetAttackRate() { return 0;};
virtual void Reset() {};
void SetAiLevel(int ai_level);
void SetAiMode(int ai_mode);
int GetAiLevel();

View File

@ -303,6 +303,13 @@ enum RaceType_e
kZombieRace = 2
};
enum AIMode_e
{
kChiJiAiMode = 0,
kHumanAiMode = 1,
kZombieAiMode = 2
};
const char* const PROJ_NAME_FMT = "game%d_gameserver";
const char* const PROJ_ROOT_FMT = "/data/logs/%s";

View File

@ -22,6 +22,7 @@
#include "player.h"
#include "buff.h"
#include "roomobstacle.h"
#include "aicomponent.h"
#include "framework/cpp/utils.h"
#include "framework/cpp/httpclientpool.h"
@ -1923,6 +1924,15 @@ void Human::ChangeToRace(RaceType_e race, int level)
race != kZombieRace) {
abort();
}
if (race_ != race && IsAndroid()) {
Android* android = (Android*)this;
android->ai->Reset();
if (race == kHumanRace) {
android->ai->SetAiMode(kHumanAiMode);
} else if (race == kZombieRace) {
android->ai->SetAiMode(kZombieAiMode);
}
}
race_ = race;
level_ = level;
if (race_ == kHumanRace) {

View File

@ -81,6 +81,13 @@ void ZombieModeAI::Update(int delta_time)
UpdateAI();
}
void ZombieModeAI::Reset()
{
ChangeToState(ZSE_Idle);
node_->param1 = 2;
node_->ai_meta = nullptr;
}
float ZombieModeAI::GetAttackRate()
{
if (!node_->ai_meta) {

View File

@ -20,6 +20,7 @@ public:
ZombieModeAI();
virtual ~ZombieModeAI() override;
virtual void Update(int delta_time) override;
virtual void Reset() override;
float GetAttackRate();
private: