From 80375b14e514adcdd5101855ed5fe633de3a11f7 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 13 Oct 2023 15:55:21 +0800 Subject: [PATCH] 1 --- server/gameserver/team.cc | 22 ++++++++++++++++++++++ server/gameserver/team.h | 2 ++ server/gameserver/team_agent.cc | 13 ++++++++++--- server/gameserver/team_agent.h | 5 +++++ 4 files changed, 39 insertions(+), 3 deletions(-) diff --git a/server/gameserver/team.cc b/server/gameserver/team.cc index 226e9032..6186ea6a 100644 --- a/server/gameserver/team.cc +++ b/server/gameserver/team.cc @@ -521,3 +521,25 @@ void Team::IncKillCount() &room->xtimer_attacher_); } } + +int Team::GetAlivePlayerNum() +{ + int num = 0; + for (Human* member : members_) { + if (member->IsPlayer() && !member->dead) { + ++num; + } + } + return num; +} + +int Team::GetPlayerNum() +{ + int num = 0; + for (Human* member : members_) { + if (member->IsPlayer()) { + ++num; + } + } + return num; +} diff --git a/server/gameserver/team.h b/server/gameserver/team.h index 8e03ceae..b4cffa74 100644 --- a/server/gameserver/team.h +++ b/server/gameserver/team.h @@ -34,6 +34,7 @@ class Team Human* RandomOneAliveMember(Human* exclude_hum); bool HasAliveMember(); int GetAliveNum(); + int GetAlivePlayerNum(); void AddMember(Human* member); bool IsFull(); void CombineBornPoint(); @@ -45,6 +46,7 @@ class Team bool HasReviveCoin(Human* member); bool IsFreeTeam(); bool HasPlayer(); + int GetPlayerNum(); void FillSMGameOver(cs::SMGameOver& msg); void SendTeamBattleReport(Human* sender); void GenBattleReportData(Human* player, a8::MutableXObject* params); diff --git a/server/gameserver/team_agent.cc b/server/gameserver/team_agent.cc index b4cee002..67eef1ab 100644 --- a/server/gameserver/team_agent.cc +++ b/server/gameserver/team_agent.cc @@ -2,6 +2,8 @@ #include "team_agent.h" +#include "team.h" + TeamAgent::TeamAgent():BaseAgent() { @@ -13,15 +15,20 @@ TeamAgent::~TeamAgent() int TeamAgent::GetMemberNum() { - return 0; + return team_->GetMemberNum(); } int TeamAgent::GetPlayerNum() { - return 0; + return team_->GetPlayerNum(); } int TeamAgent::GetAlivePlayerNum() { - return 0; + return team_->GetAlivePlayerNum(); +} + +void TeamAgent::SetTeam(Team* team) +{ + team_ = team; } diff --git a/server/gameserver/team_agent.h b/server/gameserver/team_agent.h index 73f5515c..1a5dc454 100644 --- a/server/gameserver/team_agent.h +++ b/server/gameserver/team_agent.h @@ -2,6 +2,7 @@ #include "new_base_agent.h" +class Team; class TeamAgent : public BaseAgent { public: @@ -14,4 +15,8 @@ public: int GetMemberNum(); int GetPlayerNum(); int GetAlivePlayerNum(); + + void SetTeam(Team* team); +private: + Team* team_ = nullptr; };