From 11ec0e68ca59bdfc5cc3c29b6c076079361f037a Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 7 Nov 2019 10:03:49 +0800 Subject: [PATCH] 1 --- server/gameserver/human.cc | 70 ++++++++++---------------------------- 1 file changed, 18 insertions(+), 52 deletions(-) diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index 5e12d29..f68c17d 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -2363,68 +2363,34 @@ void Human::OnDie() } } } - std::set sent_over_humans; - if (!leave_) { - if (!HasNoDownedTeammate()) { - if (team_members) { - for (auto& member : *team_members) { - if (sent_over_humans.find(member) != sent_over_humans.end()) { - continue; - } - if (member == this) { - member->SendGameOver(); - sent_over_humans.insert(member); - } else { + { + std::set over_humans; + if (!leave_) { + if (!HasNoDownedTeammate()) { + if (team_members) { + for (auto& member : *team_members) { if (member->real_dead) { - member->SendGameOver(); - 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 + over_humans.insert(member); } } + } else { + over_humans.insert(this); } } else { - SendGameOver(); - sent_over_humans.insert(this); - } - } else { - SendGameOver(); - sent_over_humans.insert(this); - } - } - if (room->GetAliveTeamNum() == 1) { - std::set* 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); + over_humans.insert(this); } } - if (alive_team) { - for (Human* member : *alive_team) { - if (sent_over_humans.find(member) == sent_over_humans.end()) { - member->SendGameOver(); - sent_over_humans.insert(member); + if (room->GetAliveTeamNum() == 1) { + std::set* alive_team = room->GetAliveTeam(); + if (alive_team) { + for (Human* member : *alive_team) { + over_humans.insert(member); } } } + for (Human* hum : over_humans) { + hum->SendGameOver(); + } } DeadDrop(); }