From 3f1338cc7f3b944ef7785cba63f7a4fbe15508bb Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Sat, 14 Oct 2023 16:24:56 +0800 Subject: [PATCH] 1 --- server/gameserver/team.cc | 16 ++++++++++++++++ server/gameserver/team.h | 4 ++++ server/gameserver/team_agent.cc | 5 +++++ server/gameserver/team_agent.h | 3 +++ 4 files changed, 28 insertions(+) diff --git a/server/gameserver/team.cc b/server/gameserver/team.cc index 6186ea6a..92af4908 100644 --- a/server/gameserver/team.cc +++ b/server/gameserver/team.cc @@ -1,6 +1,9 @@ #include "precompile.h" #include + +#include + #include "team.h" #include "human.h" @@ -12,6 +15,7 @@ #include "jsondatamgr.h" #include "httpproxy.h" #include "roommgr.h" +#include "team_agent.h" #include "mt/Param.h" #include "mt/Map.h" @@ -20,6 +24,18 @@ #include "mt/PveGeminiMode.h" #include "mt/PveGeminiContent.h" +Team::Team() +{ + team_agent_ = behaviac::Agent::Create(); + team_agent_->SetTeam(this); +} + +Team::~Team() +{ + f8::BtMgr::Instance()->BtDestory(team_agent_); + team_agent_ = nullptr; +} + void Team::TraverseMembers(std::function func) { for (Human* member : members_) { diff --git a/server/gameserver/team.h b/server/gameserver/team.h index b4cffa74..81f7e437 100644 --- a/server/gameserver/team.h +++ b/server/gameserver/team.h @@ -12,6 +12,7 @@ namespace a8 class Room; class Human; +class TeamAgent; class Team { public: @@ -22,6 +23,8 @@ class Team bool sending_battlereport = false; bool already_report_battle = false; + Team(); + ~Team(); void SetInitTeamMemberNum(int init_num) { init_team_member_num_ = init_num; }; void SetAutoFill(bool auto_fill) { auto_fill_ = auto_fill; }; bool IsAutoFill() { return auto_fill_; }; @@ -68,4 +71,5 @@ class Team bool auto_fill_ = false; int kill_count_ = 0; long long last_kill_frameno_ = 0; + TeamAgent* team_agent_ = nullptr; }; diff --git a/server/gameserver/team_agent.cc b/server/gameserver/team_agent.cc index 67eef1ab..01815190 100644 --- a/server/gameserver/team_agent.cc +++ b/server/gameserver/team_agent.cc @@ -32,3 +32,8 @@ void TeamAgent::SetTeam(Team* team) { team_ = team; } + +Room* TeamAgent::GetRoom() +{ + return team_->room; +} diff --git a/server/gameserver/team_agent.h b/server/gameserver/team_agent.h index 1a5dc454..63f9ef12 100644 --- a/server/gameserver/team_agent.h +++ b/server/gameserver/team_agent.h @@ -2,6 +2,7 @@ #include "new_base_agent.h" +class Room; class Team; class TeamAgent : public BaseAgent { @@ -17,6 +18,8 @@ public: int GetAlivePlayerNum(); void SetTeam(Team* team); + Room* GetRoom(); + private: Team* team_ = nullptr; };