--[[ Addon: Taos Group Tools Author: TProg Taonnor Created by @Taonnor ]]-- --[[ Local variables ]]-- local LOG_ACTIVE = false local _logger = nil local _control = nil local _isActive = false --[[ Table GroupUltimateSelector ]]-- TGT_GroupUltimateSelector = {} TGT_GroupUltimateSelector.__index = TGT_GroupUltimateSelector --[[ Table Members ]]-- --[[ SetUltimateIcon sets the button icon in base of staticUltimateID ]]-- function TGT_GroupUltimateSelector.SetUltimateIcon(staticUltimateID) if (LOG_ACTIVE) then _logger:logTrace("TGT_GroupUltimateSelector.SetUltimateIcon") _logger:logDebug("staticUltimateID", staticUltimateID) end local icon = "/esoui/art/icons/icon_missing.dds" 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) else _logger:logError("TGT_GroupUltimateSelector.SetUltimateIcon, icon is " .. tostring(icon) .. "; iconControl is " .. tostring(iconControl)) end end --[[ SetControlMovable sets the Movable and MouseEnabled flag in UI elements ]]-- function TGT_GroupUltimateSelector.SetControlMovable(isMovable) if (LOG_ACTIVE) then _logger:logTrace("TGT_GroupUltimateSelector.SetControlMovable") _logger:logDebug("isMovable", isMovable) end _control:GetNamedChild("MovableControl"):SetHidden(isMovable == false) _control:SetMovable(isMovable) _control:SetMouseEnabled(isMovable) end --[[ RestorePosition sets TGT_GroupUltimateSelector on settings position ]]-- function TGT_GroupUltimateSelector.RestorePosition(posX, posY) if (LOG_ACTIVE) then _logger:logTrace("TGT_GroupUltimateSelector.RestorePosition") _logger:logDebug("posX, posY", posX, posY) end _control:ClearAnchors() _control:SetAnchor(TOPLEFT, GuiRoot, TOPLEFT, posX, posY) end --[[ OnTGT_GroupUltimateSelectorMoveStop saves current TGT_GroupUltimateSelector position to settings ]]-- function TGT_GroupUltimateSelector.OnGroupUltimateSelectorMoveStop() if (LOG_ACTIVE) then _logger:logTrace("TGT_GroupUltimateSelector.OnGroupUltimateSelectorMoveStop") end local left = _control:GetLeft() local top = _control:GetTop() TGT_SettingsHandler.SavedVariables.SelectorPosX = left TGT_SettingsHandler.SavedVariables.SelectorPosY = top if (LOG_ACTIVE) then _logger:logDebug("PosX, PosY", TGT_SettingsHandler.SavedVariables.SelectorPosX, TGT_SettingsHandler.SavedVariables.SelectorPosY) end end --[[ OnGroupUltimateSelectorClicked shows ultimate group menu ]]-- function TGT_GroupUltimateSelector.OnGroupUltimateSelectorClicked() if (LOG_ACTIVE) then _logger:logTrace("TGT_GroupUltimateSelector.OnGroupUltimateSelectorClicked") end local button = _control:GetNamedChild("SelectorButtonControl"):GetNamedChild("Button") if (button ~= nil) then CALLBACK_MANAGER:RegisterCallback(TGT_SET_ULTIMATE_GROUP, TGT_GroupUltimateSelector.OnSetUltimateGroup) CALLBACK_MANAGER:FireCallbacks(TGT_SHOW_ULTIMATE_GROUP_MENU, button) else _logger:logError("TGT_GroupUltimateSelector.OnGroupUltimateSelectorClicked, button nil") end end --[[ OnSetUltimateGroup sets ultimate group for button ]]-- function TGT_GroupUltimateSelector.OnSetUltimateGroup(group) if (LOG_ACTIVE) then _logger:logTrace("TGT_GroupUltimateSelector.OnSetUltimateGroup") _logger:logDebug("group.GroupName", group.GroupName) end CALLBACK_MANAGER:UnregisterCallback(TGT_SET_ULTIMATE_GROUP, TGT_GroupUltimateSelector.OnSetUltimateGroup) if (group ~= nil) then TGT_SettingsHandler.SetStaticUltimateIDSettings(group.GroupAbilityId) else _logger:logError("TGT_UltimateGroupMenu.ShowUltimateGroupMenu, group nil") end end --[[ SetControlHidden sets hidden on control ]]-- function TGT_GroupUltimateSelector.SetControlHidden() if (LOG_ACTIVE) then _logger:logTrace("TGT_GroupUltimateSelector.SetControlHidden") end -- Get isActive from settings local isActive = TGT_SettingsHandler.IsControlsVisible() if (LOG_ACTIVE) then _logger:logDebug("isActive", isActive) end if (isActive) then if (GetIsUnitGrouped() and GetGroupSize() >= TGT_SettingsHandler.SavedVariables.VisibleOffset) then _control:SetHidden(CurrentHudHiddenState()) else _control:SetHidden(true) end else _control:SetHidden(true) end end --[[ SetControlActive activates/deactivates control ]]-- function TGT_GroupUltimateSelector.SetControlActive() if (LOG_ACTIVE) then _logger:logTrace("TGT_GroupUltimateSelector.SetControlActive") end TGT_GroupUltimateSelector.SetControlHidden() -- Get isActive from settings local isActive = TGT_SettingsHandler.IsControlsVisible() if (LOG_ACTIVE) then _logger:logDebug("isActive", isActive) end if (_isActive ~= isActive) then _isActive = isActive if (isActive) then if (LOG_ACTIVE) then _logger:logDebug("TGT_GroupUltimateSelector.SetControlActive RegisterCallbacks") end TGT_GroupUltimateSelector.SetControlMovable(TGT_SettingsHandler.SavedVariables.Movable) TGT_GroupUltimateSelector.RestorePosition(TGT_SettingsHandler.SavedVariables.SelectorPosX, TGT_SettingsHandler.SavedVariables.SelectorPosY) TGT_GroupUltimateSelector.SetUltimateIcon(TGT_SettingsHandler.GetStaticUltimateIDSettings()) CALLBACK_MANAGER:RegisterCallback(TGT_MOVABLE_CHANGED, TGT_GroupUltimateSelector.SetControlMovable) CALLBACK_MANAGER:RegisterCallback(TGT_STATIC_ULTIMATE_ID_CHANGED, TGT_GroupUltimateSelector.SetUltimateIcon) CALLBACK_MANAGER:RegisterCallback(TAO_HUD_HIDDEN_STATE_CHANGED, TGT_GroupUltimateSelector.SetControlHidden) CALLBACK_MANAGER:RegisterCallback(TGT_VISIBLE_OFFSET_CHANGED, TGT_GroupUltimateSelector.SetControlHidden) else if (LOG_ACTIVE) then _logger:logDebug("TGT_GroupUltimateSelector.SetControlActive UnregisterCallbacks") end CALLBACK_MANAGER:UnregisterCallback(TGT_MOVABLE_CHANGED, TGT_GroupUltimateSelector.SetControlMovable) CALLBACK_MANAGER:UnregisterCallback(TGT_STATIC_ULTIMATE_ID_CHANGED, TGT_GroupUltimateSelector.SetUltimateIcon) CALLBACK_MANAGER:UnregisterCallback(TAO_HUD_HIDDEN_STATE_CHANGED, TGT_GroupUltimateSelector.SetControlHidden) CALLBACK_MANAGER:UnregisterCallback(TGT_VISIBLE_OFFSET_CHANGED, TGT_GroupUltimateSelector.SetControlHidden) end else if (LOG_ACTIVE) then _logger:logDebug("_isActive == isActive; State not changed, do not update") end end end --[[ Initialize initializes TGT_GroupUltimateSelector ]]-- function TGT_GroupUltimateSelector.Initialize(logger) if (LOG_ACTIVE) then logger:logTrace("TGT_GroupUltimateSelector.Initialize") end _logger = logger _control = TGT_UltimateSelectorControl TGT_GroupUltimateSelector.SetUltimateIcon(staticUltimateID) TGT_GroupUltimateSelector.SetControlActive() CALLBACK_MANAGER:RegisterCallback(TGT_IS_ZONE_CHANGED, TGT_GroupUltimateSelector.SetControlActive) CALLBACK_MANAGER:RegisterCallback(TAO_UNIT_GROUPED_CHANGED, TGT_GroupUltimateSelector.SetControlActive) end