This commit is contained in:
aozhiwei 2019-09-09 14:27:40 +08:00
parent d71c620ff4
commit 71d32c05a2
5 changed files with 22 additions and 7 deletions

View File

@ -4,7 +4,7 @@ cmake_minimum_required(VERSION 2.8)
set(GAME_ID 2001)
set(CMAKE_BUILD_TYPE "Debug")
set(CMAKE_BUILD_TYPE "Release")
#set(CMAKE_BUILD_TYPE "Release")
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -g -std=gnu++11 -DGAME_ID=${GAME_ID}")
set(CMAKE_CXX_FLAGS_DEBUG "-Wall -g -std=gnu++11 -DGAME_ID=${GAME_ID}")

View File

@ -70,6 +70,7 @@ public:
std::map<int, MetaData::KillPoint*> killpoint_hash;
std::map<int, MetaData::EquipUpgrade*> equipupgrade_hash;
std::map<int, MetaData::Robot*> robot_hash;
std::map<int, std::vector<MetaData::AirLine*>> airline_hash;
void Load()
{
@ -231,6 +232,14 @@ private:
MetaData::AirLine& item = a8::FastAppend(airline_list);
item.i = &meta;
item.Init();
{
auto itr = airline_hash.find(item.i->map_id());
if (itr != airline_hash.end()) {
itr->second.push_back(&item);
} else {
airline_hash[item.i->map_id()] = std::vector<MetaData::AirLine*>({&item});
}
}
}
{
@ -402,12 +411,14 @@ std::list<MetaData::AirDrop>& MetaMgr::GetAirDrops()
return loader_->airdrop_list;
}
MetaData::AirLine* MetaMgr::RandAirLine()
MetaData::AirLine* MetaMgr::RandAirLine(int map_id)
{
if (loader_->airline_list.empty()) {
abort();
auto itr = loader_->airline_hash.find(map_id);
if (itr != loader_->airline_hash.end()) {
return !itr->second.empty() ? itr->second.at(rand() % itr->second.size()) : nullptr;
} else {
return nullptr;
}
return &loader_->airline_list[rand() % loader_->airline_list.size()];
}
MetaData::Skill* MetaMgr::GetSkill(int skill_id)

View File

@ -30,7 +30,7 @@ class MetaMgr : public a8::Singleton<MetaMgr>
MetaData::SafeArea* GetSafeArea(int area_id);
std::vector<MetaData::MapTplThing>* GetMapTplThing(std::string& map_name);
std::list<MetaData::AirDrop>& GetAirDrops();
MetaData::AirLine* RandAirLine();
MetaData::AirLine* RandAirLine(int map_id);
MetaData::Skill* GetSkill(int skill_id);
MetaData::Dress* GetDress(int dress_id);
float GetRankRewardParam(int rank);

View File

@ -1312,7 +1312,10 @@ void Room::AirDrop(int appear_time, int box_id)
void Room::ShuaPlane()
{
airline_ = MetaMgr::Instance()->RandAirLine();
airline_ = MetaMgr::Instance()->RandAirLine(map_meta->i->map_id());
if (!airline_) {
abort();
}
plane.start_point = a8::Vec2(airline_->start_point_x, airline_->start_point_y);
plane.end_point = a8::Vec2(airline_->end_point_x, airline_->end_point_y);
plane.dir = plane.end_point - plane.start_point;

View File

@ -152,6 +152,7 @@ message AirLine
optional string end_point = 3;
optional float plane_speed = 4;
optional int32 weight = 5;
optional int32 map_id = 6;
}
message Dress