完成爆炸逻辑
This commit is contained in:
parent
af0efac2a5
commit
bc2151140b
@ -5,6 +5,7 @@
|
|||||||
#include "bullet.h"
|
#include "bullet.h"
|
||||||
#include "metamgr.h"
|
#include "metamgr.h"
|
||||||
#include "typeconvert.h"
|
#include "typeconvert.h"
|
||||||
|
#include "room.h"
|
||||||
|
|
||||||
void FrameEvent::AddAirDrop(int appear_time, int box_id, a8::Vec2 box_pos)
|
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)
|
void FrameEvent::AddExplosion(int item_id, a8::Vec2 bomb_pos, int effect)
|
||||||
{
|
{
|
||||||
#if 0
|
|
||||||
{
|
{
|
||||||
auto& tuple = a8::FastAppend(explosions_);
|
auto& p = a8::FastAppend(explosions_);
|
||||||
std::get<0>(tuple) = bullet->player;
|
|
||||||
auto& p = std::get<1>(tuple);
|
|
||||||
|
|
||||||
p.set_item_id(item_id);
|
p.set_item_id(item_id);
|
||||||
TypeConvert::ToPb(bomb_pos, p.mutable_pos());
|
TypeConvert::ToPb(bomb_pos, p.mutable_pos());
|
||||||
|
if (effect != 0) {
|
||||||
|
p.set_effect(effect);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
int explosion_idx = explosions_.size() - 1;
|
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) {
|
for (auto& hum : cell->human_list) {
|
||||||
hum->explosions_.push_back(explosion_idx);
|
hum->explosions_.push_back(explosion_idx);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void FrameEvent::AddSmoke(Bullet* bullet, int item_id, a8::Vec2 pos)
|
void FrameEvent::AddSmoke(Bullet* bullet, int item_id, a8::Vec2 pos)
|
||||||
|
@ -28,7 +28,7 @@ private:
|
|||||||
::google::protobuf::RepeatedPtrField<::cs::MFAirDrop> airdrops_;
|
::google::protobuf::RepeatedPtrField<::cs::MFAirDrop> airdrops_;
|
||||||
std::vector<std::tuple<Human*, ::cs::MFShot>> shots_;
|
std::vector<std::tuple<Human*, ::cs::MFShot>> shots_;
|
||||||
std::vector<std::tuple<Human*, ::cs::MFBullet>> bullets_;
|
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::MFSmoke>> smokes_;
|
||||||
std::vector<std::tuple<Human*, ::cs::MFEmote>> emotes_;
|
std::vector<std::tuple<Human*, ::cs::MFEmote>> emotes_;
|
||||||
std::vector<std::tuple<Human*, ::cs::MFAddBuff>> add_buffs_;
|
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_) {
|
for (int idx : hum->explosions_) {
|
||||||
if (idx < room->frame_event.explosions_.size()) {
|
if (idx < room->frame_event.explosions_.size()) {
|
||||||
auto& tuple = room->frame_event.explosions_[idx];
|
auto& p = room->frame_event.explosions_[idx];
|
||||||
if (hum->CanSee(std::get<0>(tuple))) {
|
*msg->add_explosions() = p;
|
||||||
*msg->add_explosions() = std::get<1>(tuple);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (int idx : hum->smokes_) {
|
for (int idx : hum->smokes_) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user