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; };