ESOUI SVN TaosGroupTools

[/] [trunk/] [TaosGroupTools/] [ui/] [groupultimateselector/] [GroupUltimateSelector.lua] - Rev 93

Compare with Previous | Blame | View Log

--[[
        Addon: Taos Group Tools
        Author: TProg Taonnor
        Created by @Taonnor
]]--

--[[
        Local variables
]]--
local DEFAULT_ICON = "/esoui/art/icons/icon_missing.dds"

local _logger = nil
local _settingsHandler = TGT_SettingsHandler
local _control = TGT_UltimateSelectorControl
local _isActive = false

--[[
        Table GroupUltimateSelector
]]--
TGT_GroupUltimateSelector = {}
TGT_GroupUltimateSelector.__index = TGT_GroupUltimateSelector

--[[
        ===============
    PRIVATE METHODS
    ===============
]]--

--[[
        SetUltimateIcon sets the button icon in base of staticUltimateID
]]--
local function SetUltimateIcon(staticUltimateID)
    local icon = DEFAULT_ICON

    if (staticUltimateID ~= 0) then
        icon = GetAbilityIcon(staticUltimateID)
    end

    local iconControl = _control:GetNamedChild("SelectorButtonControl"):GetNamedChild("Icon")

    if (icon ~= nil and iconControl ~= nil) then
        iconControl:SetTexture(icon)
    end
end

--[[
        SetControlMovable sets the Movable and MouseEnabled flag in UI elements
]]--
local function SetControlMovable()
    local isMovable = _settingsHandler.SavedVariables.Movable

    _control:GetNamedChild("MovableControl"):SetHidden(isMovable == false)
    _control:SetMovable(isMovable)
        _control:SetMouseEnabled(isMovable)
end

--[[
        RestorePosition sets TGT_GroupUltimateSelector on settings position
]]--
local function RestorePosition()
    local posX = _settingsHandler.SavedVariables.Position[GROUP_ULTIMATE_SELECTOR].PosX
    local posY = _settingsHandler.SavedVariables.Position[GROUP_ULTIMATE_SELECTOR].PosY

        _control:ClearAnchors()
        _control:SetAnchor(TOPLEFT, GuiRoot, TOPLEFT, posX, posY)
end

--[[
        OnSetUltimateGroup sets ultimate group for button
]]--
local function OnSetUltimateGroup(group)
    CALLBACK_MANAGER:UnregisterCallback(TGT_SET_ULTIMATE_GROUP, OnSetUltimateGroup)

    if (group ~= nil) then
        _settingsHandler.SetStaticUltimateIDSettings(group.GroupAbilityId)
    end
end

--[[
        SetControlHidden sets hidden on control
]]--
local function SetControlHidden()
    -- Get isActive from settings
    if (_settingsHandler.SavedVariables.IsSendingDataActive) then
        if (GetIsUnitGrouped()) then
            _control:SetHidden(CurrentHudHiddenState())
        else
            _control:SetHidden(true)
        end
    else
        _control:SetHidden(true)
    end
end

--[[
        SetControlActive activates/deactivates control
]]--
local function SetControlActive()
    SetControlHidden()

    -- Get isActive from settings
    local isActive = _settingsHandler.SavedVariables.IsSendingDataActive

    if (_isActive ~= isActive) then
        _isActive = isActive

        if (isActive) then
            SetControlMovable()
            RestorePosition()
            SetUltimateIcon(_settingsHandler.GetStaticUltimateIDSettings())

            CALLBACK_MANAGER:RegisterCallback(TGT_MOVABLE_CHANGED, SetControlMovable)
            CALLBACK_MANAGER:RegisterCallback(TGT_STATIC_ULTIMATE_ID_CHANGED, SetUltimateIcon)
            CALLBACK_MANAGER:RegisterCallback(TAO_HUD_HIDDEN_STATE_CHANGED, SetControlHidden)
        else
            CALLBACK_MANAGER:UnregisterCallback(TGT_MOVABLE_CHANGED, SetControlMovable)
            CALLBACK_MANAGER:UnregisterCallback(TGT_STATIC_ULTIMATE_ID_CHANGED, SetUltimateIcon)
            CALLBACK_MANAGER:UnregisterCallback(TAO_HUD_HIDDEN_STATE_CHANGED, SetControlHidden)
        end
    end
end

--[[
        ==============
    PUBLIC METHODS
    ==============
]]--

--[[
        OnTGT_GroupUltimateSelectorMoveStop saves current TGT_GroupUltimateSelector position to settings
]]--
function TGT_GroupUltimateSelector.OnGroupUltimateSelectorMoveStop()
        local left = _control:GetLeft()
        local top = _control:GetTop()
        
    _settingsHandler.SavedVariables.Position[GROUP_ULTIMATE_SELECTOR].PosX = left
    _settingsHandler.SavedVariables.Position[GROUP_ULTIMATE_SELECTOR].PosY = top
end

--[[
        OnGroupUltimateSelectorClicked shows ultimate group menu
]]--
function TGT_GroupUltimateSelector.OnGroupUltimateSelectorClicked()
    local button = _control:GetNamedChild("SelectorButtonControl"):GetNamedChild("Button")

    if (button ~= nil) then
        CALLBACK_MANAGER:RegisterCallback(TGT_SET_ULTIMATE_GROUP, OnSetUltimateGroup)
        FireCallbacksAsync(TGT_SHOW_ULTIMATE_GROUP_MENU, button)
    end
end

--[[
        Initialize initializes TGT_GroupUltimateSelector
]]--
function TGT_GroupUltimateSelector.Initialize()
    _logger = TGT_LOGGER

    SetUltimateIcon(staticUltimateID)
    SetControlActive()

    CALLBACK_MANAGER:RegisterCallback(TGT_IS_ZONE_CHANGED, SetControlActive)
    CALLBACK_MANAGER:RegisterCallback(TGT_SENDING_CHANGED, SetControlActive)
    CALLBACK_MANAGER:RegisterCallback(TGT_PLAYER_ACTIVATED, SetControlActive)
    CALLBACK_MANAGER:RegisterCallback(TAO_UNIT_GROUPED_CHANGED, SetControlActive)
    CALLBACK_MANAGER:RegisterCallback(TGT_GROUP_ULTIMATE_ENABLED_CHANGED, SetControlActive)
    
    _logger:logTrace("TGT_GroupUltimateSelector -> Initialized")
end

Compare with Previous | Blame