This commit is contained in:
azw 2023-03-22 08:35:33 +00:00
parent b9492c8260
commit 55722adecd

View File

@ -251,10 +251,31 @@ void Team::GenBattleReportData(a8::MutableXObject* params)
int pvp_team_kills = 0; int pvp_team_kills = 0;
auto members_pb = a8::MutableXObject::CreateArray(); auto members_pb = a8::MutableXObject::CreateArray();
std::vector<Human*> sorted_members;
TraverseMembers TraverseMembers
( (
[this, members_pb, &pvp_team_kills] (Human* hum) mutable [&sorted_members] (Human* hum) mutable
{ {
sorted_members.push_back(hum);
return true;
}
);
if (room->IsPveRoom()) {
std::sort(sorted_members.begin(), sorted_members.end(),
[] (Human* a, Human* b) -> bool
{
if (a->stats->pve_rank_score > b->stats->pve_rank_score) {
return true;
}
if (a->stats->pve_rank_score < b->stats->pve_rank_score) {
return false;
}
return a->GetUniId() < b->GetUniId();
});
}
int i = 0;
for (Human* hum : sorted_members) {
++i;
pvp_team_kills += hum->stats->kills; pvp_team_kills += hum->stats->kills;
auto member_pb = a8::MutableXObject::CreateObject(); auto member_pb = a8::MutableXObject::CreateObject();
@ -329,7 +350,7 @@ void Team::GenBattleReportData(a8::MutableXObject* params)
member_pb->SetVal("heros", heros); member_pb->SetVal("heros", heros);
} }
if (room->IsPveRoom()) { if (room->IsPveRoom()) {
member_pb->SetVal("pve_order", 0); member_pb->SetVal("pve_order", i);
member_pb->SetVal("pve_score", hum->stats->pve_rank_score); member_pb->SetVal("pve_score", hum->stats->pve_rank_score);
member_pb->SetVal("pve_star", room->pve_mode_meta->CalcStar(hum->stats->pve_rank_score)); member_pb->SetVal("pve_star", room->pve_mode_meta->CalcStar(hum->stats->pve_rank_score));
member_pb->SetVal("pve_damage", hum->stats->damage_amount_out); member_pb->SetVal("pve_damage", hum->stats->damage_amount_out);
@ -349,8 +370,7 @@ void Team::GenBattleReportData(a8::MutableXObject* params)
member_pb->SetVal("pvp_personal_rank", hum->stats->rank); member_pb->SetVal("pvp_personal_rank", hum->stats->rank);
} }
members_pb->Push(*member_pb); members_pb->Push(*member_pb);
return true; };
});
params->SetVal("pvp_team_kills", pvp_team_kills); params->SetVal("pvp_team_kills", pvp_team_kills);
} }