From baedbcfc51bb3c16aedecda5408ba96ee7257507 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Mon, 6 May 2019 19:06:45 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9gameover=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/gameserver/human.cc | 8 +++++++- server/gameserver/room.cc | 13 ++++++++++--- server/gameserver/room.h | 1 + 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index 38c3b3e..a672638 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -525,7 +525,13 @@ void Human::BeKill(int killer_id, const std::string& killer_name, int weapon_id) } } if (!HasLiveTeammate()) { - SendGameOver(); + if (team_members) { + for (auto& member : *team_members) { + member->SendGameOver(); + } + } else { + SendGameOver(); + } } } } diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index 0c17c01..3646921 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -820,14 +820,12 @@ void Room::UpdateGas() if (!game_over && alive_count_ <= 1) { game_over = true; game_over_frameno = frame_no; + OnGameOver(); } for (auto& pair : human_hash_) { if (pair.second->dead) { continue; } - if (game_over && game_over_frameno == frame_no) { - pair.second->SendGameOver(); - } bool b1 = CircleContainCircle(gas_data.pos_old, gas_data.gas_progress, pair.second->pos, @@ -1055,3 +1053,12 @@ void Room::AddObjectLater(Entity* entity) add_func, &entity->xtimer_attacher.timer_list_); } + +void Room::OnGameOver() +{ + for (auto& pair : human_hash_) { + if (game_over && game_over_frameno == frame_no) { + pair.second->SendGameOver(); + } + } +} diff --git a/server/gameserver/room.h b/server/gameserver/room.h index b38714c..46319b3 100644 --- a/server/gameserver/room.h +++ b/server/gameserver/room.h @@ -103,6 +103,7 @@ private: Obstacle* InternalCreateObstacle(int id, float x, float y, std::function on_precreate); void AddObjectLater(Entity* entity); + void OnGameOver(); private: timer_list* stats_timer_ = nullptr;