better error handling in LuaUserData.lua
This commit is contained in:
@@ -20,20 +20,39 @@ luaUserData.CreateUserDataFromDescriptor = clrLuaUserData.CreateUserDataFromDesc
|
|||||||
luaUserData.CreateUserDataFromType = clrLuaUserData.CreateUserDataFromType
|
luaUserData.CreateUserDataFromType = clrLuaUserData.CreateUserDataFromType
|
||||||
|
|
||||||
luaUserData.RegisterType = function(typeName)
|
luaUserData.RegisterType = function(typeName)
|
||||||
local descriptor = clrLuaUserData.RegisterType(typeName)
|
local success, result = pcall(clrLuaUserData.RegisterType, typeName)
|
||||||
|
|
||||||
luaUserData.Descriptors[typeName] = descriptor
|
if not success then
|
||||||
|
error(result, 2)
|
||||||
|
end
|
||||||
|
|
||||||
return descriptor
|
luaUserData.Descriptors[typeName] = result
|
||||||
|
|
||||||
|
return result
|
||||||
end
|
end
|
||||||
|
|
||||||
luaUserData.RegisterTypeBarotrauma = function(typeName)
|
luaUserData.RegisterTypeBarotrauma = function(typeName)
|
||||||
return luaUserData.RegisterType("Barotrauma." .. typeName)
|
typeName = "Barotrauma." .. typeName
|
||||||
|
local success, result = pcall(luaUserData.RegisterType, typeName)
|
||||||
|
|
||||||
|
if not success then
|
||||||
|
error(result, 2)
|
||||||
|
end
|
||||||
|
|
||||||
|
return result
|
||||||
end
|
end
|
||||||
|
|
||||||
luaUserData.AddCallMetaTable = function (userdata)
|
luaUserData.AddCallMetaTable = function (userdata)
|
||||||
|
if userdata == nil then
|
||||||
|
error("Attempted to add a call metatable to a nil value.", 2)
|
||||||
|
end
|
||||||
|
|
||||||
debug.setmetatable(userdata, {
|
debug.setmetatable(userdata, {
|
||||||
__call = function(obj, ...)
|
__call = function(obj, ...)
|
||||||
|
if userdata == nil then
|
||||||
|
error("userdata was nil.", 2)
|
||||||
|
end
|
||||||
|
|
||||||
local success, result = pcall(userdata.__new, ...)
|
local success, result = pcall(userdata.__new, ...)
|
||||||
|
|
||||||
if not success then
|
if not success then
|
||||||
@@ -46,11 +65,15 @@ luaUserData.AddCallMetaTable = function (userdata)
|
|||||||
end
|
end
|
||||||
|
|
||||||
luaUserData.CreateStatic = function(typeName, addCallMethod)
|
luaUserData.CreateStatic = function(typeName, addCallMethod)
|
||||||
local staticUserdata = clrLuaUserData.CreateStatic(typeName)
|
local success, result = pcall(clrLuaUserData.CreateStatic, typeName)
|
||||||
|
|
||||||
if addCallMethod then
|
if not success then
|
||||||
luaUserData.AddCallMetaTable(staticUserdata)
|
error(result, 2)
|
||||||
end
|
end
|
||||||
|
|
||||||
return staticUserdata
|
if addCallMethod then
|
||||||
|
luaUserData.AddCallMetaTable(result)
|
||||||
|
end
|
||||||
|
|
||||||
|
return result
|
||||||
end
|
end
|
||||||
Reference in New Issue
Block a user