From b79c58cf300f51b9683a1986cc94737029d48780 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Sat, 14 Oct 2023 21:30:27 +0800 Subject: [PATCH] 1 --- server/gameserver/new_hero_agent.cc | 5 ++++- server/gameserver/room_agent.h | 2 +- server/gameserver/target_agent.cc | 10 ++++++++++ server/gameserver/target_agent.h | 4 ++++ 4 files changed, 19 insertions(+), 2 deletions(-) diff --git a/server/gameserver/new_hero_agent.cc b/server/gameserver/new_hero_agent.cc index 14efbb53..d258df25 100644 --- a/server/gameserver/new_hero_agent.cc +++ b/server/gameserver/new_hero_agent.cc @@ -23,11 +23,13 @@ HeroAgent::HeroAgent():BaseAgent() { - + current_target_agent = behaviac::Agent::Create(); } HeroAgent::~HeroAgent() { + f8::BtMgr::Instance()->BtDestory(current_target_agent); + current_target_agent = nullptr; } void HeroAgent::Exec() @@ -48,6 +50,7 @@ void HeroAgent::Exec() void HeroAgent::SetOwner(Creature* owner) { owner_ = owner; + current_target_agent->SetOwner(owner_); room_agent = owner_->room->GetRoomAgent(); team_agent = owner_->GetTeam()->GetTeamAgent(); } diff --git a/server/gameserver/room_agent.h b/server/gameserver/room_agent.h index 9cf31a8e..b89a8580 100644 --- a/server/gameserver/room_agent.h +++ b/server/gameserver/room_agent.h @@ -24,7 +24,7 @@ public: bool IsGameOver(); void SetRoom(Room* room) { room_ = room; } - virtual Room* GetRoom() { return room_; } + virtual Room* GetRoom() override { return room_; } private: Room* room_ = nullptr; diff --git a/server/gameserver/target_agent.cc b/server/gameserver/target_agent.cc index ef42ee23..f61e6482 100644 --- a/server/gameserver/target_agent.cc +++ b/server/gameserver/target_agent.cc @@ -75,3 +75,13 @@ void TargetAgent::Abandon() { target_.Reset(); } + +void TargetAgent::SetOwner(Creature* owner) +{ + owner_ = owner; +} + +Room* TargetAgent::GetRoom() +{ + return owner_->room; +} diff --git a/server/gameserver/target_agent.h b/server/gameserver/target_agent.h index 230b048c..0c55d3e6 100644 --- a/server/gameserver/target_agent.h +++ b/server/gameserver/target_agent.h @@ -23,6 +23,10 @@ public: int GetLevel(); void Abandon(); + void SetOwner(Creature* owner); + virtual Room* GetRoom() override; + private: CreatureWeakPtr target_; + Creature* owner_ = nullptr; };