AddCallMetaTable for sub userdatas

This commit is contained in:
Evil Factory
2022-04-23 12:42:19 -03:00
parent 910118303a
commit fe3d17d1d9
2 changed files with 17 additions and 11 deletions

View File

@@ -1,5 +1,6 @@
local defaultLib = {}
local AddCallMetaTable = LuaSetup.AddCallMetaTable
local CreateStatic = LuaSetup.CreateStatic
local CreateEnum = LuaUserData.CreateEnumTable
@@ -45,6 +46,7 @@ defaultLib["CharacterPrefab"] = CreateStatic("Barotrauma.CharacterPrefab")
defaultLib["CharacterInfo"] = CreateStatic("Barotrauma.CharacterInfo", true)
defaultLib["CharacterInfoPrefab"] = CreateStatic("Barotrauma.CharacterInfoPrefab")
defaultLib["Item"] = CreateStatic("Barotrauma.Item", true)
AddCallMetaTable(defaultLib["Item"].ChangePropertyEventData)
defaultLib["ItemPrefab"] = CreateStatic("Barotrauma.ItemPrefab", true)
defaultLib["TalentTree"] = CreateStatic("Barotrauma.TalentTree", true)
defaultLib["TalentPrefab"] = CreateStatic("Barotrauma.TalentPrefab", true)

View File

@@ -10,21 +10,25 @@ LuaSetup.RegisterBarotrauma = function(typeName)
return LuaSetup.Register("Barotrauma." .. typeName)
end
LuaSetup.AddCallMetaTable = function (userdata)
debug.setmetatable(userdata, {
__call = function(obj, ...)
local success, result = pcall(userdata.__new, ...)
if not success then
error(result, 2)
end
return result
end
})
end
LuaSetup.CreateStatic = function(typeName, addCallMethod)
local staticUserdata = LuaUserData.CreateStatic(typeName)
if addCallMethod then
debug.setmetatable(staticUserdata, {
__call = function(obj, ...)
local success, result = pcall(staticUserdata.__new, ...)
if not success then
error(result, 2)
end
return result
end
})
LuaSetup.AddCallMetaTable(staticUserdata)
end
return staticUserdata