add param read

This commit is contained in:
aozhiwei 2019-04-16 16:27:14 +08:00
parent b08e14d2cb
commit 49537b8837
4 changed files with 30 additions and 3 deletions

View File

@ -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()
{

View File

@ -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

View File

@ -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)

View File

@ -16,7 +16,9 @@ class MetaMgr : public a8::Singleton<MetaMgr>
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);