3#include <libultraship.h>
5#include <unordered_map>
24 std::set<std::string>
Tags;
52template<
typename TInfo,
typename... TArgs>
63 using Callback = std::function<void(TArgs...)>;
68 mMap[info.ResourceName] =
Entry{info, std::move(func)};
71 const TInfo*
GetInfo(
const std::string& resourceName)
const {
72 auto it =
mMap.find(resourceName);
73 return (it !=
mMap.end()) ? &it->second.Info :
nullptr;
76 void Invoke(
const std::string& resourceName, TArgs... args) {
77 auto it =
mMap.find(resourceName);
78 if (it !=
mMap.end() && it->second.Func) {
80 printf(
"[Registry] Invoking %s\n", resourceName.c_str());
81 it->second.Func(std::forward<TArgs>(args)...);
83 printf(
"[Registry] Error: %s not found or function is null.\n", resourceName.c_str());
87 bool Find(
const std::string& resourceName)
const {
88 return mMap.find(resourceName) !=
mMap.end();
92 std::vector<const TInfo*> list;
93 list.reserve(
mMap.size());
94 for (
auto& pair :
mMap) {
95 list.push_back(&pair.second.Info);
102 bool Remove(
const std::string& resourceName) {
103 auto it =
mMap.find(resourceName);
104 if (it !=
mMap.end()) {
124 std::unordered_map<std::string, Registry::Entry>
mMap;
std::vector< const TInfo * > GetAllInfo() const
Definition Registry.h:91
bool Remove(const std::string &resourceName)
Definition Registry.h:102
int32_t mCounter
Definition Registry.h:117
const TInfo * GetInfo(const std::string &resourceName) const
Definition Registry.h:71
void Add(TInfo &info, Callback func)
Definition Registry.h:65
std::unordered_map< std::string, Registry::Entry > mMap
Definition Registry.h:124
bool Find(const std::string &resourceName) const
Definition Registry.h:87
void Clear()
Definition Registry.h:111
void Invoke(const std::string &resourceName, TArgs... args)
Definition Registry.h:76
std::function< void(TArgs...)> Callback
Definition Registry.h:63
std::string Name
Definition Registry.h:23
std::set< std::string > Tags
Definition Registry.h:24
std::string ResourceName
Definition Registry.h:22
int32_t Id
Definition Registry.h:21
Definition Registry.h:118
Callback Func
Definition Registry.h:120
TInfo Info
Definition Registry.h:119
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
int32_t Id
Definition Registry.h:10