添加空投读取
This commit is contained in:
parent
5de5f931d2
commit
2f8844344e
@ -29,6 +29,13 @@ namespace MetaData
|
|||||||
));
|
));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
std::vector<std::string> strings;
|
||||||
|
a8::Split(i->airdrops(), strings, '|');
|
||||||
|
for (auto& str : strings) {
|
||||||
|
airdrops.push_back(a8::XValue(str).GetInt());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string Map::RandTemplate()
|
std::string Map::RandTemplate()
|
||||||
|
@ -22,6 +22,7 @@ namespace MetaData
|
|||||||
|
|
||||||
std::vector<std::tuple<std::string, int>> template_list;
|
std::vector<std::tuple<std::string, int>> template_list;
|
||||||
int rand_space = 0;
|
int rand_space = 0;
|
||||||
|
std::vector<int> airdrops;
|
||||||
|
|
||||||
void Init();
|
void Init();
|
||||||
std::string RandTemplate();
|
std::string RandTemplate();
|
||||||
|
@ -64,6 +64,7 @@ public:
|
|||||||
|
|
||||||
std::map<std::string, MetaData::Parameter*> parameter_hash;
|
std::map<std::string, MetaData::Parameter*> parameter_hash;
|
||||||
std::map<int, MetaData::Map*> gamemap_hash;
|
std::map<int, MetaData::Map*> gamemap_hash;
|
||||||
|
std::map<int, MetaData::AirDrop*> airdrop_hash;
|
||||||
std::map<int, MetaData::SafeArea*> safearea_hash;
|
std::map<int, MetaData::SafeArea*> safearea_hash;
|
||||||
std::map<int, MetaData::Item*> item_hash;
|
std::map<int, MetaData::Item*> item_hash;
|
||||||
std::map<int, MetaData::Equip*> equip_hash;
|
std::map<int, MetaData::Equip*> equip_hash;
|
||||||
@ -500,6 +501,7 @@ private:
|
|||||||
for (auto& meta : airdrop_meta_list) {
|
for (auto& meta : airdrop_meta_list) {
|
||||||
MetaData::AirDrop& item = a8::FastAppend(airdrop_list);
|
MetaData::AirDrop& item = a8::FastAppend(airdrop_list);
|
||||||
item.i = &meta;
|
item.i = &meta;
|
||||||
|
airdrop_hash[meta.id()] = &item;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (auto& meta : airline_meta_list) {
|
for (auto& meta : airline_meta_list) {
|
||||||
@ -716,6 +718,12 @@ std::list<MetaData::AirDrop>& MetaMgr::GetAirDrops()
|
|||||||
return loader_->airdrop_list;
|
return loader_->airdrop_list;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MetaData::AirDrop* MetaMgr::GetAirDrop(int airdrop_id)
|
||||||
|
{
|
||||||
|
auto itr = loader_->airdrop_hash.find(airdrop_id);
|
||||||
|
return itr != loader_->airdrop_hash.end() ? itr->second : nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
MetaData::AirLine* MetaMgr::RandAirLine(int map_id)
|
MetaData::AirLine* MetaMgr::RandAirLine(int map_id)
|
||||||
{
|
{
|
||||||
auto itr = loader_->airline_hash.find(map_id);
|
auto itr = loader_->airline_hash.find(map_id);
|
||||||
|
@ -30,6 +30,7 @@ class MetaMgr : public a8::Singleton<MetaMgr>
|
|||||||
MetaData::SafeArea* GetSafeArea(int area_id);
|
MetaData::SafeArea* GetSafeArea(int area_id);
|
||||||
std::vector<MetaData::MapTplThing>* GetMapTplThing(std::string& map_name);
|
std::vector<MetaData::MapTplThing>* GetMapTplThing(std::string& map_name);
|
||||||
std::list<MetaData::AirDrop>& GetAirDrops();
|
std::list<MetaData::AirDrop>& GetAirDrops();
|
||||||
|
MetaData::AirDrop* GetAirDrop(int airdrop_id);
|
||||||
MetaData::AirLine* RandAirLine(int map_id);
|
MetaData::AirLine* RandAirLine(int map_id);
|
||||||
MetaData::Skill* GetSkill(int skill_id);
|
MetaData::Skill* GetSkill(int skill_id);
|
||||||
MetaData::Buff* GetBuff(int buff_id);
|
MetaData::Buff* GetBuff(int buff_id);
|
||||||
|
@ -1303,6 +1303,28 @@ void Room::CombineTeam()
|
|||||||
|
|
||||||
void Room::InitAirDrop()
|
void Room::InitAirDrop()
|
||||||
{
|
{
|
||||||
|
if (GetRoomMode() == kZombieMode) {
|
||||||
|
for (int airdrop_id : map_meta_->airdrops) {
|
||||||
|
MetaData::AirDrop* airdrop_meta = MetaMgr::Instance()->GetAirDrop(airdrop_id);
|
||||||
|
if (airdrop_meta) {
|
||||||
|
xtimer.AddDeadLineTimerAndAttach
|
||||||
|
(SERVER_FRAME_RATE * airdrop_meta->i->time(),
|
||||||
|
a8::XParams()
|
||||||
|
.SetSender(this)
|
||||||
|
.SetParam1(airdrop_meta->i->appear_time())
|
||||||
|
.SetParam2(airdrop_meta->i->drop_id())
|
||||||
|
.SetParam3(airdrop_meta->i->id()),
|
||||||
|
[] (const a8::XParams& param)
|
||||||
|
{
|
||||||
|
Room* room = (Room*)param.sender.GetUserData();
|
||||||
|
if (!room->IsGameOver()) {
|
||||||
|
room->AirDrop(param.param1, param.param2);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
&xtimer_attacher_.timer_list_);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
std::list<MetaData::AirDrop>& air_drops = MetaMgr::Instance()->GetAirDrops();
|
std::list<MetaData::AirDrop>& air_drops = MetaMgr::Instance()->GetAirDrops();
|
||||||
for (auto& air_drop : air_drops) {
|
for (auto& air_drop : air_drops) {
|
||||||
if (air_drop.i->id() >= 1 && air_drop.i->id() <= 6) {
|
if (air_drop.i->id() >= 1 && air_drop.i->id() <= 6) {
|
||||||
@ -1322,6 +1344,7 @@ void Room::InitAirDrop()
|
|||||||
&xtimer_attacher_.timer_list_);
|
&xtimer_attacher_.timer_list_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Room::AirDrop(int appear_time, int box_id)
|
void Room::AirDrop(int appear_time, int box_id)
|
||||||
|
@ -26,6 +26,8 @@ message Map
|
|||||||
optional string map_name = 3; //地图名
|
optional string map_name = 3; //地图名
|
||||||
optional float map_width = 4;
|
optional float map_width = 4;
|
||||||
optional float map_height = 5;
|
optional float map_height = 5;
|
||||||
|
optional string airdrops = 6;
|
||||||
|
optional int32 terminator_airdrop = 7;
|
||||||
}
|
}
|
||||||
|
|
||||||
message MapThing
|
message MapThing
|
||||||
|
Loading…
x
Reference in New Issue
Block a user