From 88797a0fa63bcd920aa869950947473c258a24e5 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 2 Feb 2024 16:18:17 +0800 Subject: [PATCH] 1 --- server/gameserver/room.cc | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index 390b92b5..0e6e4e77 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -1704,16 +1704,27 @@ bool Room::GenSmallCircle() void Room::MatchTeam(Human* hum) { if (!hum->team_uuid.empty()) { - for (auto& pair : human_hash_) { - if (pair.second != hum) { - if (pair.second->team_uuid == hum->team_uuid) { - if (pair.second->GetTeam() && !pair.second->GetTeam()->IsFull()) { - pair.second->GetTeam()->AddMember(hum); - return; - } - } + { + bool match_ok = false; + TraverseHumanList + ( + [&match_ok, hum] (Human* ele_hum) -> bool + { + if (ele_hum != hum) { + if (ele_hum->team_uuid == hum->team_uuid) { + if (ele_hum->GetTeam() && !ele_hum->GetTeam()->IsFull()) { + ele_hum->GetTeam()->AddMember(hum); + match_ok = true; + return false; + } + } + } + return true; + }); + if (match_ok) { + return; } - }//end for human_hash_ + } if (mt::Param::s().prebattle_combine_team) { if (!hum->GetTeam() && hum->auto_fill && combineable_team_hash_.size() > 1) { for (auto& pair : combineable_team_hash_) {