diff --git a/server/gameserver/metamgr.cc b/server/gameserver/metamgr.cc index b8ac748..6d9bfff 100755 --- a/server/gameserver/metamgr.cc +++ b/server/gameserver/metamgr.cc @@ -15,6 +15,8 @@ public: std::list parameter_list; std::list map_meta_list; std::list map_list; + std::list snake_meta_list; + std::list snake_list; std::list rankreward_meta_list; std::list rankreward_list; std::list killreward_meta_list; @@ -28,6 +30,7 @@ public: std::map parameter_hash; std::map gamemap_hash; + std::map snake_hash; std::map rankreward_hash; std::map killreward_hash; std::map rankpoint_hash; @@ -53,6 +56,7 @@ public: f8::ReadCsvMetaFile(res_path + "parameter@parameter.csv", parameter_meta_list); f8::ReadCsvMetaFile(res_path + "map@map.csv", map_meta_list); + f8::ReadCsvMetaFile(res_path + "snake@snake.csv", snake_meta_list); f8::ReadCsvMetaFile(res_path + "rankReward@rankReward.csv", rankreward_meta_list); f8::ReadCsvMetaFile(res_path + "killReward@killReward.csv", killreward_meta_list); f8::ReadCsvMetaFile(res_path + "killPoint@killPoint.csv", killpoint_meta_list); @@ -100,6 +104,15 @@ private: } } + { + for (auto& meta : snake_meta_list) { + MetaData::Snake& item = a8::FastAppend(snake_list); + item.p = &meta; + item.Init(); + snake_hash[item.p->snake_id()] = &item; + } + } + for (auto& meta : rankreward_meta_list) { MetaData::RankReward& item = a8::FastAppend(rankreward_list); item.p = &meta; @@ -182,6 +195,12 @@ MetaData::Map* MetaMgr::GetMap(int map_id) return itr != loader_->gamemap_hash.end() ? itr->second : nullptr; } +MetaData::Snake* MetaMgr::GetSnake(int snake_id) +{ + auto itr = loader_->snake_hash.find(snake_id); + return itr != loader_->snake_hash.end() ? itr->second : nullptr; +} + float MetaMgr::GetRankRewardParam(int rank) { auto itr = loader_->rankreward_hash.find(rank); diff --git a/server/gameserver/metamgr.h b/server/gameserver/metamgr.h index 2457d7b..979901d 100755 --- a/server/gameserver/metamgr.h +++ b/server/gameserver/metamgr.h @@ -20,6 +20,7 @@ class MetaMgr : public a8::Singleton double GetSysParamAsFloat(const std::string& param_name, double def_val = 0.0f); std::string GetSysParamAsString(const std::string& param_name, const char* def_val = ""); MetaData::Map* GetMap(int map_id); + MetaData::Snake* GetSnake(int snake_id); float GetRankRewardParam(int rank); float GetKillRewardParam(int kill_num); int GetRankPointParam1(int rank); diff --git a/server/tools/protobuild/metatable.proto b/server/tools/protobuild/metatable.proto index f4e3270..3a9ebd7 100755 --- a/server/tools/protobuild/metatable.proto +++ b/server/tools/protobuild/metatable.proto @@ -14,7 +14,8 @@ message Parameter message Snake { - optional float radius = 1; + optional int32 snake_id = 100; + optional float init_radius = 1; optional float interval = 2; optional float speed_normal = 3; optional float level_of_accelation = 4; @@ -29,7 +30,7 @@ message Snake optional float attenuation_interval = 13; optional float single_value = 14; optional float stop_accelation = 15; - optional int32 body_num = 16; + optional int32 init_body_size = 16; optional int32 begin_length = 17; optional float body_index = 18; optional float max_body = 19;