修复匹配到5个人问题

This commit is contained in:
aozhiwei 2020-04-22 16:44:48 +08:00
parent 724dc3ab72
commit d984b10cc4

View File

@ -1298,6 +1298,10 @@ void Room::CombineTeam()
need_combine_teams_copy.erase(team_id1); need_combine_teams_copy.erase(team_id1);
} else { } else {
pair1.second = new_team_num; pair1.second = new_team_num;
if (need_combine_teams_copy.find(pair1.first) !=
need_combine_teams_copy.end()) {
need_combine_teams_copy[pair1.first] = new_team_num;
}
} }
need_combine_teams.erase(team_id2); need_combine_teams.erase(team_id2);
need_combine_teams_copy.erase(team_id2); need_combine_teams_copy.erase(team_id2);
@ -1308,6 +1312,10 @@ void Room::CombineTeam()
need_combine_teams_copy.erase(team_id1); need_combine_teams_copy.erase(team_id1);
} else { } else {
pair1.second = new_team_num; pair1.second = new_team_num;
if (need_combine_teams_copy.find(pair1.first) !=
need_combine_teams_copy.end()) {
need_combine_teams_copy[pair1.first] = new_team_num;
}
} }
need_combine_teams.erase(team_id2); need_combine_teams.erase(team_id2);
need_combine_teams_copy.erase(team_id2); need_combine_teams_copy.erase(team_id2);
@ -1317,6 +1325,10 @@ void Room::CombineTeam()
need_combine_teams_copy.erase(team_id2); need_combine_teams_copy.erase(team_id2);
} else { } else {
pair2.second = new_team_num; pair2.second = new_team_num;
if (need_combine_teams.find(pair2.first) !=
need_combine_teams.end()) {
need_combine_teams[pair2.first] = new_team_num;
}
} }
need_combine_teams.erase(team_id1); need_combine_teams.erase(team_id1);
need_combine_teams_copy.erase(team_id1); need_combine_teams_copy.erase(team_id1);
@ -1748,9 +1760,6 @@ void Room::SecondRandPoint()
hum->born_point = AllocBornPoint(hum); hum->born_point = AllocBornPoint(hum);
} }
for (auto& pair : team_hash_) { for (auto& pair : team_hash_) {
if (pair.second.size() < 2) {
continue;
}
Human* target = nullptr; Human* target = nullptr;
for (Human* hum : pair.second) { for (Human* hum : pair.second) {
if (!target) { if (!target) {
@ -1761,18 +1770,20 @@ void Room::SecondRandPoint()
DecBornPointHumanNum(hum->born_point, hum); DecBornPointHumanNum(hum->born_point, hum);
} }
hum->born_point = target->born_point; hum->born_point = target->born_point;
if (!hum->born_point) { if (hum->born_point) {
hum->SetX(DEFAULT_BORN_POINT_X + rand() % 100);
hum->SetY(DEFAULT_BORN_POINT_Y + rand() % 200);
} else {
IncBornPointHumanNum(hum->born_point, hum); IncBornPointHumanNum(hum->born_point, hum);
hum->SetPos(hum->born_point->RandPoint());
} }
hum->FindLocation();
hum->RefreshView();
grid_service.MoveHuman(hum);
} }
} //end if
if (!hum->born_point) {
hum->SetX(DEFAULT_BORN_POINT_X + rand() % 100);
hum->SetY(DEFAULT_BORN_POINT_Y + rand() % 200);
} else {
hum->SetPos(hum->born_point->RandPoint());
} }
hum->FindLocation();
hum->RefreshView();
grid_service.MoveHuman(hum);
} }
} }
} }