From 96f317ea1a41732cca4c09c8069997bdb4abb736 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 29 Jul 2020 15:18:20 +0800 Subject: [PATCH] 1 --- server/gameserver/aicomponent.h | 1 + server/gameserver/constant.h | 7 +++++++ server/gameserver/human.cc | 10 ++++++++++ server/gameserver/zombiemode.ai.cc | 7 +++++++ server/gameserver/zombiemode.ai.h | 1 + 5 files changed, 26 insertions(+) diff --git a/server/gameserver/aicomponent.h b/server/gameserver/aicomponent.h index 526be0d..31ab08c 100644 --- a/server/gameserver/aicomponent.h +++ b/server/gameserver/aicomponent.h @@ -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(); diff --git a/server/gameserver/constant.h b/server/gameserver/constant.h index 4d9d5c7..ddf9259 100755 --- a/server/gameserver/constant.h +++ b/server/gameserver/constant.h @@ -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"; diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index 759018e..0364914 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -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) { diff --git a/server/gameserver/zombiemode.ai.cc b/server/gameserver/zombiemode.ai.cc index db8afb6..1fe1fc5 100644 --- a/server/gameserver/zombiemode.ai.cc +++ b/server/gameserver/zombiemode.ai.cc @@ -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) { diff --git a/server/gameserver/zombiemode.ai.h b/server/gameserver/zombiemode.ai.h index 66cccb8..c209e35 100644 --- a/server/gameserver/zombiemode.ai.h +++ b/server/gameserver/zombiemode.ai.h @@ -20,6 +20,7 @@ public: ZombieModeAI(); virtual ~ZombieModeAI() override; virtual void Update(int delta_time) override; + virtual void Reset() override; float GetAttackRate(); private: