From 49537b8837dfccbe4e6bf41d75530c39f8200268 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 16 Apr 2019 16:27:14 +0800 Subject: [PATCH] add param read --- server/gameserver/metadata.cc | 6 ++++++ server/gameserver/metadata.h | 6 ++++++ server/gameserver/metamgr.cc | 17 +++++++++++++++-- server/gameserver/metamgr.h | 4 +++- 4 files changed, 30 insertions(+), 3 deletions(-) diff --git a/server/gameserver/metadata.cc b/server/gameserver/metadata.cc index 0d97d26..39b825e 100644 --- a/server/gameserver/metadata.cc +++ b/server/gameserver/metadata.cc @@ -4,6 +4,12 @@ namespace MetaData { + void Parameter::Init() + { + int_val = a8::XValue(i->param_value()); + float_val = a8::XValue(i->param_value()); + str_val = a8::XValue(i->param_value()).GetString(); + } void Map::Init() { diff --git a/server/gameserver/metadata.h b/server/gameserver/metadata.h index a4aa507..44e4007 100755 --- a/server/gameserver/metadata.h +++ b/server/gameserver/metadata.h @@ -8,6 +8,12 @@ namespace MetaData struct Parameter { const metatable::Parameter* i = nullptr; + + int int_val = 0; + std::string str_val; + double float_val = 0.0f; + + void Init(); }; struct Map diff --git a/server/gameserver/metamgr.cc b/server/gameserver/metamgr.cc index cb60867..7e35738 100755 --- a/server/gameserver/metamgr.cc +++ b/server/gameserver/metamgr.cc @@ -74,6 +74,7 @@ private: for (auto& meta : parameter_meta_list) { MetaData::Parameter& item = a8::FastAppend(parameter_list); item.i = &meta; + item.Init(); parameter_hash[item.i->param_name()] = &item; } @@ -195,10 +196,22 @@ void MetaMgr::Reload() loader_->Load(); } -std::string MetaMgr::GetSysParam(const std::string& param_name) +int MetaMgr::GetSysParamAsInt(const std::string& param_name, int def_val) { auto itr = loader_->parameter_hash.find(param_name); - return itr != loader_->parameter_hash.end() ? itr->second->i->param_value() : ""; + return itr != loader_->parameter_hash.end() ? itr->second->int_val: def_val; +} + +double MetaMgr::GetSysParamAsFloat(const std::string& param_name, double def_val) +{ + auto itr = loader_->parameter_hash.find(param_name); + return itr != loader_->parameter_hash.end() ? itr->second->float_val: def_val; +} + +std::string MetaMgr::GetSysParamAsString(const std::string& param_name, const char* def_val) +{ + auto itr = loader_->parameter_hash.find(param_name); + return itr != loader_->parameter_hash.end() ? itr->second->str_val: def_val; } MetaData::Map* MetaMgr::GetMap(int map_id) diff --git a/server/gameserver/metamgr.h b/server/gameserver/metamgr.h index a00ff7c..25bcc9e 100755 --- a/server/gameserver/metamgr.h +++ b/server/gameserver/metamgr.h @@ -16,7 +16,9 @@ class MetaMgr : public a8::Singleton void UnInit(); void Reload(); - std::string GetSysParam(const std::string& param_name); + int GetSysParamAsInt(const std::string& param_name, int def_val = 0); + 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::MapThing* GetMapThing(int mapthing_id); MetaData::Player* GetPlayer(int id);