From a22e67c927b7e25faefee51e1df5eab93e87a28c Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 25 Mar 2021 17:13:46 +0800 Subject: [PATCH] 1 --- server/gameserver/metamgr.cc | 37 ++++++++++++++++++++++++++---------- 1 file changed, 27 insertions(+), 10 deletions(-) diff --git a/server/gameserver/metamgr.cc b/server/gameserver/metamgr.cc index 47fa777..66517b3 100755 --- a/server/gameserver/metamgr.cc +++ b/server/gameserver/metamgr.cc @@ -63,6 +63,7 @@ public: std::list ai_meta_list; std::list ai_list; std::list text_meta_list; + std::list terrain_meta_list; std::map parameter_hash; std::map gamemap_hash; @@ -76,7 +77,6 @@ public: std::map building_hash; std::map drop_hash; std::map> maptpl_meta_hash; - std::map terrain_meta_hash; std::map> layer_meta_hash; std::map> maptpl_hash; std::map dress_hash; @@ -143,6 +143,7 @@ public: f8::ReadCsvMetaFile(res_path + "robot@robot.csv", robot_meta_list); f8::ReadCsvMetaFile(res_path + "ai@ai.csv", ai_meta_list); f8::ReadCsvMetaFile(res_path + "text@text.csv", text_meta_list); + f8::ReadJsonMetaFile(res_path + "terrain.json", terrain_meta_list); BindToMetaData(); #if 1 { @@ -445,14 +446,26 @@ private: #if 1 { for (auto& tuple : item.template_list) { - auto itr = maptpl_meta_hash.find(std::get<0>(tuple)); - if (itr == maptpl_meta_hash.end()) { - maptpl_meta_hash[std::get<0>(tuple)] = std::list(); - itr = maptpl_meta_hash.find(std::get<0>(tuple)); - } else { - itr->second.clear(); + { + auto itr = maptpl_meta_hash.find(std::get<0>(tuple)); + if (itr == maptpl_meta_hash.end()) { + maptpl_meta_hash[std::get<0>(tuple)] = std::list(); + itr = maptpl_meta_hash.find(std::get<0>(tuple)); + } else { + itr->second.clear(); + } + f8::ReadJsonMetaFile(res_path + std::get<0>(tuple) + ".json", itr->second); + } + { + auto itr = layer_meta_hash.find(std::get<0>(tuple)); + if (itr == layer_meta_hash.end()) { + layer_meta_hash[std::get<0>(tuple)] = std::list(); + itr = layer_meta_hash.find(std::get<0>(tuple)); + } else { + itr->second.clear(); + } + f8::ReadJsonMetaFile(res_path + std::get<0>(tuple) + ".layers.json", itr->second); } - f8::ReadJsonMetaFile(res_path + std::get<0>(tuple) + ".json", itr->second); } } #endif @@ -742,8 +755,12 @@ std::vector* MetaMgr::GetMapTplThing(std::string& map_nam metatable::TerrainJson* MetaMgr::GetTerrainJson(int map_id) { - auto itr = loader_->terrain_meta_hash.find(map_id); - return itr != loader_->terrain_meta_hash.end() ? &itr->second : nullptr; + for (auto& itr : loader_->terrain_meta_list) { + if (itr.map_id() == map_id) { + return &itr; + } + } + return nullptr; } std::list* MetaMgr::GetMapLayer(std::string& map_name)