diff --git a/server/rankserver/CMakeLists.txt b/server/rankserver/CMakeLists.txt index 8bf5daf..c82ff0b 100644 --- a/server/rankserver/CMakeLists.txt +++ b/server/rankserver/CMakeLists.txt @@ -64,6 +64,8 @@ execute_process( COMMAND touch -a cs_proto.pb.cc COMMAND touch -a cs_msgid.pb.h COMMAND touch -a cs_msgid.pb.cc + COMMAND touch -a metatable.pb.h + COMMAND touch -a metatable.pb.cc ) aux_source_directory(. SRC_LIST @@ -80,7 +82,7 @@ add_executable( add_custom_target(script_pb_protocol ALL) add_custom_command(TARGET script_pb_protocol PRE_BUILD - COMMAND python ../../third_party/tools/scripts/construct/build_pb.py --cpp_out=. --pb_files=ss_proto,ss_msgid,cs_msgid,cs_proto --python_out=../tools/robot/virtualclient + COMMAND python ../../third_party/tools/scripts/construct/build_pb.py --cpp_out=. --pb_files=ss_proto,ss_msgid,cs_msgid,cs_proto,metatable --python_out=../tools/robot/virtualclient ) add_dependencies(friend_rankserver script_pb_protocol) diff --git a/server/rankserver/metadata.h b/server/rankserver/metadata.h index e69de29..37e43ee 100644 --- a/server/rankserver/metadata.h +++ b/server/rankserver/metadata.h @@ -0,0 +1,3 @@ +#pragma once + +#include "metatable.pb.h" diff --git a/server/rankserver/metamgr.cc b/server/rankserver/metamgr.cc index bdfc4e4..25da49f 100644 --- a/server/rankserver/metamgr.cc +++ b/server/rankserver/metamgr.cc @@ -21,6 +21,9 @@ class MetaDataLoader { public: std::map > dirty_words; + std::list text_meta_list; + + std::map text_hash; void Load() { @@ -45,7 +48,9 @@ public: } else { res_path = "../res/"; } + f8::ReadCsvMetaFile(res_path + "text@text.csv", text_meta_list); LoadDirtyWordTable(); + BindToMetaData(); Check(); } @@ -78,6 +83,9 @@ private: void BindToMetaData() { + for (auto& meta : text_meta_list) { + text_hash[meta.textid()] = meta.text(); + } } private: @@ -121,3 +129,9 @@ bool MetaMgr::HasDirtyWord(const std::string& text) } return false; } + +std::string MetaMgr::GetText(const std::string& textid, const std::string& def_text) +{ + auto itr = loader_->text_hash.find(textid); + return itr != loader_->text_hash.end() ? itr->second : def_text; +} diff --git a/server/rankserver/metamgr.h b/server/rankserver/metamgr.h index 0eeb035..b58f4d9 100644 --- a/server/rankserver/metamgr.h +++ b/server/rankserver/metamgr.h @@ -2,6 +2,8 @@ #include "metadata.h" +#define TEXT(textid, def_text) MetaMgr::Instance()->GetText(#textid, #def_text) + class MetaDataLoader; class MetaMgr : public a8::Singleton { @@ -17,6 +19,7 @@ class MetaMgr : public a8::Singleton void Reload(); bool HasDirtyWord(const std::string& text); + std::string GetText(const std::string& textid, const std::string& def_text=""); private: MetaDataLoader* loader_ = nullptr;