完成爆炸逻辑
This commit is contained in:
parent
af0efac2a5
commit
bc2151140b
@ -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<GridCell*> 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)
|
||||
|
@ -28,7 +28,7 @@ private:
|
||||
::google::protobuf::RepeatedPtrField<::cs::MFAirDrop> airdrops_;
|
||||
std::vector<std::tuple<Human*, ::cs::MFShot>> shots_;
|
||||
std::vector<std::tuple<Human*, ::cs::MFBullet>> bullets_;
|
||||
std::vector<std::tuple<Human*, ::cs::MFExplosion>> explosions_;
|
||||
std::vector<::cs::MFExplosion> explosions_;
|
||||
std::vector<std::tuple<Human*, ::cs::MFSmoke>> smokes_;
|
||||
std::vector<std::tuple<Human*, ::cs::MFEmote>> emotes_;
|
||||
std::vector<std::tuple<Human*, ::cs::MFAddBuff>> add_buffs_;
|
||||
|
@ -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_) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user