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