This commit is contained in:
aozhiwei 2019-07-23 14:53:35 +08:00
parent 0cf4f7651f
commit 1931d8c707
4 changed files with 17 additions and 9 deletions

View File

@ -30,11 +30,11 @@ void Loot::RecalcSelfCollider()
if (!self_collider_) {
self_collider_ = new CircleCollider();
self_collider_->owner = this;
self_collider_->tag = kColliderTag_Loot;
AddCollider(self_collider_);
}
self_collider_->pos = a8::Vec2();
self_collider_->rad = 64.0f / 2.0;
ClearColliders();
room->map_service.AddCollider(self_collider_);
}

View File

@ -42,7 +42,7 @@ namespace MetaData
bool Equip::CanDrop()
{
return i->equip_type() == kEquipType_Bullet && MetaMgr::Instance()->fighting_mode;
return i->equip_type() == kEquipType_Buff && MetaMgr::Instance()->fighting_mode;
}
bool Equip::NeedTrace()
@ -189,7 +189,14 @@ namespace MetaData
void AirDrop::RandItems(std::vector<std::tuple<int, int>>& drop_items)
{
for (auto& tuple : drop_list) {
drop_items.push_back(
std::make_tuple(
std::get<0>(tuple),
std::get<1>(tuple)
)
);
}
}
void Building::Init()

View File

@ -40,7 +40,7 @@ void Room::Init()
xtimer_attacher.xtimer = &xtimer;
frame_event.room = this;
grid_service.Init(map_width, map_height, kMAP_CELL_WIDTH * 8);
map_service.Init(map_width / kMAP_GRID_WIDTH, map_height / kMAP_GRID_WIDTH, kMAP_GRID_WIDTH);
map_service.Init(map_width / kMAP_GRID_WIDTH + 1, map_height / kMAP_GRID_WIDTH + 1, kMAP_GRID_WIDTH);
CreateThings();
if (App::Instance()->HasFlag(1)) {
@ -530,10 +530,10 @@ int Room::CreateLoot(int equip_id, a8::Vec2 pos, int count, int equip_lv)
return -1;
}
Loot* entity = new Loot();
entity->pos = pos;
entity->room = this;
entity->meta = equip_meta;
entity->entity_uniid = AllocUniid();
entity->pos = pos;
#if 1
{
if (entity->pos.x >= map_width) {
@ -1140,14 +1140,15 @@ void Room::InitAirDrop()
void Room::AirDrop(MetaData::AirDrop* air_drop)
{
frame_event.AddAirDrop(air_drop->i->appear_time(), 0, a8::Vec2());
std::vector<std::tuple<int, int>> drop_items;
air_drop->RandItems(drop_items);
for (auto& tuple : drop_items) {
GenDrop(std::get<1>(tuple), std::get<0>(tuple));
GenDrop(air_drop, std::get<1>(tuple), std::get<0>(tuple));
}
}
void Room::GenDrop(int drop_id, int airdrop_point_id)
void Room::GenDrop(MetaData::AirDrop* air_drop, int drop_id, int airdrop_point_id)
{
if (airdrop_hash_.find(airdrop_point_id) != airdrop_hash_.end()) {
return;
@ -1178,8 +1179,8 @@ void Room::GenDrop(int drop_id, int airdrop_point_id)
} else {
airdrop_hash_[airdrop_point_id] = std::set<int>({loot_id});
}
((Loot*)entity)->airdrop_point_id = airdrop_point_id;
}
((Loot*)entity)->airdrop_point_id = airdrop_point_id;
}
}
}

View File

@ -123,7 +123,7 @@ private:
int AllocBornPoint();
void InitAirDrop();
void AirDrop(MetaData::AirDrop* air_drop);
void GenDrop(int drop_id, int airdrop_point_id);
void GenDrop(MetaData::AirDrop* air_drop, int drop_id, int airdrop_point_id);
private:
int elapsed_time_ = 0;