From 3aa3594977fe5e9c2cf2a9a1b32b1d7d16f0f8a2 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 26 Apr 2019 17:12:59 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E6=8A=80=E8=83=BD=E8=AF=BB?= =?UTF-8?q?=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/gameserver/metadata.h | 10 ++++++++ server/gameserver/metamgr.cc | 33 +++++++++++++++++++++++++ server/gameserver/metamgr.h | 2 ++ server/tools/protobuild/metatable.proto | 15 ++++++++++- 4 files changed, 59 insertions(+), 1 deletion(-) diff --git a/server/gameserver/metadata.h b/server/gameserver/metadata.h index 03a7589..014b70c 100755 --- a/server/gameserver/metadata.h +++ b/server/gameserver/metadata.h @@ -120,4 +120,14 @@ namespace MetaData void Init(); }; + struct Skill + { + const metatable::Skill* i = nullptr; + }; + + struct Dress + { + const metatable::Dress* i = nullptr; + }; + } diff --git a/server/gameserver/metamgr.cc b/server/gameserver/metamgr.cc index c519259..c5dba78 100755 --- a/server/gameserver/metamgr.cc +++ b/server/gameserver/metamgr.cc @@ -32,6 +32,10 @@ public: std::list airdrop_list; std::list airline_meta_list; std::vector airline_list; + std::list dress_meta_list; + std::list dress_list; + std::list skill_meta_list; + std::list skill_list; std::map parameter_hash; std::map gamemap_hash; @@ -45,6 +49,8 @@ public: std::map drop_hash; std::map> maptpl_meta_hash; std::map> maptpl_hash; + std::map dress_hash; + std::map skill_hash; void Load() { @@ -66,6 +72,8 @@ public: f8::ReadCsvMetaFile(res_path + "airdrop@airdrop.csv", airdrop_meta_list); f8::ReadCsvMetaFile(res_path + "airline@airline.csv", airline_meta_list); f8::ReadJsonMetaFile(res_path + "maps.json", building_meta_list); + f8::ReadCsvMetaFile(res_path + "dress@dress.csv", dress_meta_list); + f8::ReadCsvMetaFile(res_path + "skill@skill.csv", skill_meta_list); BindToMetaData(); #if 1 { @@ -189,6 +197,19 @@ private: building_hash[item.i->_building_id()] = &item; } } + + for (auto& meta : dress_meta_list) { + MetaData::Dress& item = a8::FastAppend(dress_list); + item.i = &meta; + dress_hash[item.i->id()] = &item; + } + + for (auto& meta : skill_meta_list) { + MetaData::Skill& item = a8::FastAppend(skill_list); + item.i = &meta; + skill_hash[item.i->id()] = &item; + } + } private: @@ -300,3 +321,15 @@ MetaData::AirLine* MetaMgr::RandAirLine() } return &loader_->airline_list[rand() % loader_->airline_list.size()]; } + +MetaData::Skill* MetaMgr::GetSkill(int skill_id) +{ + auto itr = loader_->skill_hash.find(skill_id); + return itr != loader_->skill_hash.end() ? itr->second : nullptr; +} + +MetaData::Dress* MetaMgr::GetDress(int dress_id) +{ + auto itr = loader_->dress_hash.find(dress_id); + return itr != loader_->dress_hash.end() ? itr->second : nullptr; +} diff --git a/server/gameserver/metamgr.h b/server/gameserver/metamgr.h index a248ad4..6de7838 100755 --- a/server/gameserver/metamgr.h +++ b/server/gameserver/metamgr.h @@ -30,6 +30,8 @@ class MetaMgr : public a8::Singleton std::vector* GetMapTplThing(std::string& map_name); std::list& GetAirDrops(); MetaData::AirLine* RandAirLine(); + MetaData::Skill* GetSkill(int skill_id); + MetaData::Dress* GetDress(int dress_id); int gas_inactive_time = 10; int jump_time = 10; diff --git a/server/tools/protobuild/metatable.proto b/server/tools/protobuild/metatable.proto index fc63c68..538a63b 100755 --- a/server/tools/protobuild/metatable.proto +++ b/server/tools/protobuild/metatable.proto @@ -85,7 +85,14 @@ message Player message Skill { - optional int32 skill_id = 1; //技能id + optional int32 id = 1; + optional int32 type = 2; + optional int32 condition = 3; + optional float value1 = 4; + optional float value2 = 5; + optional int32 area = 6; + optional int32 cd_time = 7; + optional int32 last_time = 8; } message Drop @@ -114,6 +121,12 @@ message AirLine optional int32 weight = 5; } +message Dress +{ + optional int32 id = 1; + optional int32 skill_id = 2; +} + //end message DoorObjJson