From 7cc0c7e84036fa74ab15a3148d42f896636cc7c5 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 18 Oct 2023 14:34:27 +0800 Subject: [PATCH] 1 --- server/gameserver/new_hero_agent.cc | 32 +++++++++++++++++++++++++++++ server/gameserver/new_hero_agent.h | 2 ++ server/gameserver/target_agent.cc | 8 -------- server/gameserver/target_agent.h | 1 - 4 files changed, 34 insertions(+), 9 deletions(-) diff --git a/server/gameserver/new_hero_agent.cc b/server/gameserver/new_hero_agent.cc index e3d3e90f..9186f847 100644 --- a/server/gameserver/new_hero_agent.cc +++ b/server/gameserver/new_hero_agent.cc @@ -690,3 +690,35 @@ behaviac::EBTStatus HeroAgent::DebugOut(std::string msg, int arg0, int arg1, int #endif return behaviac::BT_SUCCESS; } + +bool HeroAgent::TargetInShotRange() +{ + if (!current_target_agent->IsValid()) { + return false; + } + float shot_range = GetShotRange(); + bool in_square = Collision::InSquare + (GetPos(), + current_target_agent->GetPos(), + shot_range / 0.7); + if (!in_square) { + return false; + } + return shot_range < owner_->GetPos().DistanceGlmVec3(current_target_agent->GetPos()); +} + +bool HeroAgent::InTargetShotRange() +{ + if (!current_target_agent->IsValid()) { + return false; + } + float shot_range = GetShotRange(); + bool in_square = Collision::InSquare + (GetPos(), + current_target_agent->GetPos(), + shot_range / 0.7); + if (!in_square) { + return false; + } + return shot_range < owner_->GetPos().DistanceGlmVec3(current_target_agent->GetPos()); +} diff --git a/server/gameserver/new_hero_agent.h b/server/gameserver/new_hero_agent.h index 31cc771f..f7588d70 100644 --- a/server/gameserver/new_hero_agent.h +++ b/server/gameserver/new_hero_agent.h @@ -82,6 +82,8 @@ public: bool HasFlag(int tag); void SetFlag(int tag); void UnSetFlag(int tag); + bool TargetInShotRange(); + bool InTargetShotRange(); behaviac::EBTStatus RegisterEvents(behaviac::vector events); behaviac::EBTStatus SearchEnemy(float range); diff --git a/server/gameserver/target_agent.cc b/server/gameserver/target_agent.cc index 3fa56cd9..e5a12c61 100644 --- a/server/gameserver/target_agent.cc +++ b/server/gameserver/target_agent.cc @@ -86,11 +86,3 @@ Room* TargetAgent::GetRoom() { return owner_->room; } - -float TargetAgent::GetShotRange() -{ - if (target_.Get() && target_.Get()->GetCurrWeapon()) { - return target_.Get()->GetCurrWeapon()->meta->range(); - } - return 0.0f; -} diff --git a/server/gameserver/target_agent.h b/server/gameserver/target_agent.h index f4cacf11..d074a657 100644 --- a/server/gameserver/target_agent.h +++ b/server/gameserver/target_agent.h @@ -21,7 +21,6 @@ public: float GetMaxHp(); int GetHeroId(); int GetLevel(); - float GetShotRange(); void Abandon(); void SetOwner(Creature* owner);