3#include <libultraship.h>
5#include <unordered_map>
24 std::set<std::string>
Tags;
58template<
typename TInfo,
typename... TArgs>
69 using Callback = std::function<void(TArgs...)>;
74 mMap[info.ResourceName] =
Entry{info, std::move(func)};
77 const TInfo*
GetInfo(
const std::string& resourceName)
const {
78 auto it =
mMap.find(resourceName);
79 return (it !=
mMap.end()) ? &it->second.Info :
nullptr;
82 void Invoke(
const std::string& resourceName, TArgs... args) {
83 auto it =
mMap.find(resourceName);
84 if (it !=
mMap.end() && it->second.Func) {
86 printf(
"[Registry] Invoking %s\n", resourceName.c_str());
87 it->second.Func(std::forward<TArgs>(args)...);
89 printf(
"[Registry] Error: %s not found or function is null.\n", resourceName.c_str());
93 bool Find(
const std::string& resourceName)
const {
94 return mMap.find(resourceName) !=
mMap.end();
102 std::vector<const TInfo*> list;
103 list.reserve(
mMap.size());
104 for (
auto& pair :
mMap) {
105 list.push_back(&pair.second.Info);
112 bool Remove(
const std::string& resourceName) {
113 auto it =
mMap.find(resourceName);
114 if (it !=
mMap.end()) {
134 std::unordered_map<std::string, Registry::Entry>
mMap;
size_t Size()
Definition Registry.h:97
std::vector< const TInfo * > GetAllInfo() const
Definition Registry.h:101
bool Remove(const std::string &resourceName)
Definition Registry.h:112
int32_t mCounter
Definition Registry.h:127
const TInfo * GetInfo(const std::string &resourceName) const
Definition Registry.h:77
void Add(TInfo &info, Callback func)
Definition Registry.h:71
std::unordered_map< std::string, Registry::Entry > mMap
Definition Registry.h:134
bool Find(const std::string &resourceName) const
Definition Registry.h:93
void Clear()
Definition Registry.h:121
void Invoke(const std::string &resourceName, TArgs... args)
Definition Registry.h:82
std::function< void(TArgs...)> Callback
Definition Registry.h:69
std::string Name
Definition Registry.h:23
std::set< std::string > Tags
Definition Registry.h:24
uint32_t Id
Definition Registry.h:21
std::string ResourceName
Definition Registry.h:22
std::string Name
Definition Registry.h:30
std::string ResourceName
Definition Registry.h:29
uint32_t Id
Definition Registry.h:28
Definition Registry.h:128
Callback Func
Definition Registry.h:130
TInfo Info
Definition Registry.h:129
std::string Name
Definition Registry.h:13
const char * MinimapTexture
Definition Registry.h:16
std::string DebugName
Definition Registry.h:14
std::string ResourceName
Definition Registry.h:12
std::string Path
Definition Registry.h:11
std::string Length
Definition Registry.h:15
uint32_t Id
Definition Registry.h:10