PGRData/Script/matrix/xui/xuidraw/xuidrawtools/XUiDrawShowEffect.lua

84 lines
2 KiB
Lua

local effectNode
local effects = {}
local format = string.format
local Init = function(node)
if not node then
XLog.Warning("XUiDrawShowEffect: Init with nil.")
return
end
if effectNode then
XLog.Warning("XUiDrawShowEffect: Reset effectNode.")
end
effectNode = node
end
local PlayEffect = function(name)
if not effectNode then
XLog.Warning("XUiDrawShowEffect: Play effect without Init.")
return
end
if not name or type(name) ~= "string" then
XLog.Warning(format("XUiDrawShowEffect: Invalid name: %s.", name))
end
if not effects[name] then
local effect = effectNode:Find(name)
if effect then
effects[name] = effect.gameObject
else
XLog.Warning(format("XUiDrawShowEffect: Effect not found. Name: %s", name))
return
end
end
if effects[name]:Exist() then
effects[name]:SetActive(false)
effects[name]:SetActive(true)
else
XLog.Warning(format("XUiDrawShowEffect: UnityObject has been destroyed. Name: %s", name))
return
end
end
local HideEffect = function(name)
if not name or type(name) ~= "string" then
XLog.Warning("XUiDrawShowEffect: Invalid name.")
end
if effects[name] and effects[name]:Exist() then
effects[name]:SetActive(false)
else
XLog.Warning(format("XUiDrawShowEffect: Effect not found. Name: %s", name))
end
end
local HideAll = function()
for k, v in pairs(effects) do
if v:Exist() then
v:SetActive(false)
else
effects[k] = nil
end
end
end
local Dispose = function()
effectNode = nil
for k, _ in pairs(effects) do
effects[k] = nil
end
effects = {}
effectNode = nil
end
local DrawShowEffect = {}
DrawShowEffect.Init = Init
DrawShowEffect.PlayEffect = PlayEffect
DrawShowEffect.HideEffect = HideEffect
DrawShowEffect.HideAll = HideAll
DrawShowEffect.Dispose = Dispose
return DrawShowEffect