From 39dde6b509b7a44db0dab62b4b60a0700de30e06 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 2 Feb 2024 19:08:11 +0800 Subject: [PATCH] 1 --- server/gameserver/room.cc | 55 +++++++++++++++++++++++++++++++-------- 1 file changed, 44 insertions(+), 11 deletions(-) diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index b42efcee..d854d005 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -303,21 +303,39 @@ bool Room::IsPveRoom() int Room::GetPlayerNum() { - return accountid_hash_.size(); + int num = 0; + if (BattleStarted()) { + num = battle_player_count_; + } else { + TraversePlayerList + ( + [&num] (Player* hum) -> bool + { + if (!hum->IsOb()) { + ++num; + } + return true; + }); + } + return num; } int Room::GetHumanNum() { int num = 0; - TraverseHumanList - ( - [&num] (Human* hum) -> bool - { - if (!hum->IsOb()) { - ++num; - } - return true; - }); + if (BattleStarted()) { + num = battle_human_count_; + } else { + TraverseHumanList + ( + [&num] (Human* hum) -> bool + { + if (!hum->IsOb()) { + ++num; + } + return true; + }); + } return num; } @@ -1036,7 +1054,21 @@ void Room::TraverseRawTeams(std::function cb) int Room::GetTeamNum() { - return team_hash_.size(); + int num = 0; + if (BattleStarted()) { + num = battle_team_count_; + } else { + TraverseTeams + ( + [&num] (Team* team) -> bool + { + if (!team->IsViewTeam()) { + ++num; + } + return true; + }); + } + return num; } bool Room::CanJoin(const std::string& accountid, @@ -2926,6 +2958,7 @@ void Room::ClearPostBattleAutoFreeList() void Room::OnBattleStart() { + battle_start_frameno_ = GetFrameNo(); battle_starting_ = true; std::vector entitys; entitys.reserve(uniid_hash_.size());