Files
mhwilds-optimization/reframework/autorun/utility/Statics.lua
2025-03-15 20:17:25 -05:00

60 lines
1.3 KiB
Lua

local Statics = {}
function Statics.generate(typename, double_ended)
local double_ended = double_ended or false
local t = sdk.find_type_definition(typename)
if not t then return {} end
local fields = t:get_fields()
local enum = {}
for i, field in ipairs(fields) do
if field:is_static() then
local name = field:get_name()
local raw_value = field:get_data(nil)
log.info(name .. " = " .. tostring(raw_value))
enum[name] = raw_value
if double_ended then
enum[raw_value] = name
end
end
end
return enum
end
function Statics.generate_global(typename)
-- split the . in the string so we get separate tables for each
-- lua has no built in split function
local parts = {}
for part in typename:gmatch("[^%.]+") do
table.insert(parts, part)
end
local global = _G
for i, part in ipairs(parts) do
if not global[part] then
global[part] = {}
end
global = global[part]
end
if global ~= _G then
local static_class = Statics.generate(typename)
for k, v in pairs(static_class) do
global[k] = v
global[v] = k
end
end
return global
end
return Statics