From 06a3493db2c84eede12040df171a15d1ac33ff6e Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 13 Oct 2023 16:53:48 +0800 Subject: [PATCH] 1 --- server/gameserver/new_hero_agent.cc | 3 ++- server/gameserver/target_agent.cc | 38 ++++++++++++++++++++++------- server/gameserver/target_agent.h | 4 +++ 3 files changed, 35 insertions(+), 10 deletions(-) diff --git a/server/gameserver/new_hero_agent.cc b/server/gameserver/new_hero_agent.cc index 092ccafe..1a5bdb6d 100644 --- a/server/gameserver/new_hero_agent.cc +++ b/server/gameserver/new_hero_agent.cc @@ -2,6 +2,7 @@ #include "new_hero_agent.h" #include "hero.h" +#include "room.h" HeroAgent::HeroAgent():BaseAgent() { @@ -19,7 +20,7 @@ void HeroAgent::Exec() void HeroAgent::SetOwner(Creature* owner) { - //room = owner->room; + room_agent = owner->room->GetRoomAgent(); owner_ = owner; } diff --git a/server/gameserver/target_agent.cc b/server/gameserver/target_agent.cc index 48abf393..ef42ee23 100644 --- a/server/gameserver/target_agent.cc +++ b/server/gameserver/target_agent.cc @@ -2,6 +2,8 @@ #include "target_agent.h" +#include "mt/Hero.h" + TargetAgent::TargetAgent():BaseAgent() { @@ -13,45 +15,63 @@ TargetAgent::~TargetAgent() int TargetAgent::GetUniId() { - + if (target_.Get()) { + return target_.Get()->GetUniId(); + } + return 0; } bool TargetAgent::IsValid() { - + return target_.Get() && !target_.Get()->dead; } bool TargetAgent::IsDead() { - + if (target_.Get()) { + return target_.Get()->dead; + } + return true; } const glm::vec3 TargetAgent::GetPos() { - + return target_.Get()->GetPos().ToGlmVec3(); } float TargetAgent::GetHp() { - + if (!target_.Get()) { + abort(); + } + return target_.Get()->GetHP(); } float TargetAgent::GetMaxHp() { - + if (!target_.Get()) { + abort(); + } + return target_.Get()->GetMaxHP(); } int TargetAgent::GetHeroId() { - + if (!target_.Get()) { + abort(); + } + return target_.Get()->GetHeroMeta()->id(); } int TargetAgent::GetLevel() { - + if (!target_.Get()) { + abort(); + } + return target_.Get()->level; } void TargetAgent::Abandon() { - + target_.Reset(); } diff --git a/server/gameserver/target_agent.h b/server/gameserver/target_agent.h index c5ce9a86..230b048c 100644 --- a/server/gameserver/target_agent.h +++ b/server/gameserver/target_agent.h @@ -2,6 +2,8 @@ #include "new_base_agent.h" +#include "creature.h" + class TargetAgent : public BaseAgent { public: @@ -21,4 +23,6 @@ public: int GetLevel(); void Abandon(); +private: + CreatureWeakPtr target_; };