1
This commit is contained in:
parent
eed14c5cec
commit
5b8ec57bbe
@ -1020,11 +1020,15 @@ bool Room::BattleStarted()
|
||||
int Room::GetAliveTeamNum()
|
||||
{
|
||||
int num = 0;
|
||||
for (auto& pair : team_hash_) {
|
||||
if (!pair.second->IsViewTeam() && pair.second->HasAliveMember()) {
|
||||
++num;
|
||||
}
|
||||
}
|
||||
TraverseTeams
|
||||
(
|
||||
[&num] (Team* ele_team) -> bool
|
||||
{
|
||||
if (!ele_team->IsViewTeam() && ele_team->HasAliveMember()) {
|
||||
++num;
|
||||
}
|
||||
return true;
|
||||
});
|
||||
return num;
|
||||
}
|
||||
|
||||
@ -1183,12 +1187,18 @@ void Room::FillSMUiUpdate(cs::SMUiUpdate& msg)
|
||||
|
||||
Team* Room::GetAliveTeam()
|
||||
{
|
||||
for (auto& pair : team_hash_) {
|
||||
if (!pair.second->IsViewTeam() && pair.second->HasAliveMember()) {
|
||||
return pair.second.get();
|
||||
}
|
||||
}
|
||||
return nullptr;
|
||||
Team* alive_team = nullptr;
|
||||
TraverseTeams
|
||||
(
|
||||
[&alive_team] (Team* ele_team) -> bool
|
||||
{
|
||||
if (!ele_team->IsViewTeam() && ele_team->HasAliveMember()) {
|
||||
alive_team = ele_team;
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
});
|
||||
return alive_team;
|
||||
}
|
||||
|
||||
std::shared_ptr<Team> Room::NewTeam()
|
||||
@ -1624,12 +1634,16 @@ void Room::UpdateGasInactiveMoba()
|
||||
return true;
|
||||
});
|
||||
App::Instance()->verify_set_pos = 0;
|
||||
for (auto& pair : team_hash_) {
|
||||
pair.second->GenBattleUuid();
|
||||
if (pair.second->HasPlayer()) {
|
||||
batch_sync_->AddTeam(pair.second.get());
|
||||
}
|
||||
}
|
||||
TraverseTeams
|
||||
(
|
||||
[this] (Team* ele_team) -> bool
|
||||
{
|
||||
ele_team->GenBattleUuid();
|
||||
if (ele_team->HasPlayer()) {
|
||||
batch_sync_->AddTeam(ele_team);
|
||||
}
|
||||
return true;
|
||||
});
|
||||
#else
|
||||
CombineTeam();
|
||||
FillTeam();
|
||||
@ -1829,25 +1843,29 @@ void Room::CombineTeam()
|
||||
|
||||
int first_team_id = 0;
|
||||
int total_count = 0;
|
||||
for (auto& pair : team_hash_) {
|
||||
auto team = pair.second;
|
||||
if (!team->AllIsRunAway()) {
|
||||
team->TraverseMembers
|
||||
(
|
||||
[this, team, &first_team_id, &total_count, &need_combine_teams] (Human* member) -> bool
|
||||
{
|
||||
if (member->auto_fill && !member->team_uuid.empty()) {
|
||||
if (first_team_id == 0) {
|
||||
first_team_id = team->GetTeamId();
|
||||
}
|
||||
need_combine_teams[team->GetTeamId()] = team->GetMemberNum();
|
||||
total_count += team->GetMemberNum();
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
});
|
||||
}
|
||||
}
|
||||
TraverseTeams
|
||||
(
|
||||
[&need_combine_teams, &need_combine_teams_copy, &first_team_id, &total_count]
|
||||
(Team* ele_team) -> bool
|
||||
{
|
||||
if (!ele_team->AllIsRunAway()) {
|
||||
ele_team->TraverseMembers
|
||||
(
|
||||
[ele_team, &first_team_id, &total_count, &need_combine_teams] (Human* member) -> bool
|
||||
{
|
||||
if (member->auto_fill && !member->team_uuid.empty()) {
|
||||
if (first_team_id == 0) {
|
||||
first_team_id = ele_team->GetTeamId();
|
||||
}
|
||||
need_combine_teams[ele_team->GetTeamId()] = ele_team->GetMemberNum();
|
||||
total_count += ele_team->GetMemberNum();
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
});
|
||||
}
|
||||
return true;
|
||||
});
|
||||
|
||||
if (total_count <= 1) {
|
||||
return;
|
||||
@ -1920,8 +1938,8 @@ void Room::CombineTeam()
|
||||
if (pair1.second + pair2.second <= GetMaxTeamNum()) {
|
||||
int new_team_num = pair1.second + pair2.second;
|
||||
{
|
||||
std::shared_ptr<Team> team1 = team_hash_[team_id1];
|
||||
std::shared_ptr<Team> team2 = team_hash_[team_id2];
|
||||
std::shared_ptr<Team> team1 = team_hash_.at(team_id1);
|
||||
std::shared_ptr<Team> team2 = team_hash_.at(team_id2);
|
||||
if (team1->GetMemberNum() + team2->GetMemberNum() > GetMaxTeamNum()) {
|
||||
f8::UdpLog::Instance()->Warning("team_member > 4 :%d",
|
||||
{
|
||||
@ -1994,11 +2012,15 @@ void Room::CombineTeam()
|
||||
void Room::FillTeam()
|
||||
{
|
||||
std::vector<std::shared_ptr<Team>> free_team_list;
|
||||
for (auto& pair : team_hash_) {
|
||||
if (pair.second->IsFreeTeam()) {
|
||||
free_team_list.push_back(pair.second);
|
||||
}
|
||||
}
|
||||
TraverseTeams
|
||||
(
|
||||
[] (Team* ele_team) -> bool
|
||||
{
|
||||
if (ele_team->IsFreeTeam()) {
|
||||
free_team_list.push_back(ele_team);
|
||||
}
|
||||
return true;
|
||||
});
|
||||
std::random_shuffle(free_team_list.begin(), free_team_list.end());
|
||||
for (auto& pair : accountid_hash_) {
|
||||
if (free_team_list.empty()) {
|
||||
@ -2027,12 +2049,16 @@ void Room::FillTeam()
|
||||
}
|
||||
}
|
||||
}
|
||||
for (auto& pair : team_hash_) {
|
||||
pair.second->GenBattleUuid();
|
||||
if (pair.second->HasPlayer()) {
|
||||
batch_sync_->AddTeam(pair.second.get());
|
||||
}
|
||||
}
|
||||
TraverseTeams
|
||||
(
|
||||
[this] (Team* ele_team) -> bool
|
||||
{
|
||||
ele_team->GenBattleUuid();
|
||||
if (ele_team->HasPlayer()) {
|
||||
batch_sync_->AddTeam(ele_team.get());
|
||||
}
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
void Room::ShuaPlane()
|
||||
|
Loading…
x
Reference in New Issue
Block a user