diff --git a/server/gameserver/mt/MetaMgr.cc b/server/gameserver/mt/MetaMgr.cc index 2e139e56..a59731cc 100644 --- a/server/gameserver/mt/MetaMgr.cc +++ b/server/gameserver/mt/MetaMgr.cc @@ -61,7 +61,12 @@ namespace mt } else { res_path_ = "../res/"; } + RegMetaTables(); + Load(); + } + void MetaMgr::RegMetaTables() + { RegMetaTable(res_path_); RegMetaTable(res_path_); RegMetaTable(res_path_); @@ -97,21 +102,23 @@ namespace mt RegMetaTable(res_path_); RegMetaTable(res_path_); RegMetaTable(res_path_); - { + } + + void MetaMgr::Load() + { + for (auto& itr : meta_tables) { + itr->static_pre_init_cb(); + itr->load_cb(); + } + for (int i = 0; i < 3; ++i) { for (auto& itr : meta_tables) { - itr->static_pre_init_cb(); - itr->load_cb(); - } - for (int i = 0; i < 3; ++i) { - for (auto& itr : meta_tables) { - if (i < itr->init_cbs.size()) { - itr->init_cbs.at(i)(); - } + if (i < itr->init_cbs.size()) { + itr->init_cbs.at(i)(); } } - for (auto& itr : meta_tables) { - itr->static_post_init_cb(); - } + } + for (auto& itr : meta_tables) { + itr->static_post_init_cb(); } } diff --git a/server/gameserver/mt/MetaMgr.h b/server/gameserver/mt/MetaMgr.h index a7e5c455..2bc4a82f 100644 --- a/server/gameserver/mt/MetaMgr.h +++ b/server/gameserver/mt/MetaMgr.h @@ -66,6 +66,9 @@ namespace mt void Init(); void UnInit(); + void RegMetaTables(); + void Load(); + template mt::MetaTable* RegMetaTable(const std::string& dir) {