diff --git a/server/gameserver/mt/SafeArea.cc b/server/gameserver/mt/SafeArea.cc index 7fca8b19..6f35c7f4 100644 --- a/server/gameserver/mt/SafeArea.cc +++ b/server/gameserver/mt/SafeArea.cc @@ -4,7 +4,20 @@ IMPL_TABLE(mt::SafeArea) +std::map mt::SafeArea::type_hash_; + namespace mt { + void SafeArea::Init1() + { + type_hash_[type()] = this; + } + + const SafeArea* SafeArea::GetByType(int type) + { + auto itr = type_hash_.find(type); + return itr != type_hash_.end() ? itr->second : nullptr; + } + } diff --git a/server/gameserver/mt/SafeArea.h b/server/gameserver/mt/SafeArea.h index f783b16c..279bf6a4 100644 --- a/server/gameserver/mt/SafeArea.h +++ b/server/gameserver/mt/SafeArea.h @@ -11,7 +11,11 @@ namespace mt "id") public: - static const SafeArea* GetByType(int type) {}; + void Init1(); + static const SafeArea* GetByType(int type); + + private: + static std::map type_hash_; }; }