From bc2151140b61503835fd9e7878788d04ea78104c Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 11 Jul 2019 11:01:49 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E7=88=86=E7=82=B8=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/gameserver/frameevent.cc | 14 ++++++++------ server/gameserver/frameevent.h | 2 +- server/gameserver/framemaker.cc | 6 ++---- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/server/gameserver/frameevent.cc b/server/gameserver/frameevent.cc index 7abce9c..c898e66 100644 --- a/server/gameserver/frameevent.cc +++ b/server/gameserver/frameevent.cc @@ -5,6 +5,7 @@ #include "bullet.h" #include "metamgr.h" #include "typeconvert.h" +#include "room.h" void FrameEvent::AddAirDrop(int appear_time, int box_id, a8::Vec2 box_pos) { @@ -86,24 +87,25 @@ void FrameEvent::AddBullet(Human* hum, a8::Vec2 born_pos, a8::Vec2 dir, float fl void FrameEvent::AddExplosion(int item_id, a8::Vec2 bomb_pos, int effect) { - #if 0 { - auto& tuple = a8::FastAppend(explosions_); - std::get<0>(tuple) = bullet->player; - auto& p = std::get<1>(tuple); + auto& p = a8::FastAppend(explosions_); p.set_item_id(item_id); TypeConvert::ToPb(bomb_pos, p.mutable_pos()); + if (effect != 0) { + p.set_effect(effect); + } } { int explosion_idx = explosions_.size() - 1; - for (auto& cell : bullet->player->grid_list) { + std::set grid_list; + room->grid_service.GetAllCellsByXy(bomb_pos.x, bomb_pos.y, grid_list); + for (auto& cell : grid_list) { for (auto& hum : cell->human_list) { hum->explosions_.push_back(explosion_idx); } } } - #endif } void FrameEvent::AddSmoke(Bullet* bullet, int item_id, a8::Vec2 pos) diff --git a/server/gameserver/frameevent.h b/server/gameserver/frameevent.h index a71b7d8..b1ef3d0 100644 --- a/server/gameserver/frameevent.h +++ b/server/gameserver/frameevent.h @@ -28,7 +28,7 @@ private: ::google::protobuf::RepeatedPtrField<::cs::MFAirDrop> airdrops_; std::vector> shots_; std::vector> bullets_; - std::vector> explosions_; + std::vector<::cs::MFExplosion> explosions_; std::vector> smokes_; std::vector> emotes_; std::vector> add_buffs_; diff --git a/server/gameserver/framemaker.cc b/server/gameserver/framemaker.cc index be0feb4..3b49f0b 100644 --- a/server/gameserver/framemaker.cc +++ b/server/gameserver/framemaker.cc @@ -41,10 +41,8 @@ cs::SMUpdate* FrameMaker::MakeUpdateMsg(const Human* hum) } for (int idx : hum->explosions_) { if (idx < room->frame_event.explosions_.size()) { - auto& tuple = room->frame_event.explosions_[idx]; - if (hum->CanSee(std::get<0>(tuple))) { - *msg->add_explosions() = std::get<1>(tuple); - } + auto& p = room->frame_event.explosions_[idx]; + *msg->add_explosions() = p; } } for (int idx : hum->smokes_) {