hi hive-dev-mind.
I have an addon that I need to show, via an on/off toggle conditionally. I can't get the fragment to stay hidden, after first enabling it, and then disabling it.
I saw
this post and tried the following:
Code:
fragment:SetConditional(function()
return settings.activeWindow
end)
but it doesn't work, I still get the fragment showing even with the activeWindow var is false.
Ive also tried conditional code in a conventional callback, like this:
Code:
function Ui:ShowHideTLC(makeVis)
local sceneHUD = SCENE_MANAGER:GetScene("hud")
local sceneUI = SCENE_MANAGER:GetScene("hudui")
local TLC = AddOnWindow
local tlcFragment = ZO_SimpleSceneFragment:New(TLC)
TLC:SetHidden(not makeVis)
if (makeVis == true and settings.activeWindow == true) then
sceneHUD:AddFragment(tlcFragment)
sceneUI:AddFragment(tlcFragment)
else
sceneHUD:RemoveFragment(tlcFragment)
sceneUI:RemoveFragment(tlcFragment)
end
end
local function tlcFragmentChange(oldState, newState)
if (newState == SCENE_FRAGMENT_SHOWN) then
self:ShowHideTLC(true)
elseif (newState == SCENE_FRAGMENT_HIDDEN) then
self:ShowHideTLC(false)
end
end
-- this is bound to a key
function Ui:ToggleShow()
settings.activeWindow = not settings.activeWindow
self:ShowHideTLC(settings.activeWindow)
end
-- this is in the init function
local tlcFragment = ZO_SimpleSceneFragment:New(AddOnWindow)
tlcFragment:RegisterCallback("StateChange", tlcFragmentChange)
I almost get the behaviour I want with this, except that once Ive toggled the addon visible, it will always appear on the HUD, even if I retoggle it off again (if that makes sense)
I have a feeling Im overcomplicating it, as I tend to do, but I cant figure it out. I'm new to Lua, let alone ESOUI.
Thanks!