添加延迟掉落
This commit is contained in:
parent
807925f7af
commit
25aa362f46
@ -7,12 +7,13 @@
|
|||||||
#include "typeconvert.h"
|
#include "typeconvert.h"
|
||||||
#include "room.h"
|
#include "room.h"
|
||||||
|
|
||||||
void FrameEvent::AddAirDrop(int appear_time, int box_id, a8::Vec2 box_pos)
|
void FrameEvent::AddAirDrop(int appear_time, std::vector<a8::Vec2>& pos_list)
|
||||||
{
|
{
|
||||||
cs::MFAirDrop* airdrop = airdrops_.Add();
|
cs::MFAirDrop* airdrop = airdrops_.Add();
|
||||||
airdrop->set_appear_time(appear_time);
|
airdrop->set_appear_time(appear_time);
|
||||||
airdrop->set_box_id(box_id);
|
for (auto& pos : pos_list) {
|
||||||
TypeConvert::ToPb(box_pos, airdrop->mutable_pos());
|
TypeConvert::ToPb(pos, airdrop->add_pos_list());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void FrameEvent::AddEmote(Human* hum, int emote_id)
|
void FrameEvent::AddEmote(Human* hum, int emote_id)
|
||||||
|
@ -12,7 +12,7 @@ public:
|
|||||||
Room* room = nullptr;
|
Room* room = nullptr;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void AddAirDrop(int appear_time, int box_id, a8::Vec2 box_pos);
|
void AddAirDrop(int appear_time, std::vector<a8::Vec2>& pos_list);
|
||||||
void AddEmote(Human* hum, int emote_id);
|
void AddEmote(Human* hum, int emote_id);
|
||||||
void AddShot(Human* hum);
|
void AddShot(Human* hum);
|
||||||
void AddBullet(Human* hum, int bullet_id, int bullet_lv, a8::Vec2 born_pos, a8::Vec2 dir,
|
void AddBullet(Human* hum, int bullet_id, int bullet_lv, a8::Vec2 born_pos, a8::Vec2 dir,
|
||||||
|
@ -1135,12 +1135,43 @@ void Room::InitAirDrop()
|
|||||||
|
|
||||||
void Room::AirDrop(MetaData::AirDrop* air_drop)
|
void Room::AirDrop(MetaData::AirDrop* air_drop)
|
||||||
{
|
{
|
||||||
frame_event.AddAirDrop(air_drop->i->appear_time(), 0, a8::Vec2());
|
auto gen_func =
|
||||||
|
[] (const a8::XParams& param) {
|
||||||
|
Room* room = (Room*)param.sender.GetUserData();
|
||||||
|
MetaData::AirDrop* air_drop = (MetaData::AirDrop*)param.param1.GetUserData();
|
||||||
|
std::vector<std::tuple<int, int>> drop_items;
|
||||||
|
air_drop->RandItems(drop_items);
|
||||||
|
for (auto& tuple : drop_items) {
|
||||||
|
room->GenDrop(air_drop, std::get<1>(tuple), std::get<0>(tuple));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
std::vector<a8::Vec2> pos_list;
|
||||||
std::vector<std::tuple<int, int>> drop_items;
|
std::vector<std::tuple<int, int>> drop_items;
|
||||||
air_drop->RandItems(drop_items);
|
air_drop->RandItems(drop_items);
|
||||||
for (auto& tuple : drop_items) {
|
for (auto& tuple : drop_items) {
|
||||||
GenDrop(air_drop, std::get<1>(tuple), std::get<0>(tuple));
|
int drop_id = std::get<1>(tuple);
|
||||||
|
int airdrop_point_id = std::get<0>(tuple);
|
||||||
|
if (airdrop_hash_.find(airdrop_point_id) == airdrop_hash_.end()) {
|
||||||
|
MetaData::MapTplThing* point_meta = MetaMgr::Instance()->GetMapAirDropPoint(map_tpl_name,
|
||||||
|
airdrop_point_id);
|
||||||
|
MetaData::Drop* drop_meta = MetaMgr::Instance()->GetDrop(drop_id);
|
||||||
|
if (point_meta && drop_meta) {
|
||||||
|
pos_list.push_back(a8::Vec2(
|
||||||
|
point_meta->i->x(),
|
||||||
|
point_meta->i->y()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
frame_event.AddAirDrop(air_drop->i->appear_time(), pos_list);
|
||||||
|
xtimer.AddDeadLineTimerAndAttach(air_drop->i->appear_time() / kFRAME_RATE_MS,
|
||||||
|
a8::XParams()
|
||||||
|
.SetSender(this)
|
||||||
|
.SetParam1(air_drop),
|
||||||
|
gen_func,
|
||||||
|
&xtimer_attacher.timer_list_);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Room::GenDrop(MetaData::AirDrop* air_drop, int drop_id, int airdrop_point_id)
|
void Room::GenDrop(MetaData::AirDrop* air_drop, int drop_id, int airdrop_point_id)
|
||||||
|
@ -560,8 +560,7 @@ message MFPlayerBattlingStats
|
|||||||
message MFAirDrop
|
message MFAirDrop
|
||||||
{
|
{
|
||||||
optional int32 appear_time = 1; //箱子出现时间(毫秒)
|
optional int32 appear_time = 1; //箱子出现时间(毫秒)
|
||||||
optional int32 box_id = 2; //箱子id
|
repeated MFVec2 pos_list = 3; //位置列表
|
||||||
optional MFVec2 pos = 3; //位置
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//buff
|
//buff
|
||||||
|
Loading…
x
Reference in New Issue
Block a user