Files
mod-ale/src/LuaEngine/ALEDBCRegistry.h
Foe 81d3f02679 chore: rename Eluna to ALE (#318)
Co-authored-by: Francesco Borzì <borzifrancesco@gmail.com>
2025-10-23 12:53:30 +02:00

39 lines
1.1 KiB
C++

#ifndef ALEDBCREGISTRY_H
#define ALEDBCREGISTRY_H
#include <string>
#include <vector>
#include <functional>
#include <typeinfo>
#include "DBCStores.h"
#include "LuaEngine.h"
struct DBCDefinition
{
std::string name;
void* storage;
const std::type_info& type;
std::function<const void*(uint32)> lookupFunction;
std::function<void(lua_State*, const void*)> pushFunction;
};
extern std::vector<DBCDefinition> dbcRegistry;
#define REGISTER_DBC(dbcName, entryType, store) \
{ \
#dbcName, \
reinterpret_cast<void*>(&store), \
typeid(DBCStorage<entryType>), \
[](uint32 id) -> const void* { \
return store.LookupEntry(id); \
}, \
[](lua_State* L, const void* entry) { \
auto cast_entry = static_cast<const entryType*>(entry); \
ALE::Push(L, *cast_entry); \
} \
}
#endif // ALEDBCREGISTRY_H