This commit is contained in:
aozhiwei 2019-11-07 10:03:49 +08:00
parent aee2a8a5b4
commit 11ec0e68ca

View File

@ -2363,68 +2363,34 @@ void Human::OnDie()
} }
} }
} }
std::set<Human*> sent_over_humans; {
if (!leave_) { std::set<Human*> over_humans;
if (!HasNoDownedTeammate()) { if (!leave_) {
if (team_members) { if (!HasNoDownedTeammate()) {
for (auto& member : *team_members) { if (team_members) {
if (sent_over_humans.find(member) != sent_over_humans.end()) { for (auto& member : *team_members) {
continue;
}
if (member == this) {
member->SendGameOver();
sent_over_humans.insert(member);
} else {
if (member->real_dead) { if (member->real_dead) {
member->SendGameOver(); over_humans.insert(member);
sent_over_humans.insert(member);
} else if (member->downed) {
#if 0
a8::XParams* timer_param = room->xtimer.MutableParams(member->downed_timer);
member->stats.killer_id = timer_param->param1;
member->stats.killer_name = timer_param->param2.GetString();
member->stats.weapon_id = timer_param->param2;
member->dead = true;
member->real_dead = true;
member->health = 0.0f;
member->dead_frameno = room->frame_no;
member->room->OnHumanDie(this);
member->SyncAroundPlayers(__FILE__, __LINE__, __func__);
member->SendGameOver();
if (member->downed_timer) {
room->xtimer.DeleteTimer(member->downed_timer);
}
member->downed_timer = nullptr;
sent_over_humans.insert(member);
#endif
} }
} }
} else {
over_humans.insert(this);
} }
} else { } else {
SendGameOver(); over_humans.insert(this);
sent_over_humans.insert(this);
}
} else {
SendGameOver();
sent_over_humans.insert(this);
}
}
if (room->GetAliveTeamNum() == 1) {
std::set<Human*>* alive_team = room->GetAliveTeam();
if (team_members != alive_team) {
if (sent_over_humans.find(this) == sent_over_humans.end()) {
SendGameOver();
sent_over_humans.insert(this);
} }
} }
if (alive_team) { if (room->GetAliveTeamNum() == 1) {
for (Human* member : *alive_team) { std::set<Human*>* alive_team = room->GetAliveTeam();
if (sent_over_humans.find(member) == sent_over_humans.end()) { if (alive_team) {
member->SendGameOver(); for (Human* member : *alive_team) {
sent_over_humans.insert(member); over_humans.insert(member);
} }
} }
} }
for (Human* hum : over_humans) {
hum->SendGameOver();
}
} }
DeadDrop(); DeadDrop();
} }