From 1931d8c707174e2414a0adbea913124180ae3b59 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 23 Jul 2019 14:53:35 +0800 Subject: [PATCH] 1 --- server/gameserver/loot.cc | 2 +- server/gameserver/metadata.cc | 11 +++++++++-- server/gameserver/room.cc | 11 ++++++----- server/gameserver/room.h | 2 +- 4 files changed, 17 insertions(+), 9 deletions(-) diff --git a/server/gameserver/loot.cc b/server/gameserver/loot.cc index 482f434..8bdcc28 100644 --- a/server/gameserver/loot.cc +++ b/server/gameserver/loot.cc @@ -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_); } diff --git a/server/gameserver/metadata.cc b/server/gameserver/metadata.cc index 01cebec..355d629 100644 --- a/server/gameserver/metadata.cc +++ b/server/gameserver/metadata.cc @@ -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>& 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() diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index 6dce909..e636628 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -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> 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({loot_id}); } + ((Loot*)entity)->airdrop_point_id = airdrop_point_id; } - ((Loot*)entity)->airdrop_point_id = airdrop_point_id; } } } diff --git a/server/gameserver/room.h b/server/gameserver/room.h index 4bd0a62..9e82b24 100644 --- a/server/gameserver/room.h +++ b/server/gameserver/room.h @@ -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;