ESOUI SVN TaosGroupUltimate

[/] [trunk/] [TaosGroupUltimate/] [util/] [UiHelper.lua] - Rev 51

Compare with Previous | Blame | View Log

--[[
        Addon: util
        Author: TProg Taonnor
        Created by @Taonnor
]]--

--[[
        Class definition (Static class)
]]--
-- A table in hole lua workspace must be unique
-- The ui helper is global util table, used in several of my addons
-- The table is created as "static" class without constructor and static helper methods
if (TaosUiHelper == nil) then
        TaosUiHelper = {}
        TaosUiHelper.__index = TaosUiHelper

    -- Global Callback Variables
    TUI_HUD_HIDDEN_STATE_CHANGED = "TUI-HudHiddenStateChange"

        -- isHidden logic for hud scenes
    -- This logic will fire TUI_HUD_HIDDEN_STATE_CHANGED if hud scenes not visible:
    -- hud = true; hudui = true -> isHidden = true
    -- hud = true; hudui = false -> isHidden = false
    -- hud = false; hudui = true -> isHidden = false
    -- hud = false; hudui = false -> isHidden = false
    local internalHudSceneState = true
    local internalHudUiSceneState = true
    local internalHudHiddenState = true

    --[[
        CurrentHudHiddenState Gets the hidden state of hud/hudui
    ]]--
    function CurrentHudHiddenState()
        return internalHudHiddenState
    end

    --[[
        UpdateHiddenState updates the hidden state on base of hud/hudui state
    ]]--
    local function UpdateHiddenState()
                local isHidden = internalHudSceneState and internalHudUiSceneState
                
        if (isHidden ~= internalHudHiddenState) then
            internalHudHiddenState = isHidden
            CALLBACK_MANAGER:FireCallbacks(TUI_HUD_HIDDEN_STATE_CHANGED, isHidden)
        end
    end

    --[[
        HudSceneOnStateChange callback of hud OnStateChange
    ]]--
    local function HudSceneOnStateChange(oldState, newState)
        if (newState == SCENE_HIDING) then
            internalHudSceneState = true
                        -- make call async to catch both state changes before changing visibility
                        zo_callLater(UpdateHiddenState, 1)
        elseif (newState == SCENE_SHOWING) then
            internalHudSceneState = false
                        -- make call async to catch both state changes before changing visibility
                        zo_callLater(UpdateHiddenState, 1)
        end
    end

    --[[
        HudUiSceneOnStateChange callback of hudui OnStateChange
    ]]--
    local function HudUiSceneOnStateChange(oldState, newState)
                if (newState == SCENE_HIDING) then
            internalHudUiSceneState = true
                        -- make call async to catch both state changes before changing visibility
                        zo_callLater(UpdateHiddenState, 1)
        elseif (newState == SCENE_SHOWING) then
            internalHudUiSceneState = false
                        -- make call async to catch both state changes before changing visibility
                        zo_callLater(UpdateHiddenState, 1)
        end
    end

    --[[
        Register callbacks to scenes
    ]]--
     -- Reticle Scene
    SCENE_MANAGER:GetScene("hud"):RegisterCallback("StateChange", HudSceneOnStateChange)
     -- Mouse Scene
    SCENE_MANAGER:GetScene("hudui"):RegisterCallback("StateChange", HudUiSceneOnStateChange)
    
end

Compare with Previous | Blame