From 41c2b17f7747400d5cc881dfebd933effe67d26c Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 13 Oct 2023 17:23:32 +0800 Subject: [PATCH] 1 --- server/gameserver/new_hero_agent.cc | 26 ++++++++++++++++++++------ server/gameserver/new_hero_agent.h | 3 ++- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/server/gameserver/new_hero_agent.cc b/server/gameserver/new_hero_agent.cc index e6febac6..1ae4070e 100644 --- a/server/gameserver/new_hero_agent.cc +++ b/server/gameserver/new_hero_agent.cc @@ -6,8 +6,12 @@ #include "room.h" #include "movement.h" #include "netdata.h" +#include "glmhelper.h" +#include "target_agent.h" +#include "weapon.h" #include "mt/Hero.h" +#include "mt/Equip.h" HeroAgent::HeroAgent():BaseAgent() { @@ -126,12 +130,12 @@ int HeroAgent::GetBattleTimes() void HeroAgent::SetMoveDir(const glm::vec3& dir) { - + owner_->SetMoveDir(dir); } void HeroAgent::SetAttackDir(const glm::vec3& dir) { - + owner_->SetAttackDir(dir); } void HeroAgent::ShotNormal(const glm::vec3& dir) @@ -146,22 +150,32 @@ void HeroAgent::ShotTrace() glm::vec3 HeroAgent::GetRandomDir() { - + glm::vec3 dir = owner_->GetMoveDir(); + GlmHelper::RotateY(dir, (10 + rand() % 360)/ 180.0f); + return dir; } glm::vec3 HeroAgent::GetTargetDir() { - + if (current_target_agent->IsValid()) { + return owner_->GetMoveDir(); + } + glm::vec3 dir = current_target_agent->GetPos() - owner_->GetPos().ToGlmVec3(); + GlmHelper::Normalize(dir); + return dir; } glm::vec3 HeroAgent::RandomPoint(float range) { - + abort(); } float HeroAgent::GetShotRange() { - + if (owner_->GetCurrWeapon()) { + return owner_->GetCurrWeapon()->meta->range(); + } + return 0.0f; } void HeroAgent::SetV(int id, int val) diff --git a/server/gameserver/new_hero_agent.h b/server/gameserver/new_hero_agent.h index 344ec445..f383742c 100644 --- a/server/gameserver/new_hero_agent.h +++ b/server/gameserver/new_hero_agent.h @@ -5,6 +5,7 @@ class Hero; class RoomAgent; class TeamAgent; +class TargetAgent; class HeroAgent : public BaseAgent { public: @@ -65,7 +66,7 @@ public: RoomAgent* room_agent = nullptr; TeamAgent* team_agent = nullptr; HeroAgent* master_agent = nullptr; - HeroAgent* current_target_agent = nullptr; + TargetAgent* current_target_agent = nullptr; float task_param0 = 0.0f; float task_param1 = 0.0f; float task_param2 = 0.0f;