--[[ Author: Jarth Filename: SummonAssistant_Buttons.lua ]] -- ------------------------------------------------------------------------------------------------- -- VARIABLES -- ------------------------------------------------------------------------------------------------- local baseModule = SummonAssistant local sharedBaseModule = JarthSharedBase ------------------------------------------------------------------------------------------------- -- FUNCTIONS -- -- Button highlight -- ------------------------------------------------------------------------------------------------- function baseModule.ButtonOnClicked(button) local id = button:GetId() if id > 0 then if IsCollectibleUnlocked(id) then UseCollectible(id) else UseCollectible(GetActiveCollectibleByType(COLLECTIBLE_CATEGORY_TYPE_ASSISTANT)) end end end ------------------------------------------------------------------------------------------------- -- PRIVATE FUNCTIONS -- ------------------------------------------------------------------------------------------------- function baseModule:SetButtonFrameWidth(collection) local count, height, width = 0, 0, 0 for key, _ in pairs(collection) do if IsCollectibleUnlocked(key) and collection[key] then count = count + 1 end end if count > 0 then local depth = math.ceil(count / baseModule.Saved.BarDepth) height = baseModule.Saved.Height * (baseModule.Saved.Horizontal and depth or baseModule.Saved.BarDepth) width = baseModule.Saved.Width * (not baseModule.Saved.Horizontal and depth or baseModule.Saved.BarDepth) end sharedBaseModule:SetFrameSettings(baseModule.Frame, count == 0, height, width) end function baseModule:InitializeButtons(frame, orderedCollection) local index = 1 local position = TOPLEFT for _, _value in ipairs(orderedCollection) do local id = _value.Id local key = _value.Name if baseModule.Saved.ShowAssistants[id] and IsCollectibleUnlocked(_value.Id) then if baseModule.Buttons[key] == nil then baseModule.Buttons[key] = WINDOW_MANAGER:CreateControlFromVirtual("SummonAssistant_Button", frame, "SummonAssistant_Button", key) baseModule.Buttons[key].Saved = baseModule.Saved baseModule.Buttons[key]:SetId(id) end local left, top = sharedBaseModule:GetButtonPosition(baseModule, index) sharedBaseModule:SetupButton(baseModule, key, left, top, position) sharedBaseModule:SetupButtonBinding(baseModule, key) sharedBaseModule:SetupButtonBackdrop(baseModule, key, left, top, position) sharedBaseModule:SetupButtonTexture(baseModule, key, left, top, baseModule.Types, position) baseModule.Buttons[key]:SetHandler("OnMouseEnter", sharedBaseModule.ButtonHighlightEnter) baseModule.Buttons[key]:SetHandler("OnMouseExit", sharedBaseModule.ButtonHighlightExit) index = index + 1 elseif baseModule.Buttons[key] ~= nil then baseModule.Buttons[key]:SetHidden(true) end end end function baseModule:RestoreButtons(orderedCollection) local centerColor = baseModule.Saved.CenterColor local edgeColor = baseModule.Saved.EdgeColor for _, _value in ipairs(orderedCollection) do if baseModule.Buttons[_value.Name] ~= nil then local buttonBackdrop = GetControl(baseModule.Buttons[_value.Name], "Backdrop") if buttonBackdrop ~= nil then buttonBackdrop:SetCenterColor(centerColor.r, centerColor.g, centerColor.b, centerColor.a) buttonBackdrop:SetEdgeColor(edgeColor.r, edgeColor.g, edgeColor.b, edgeColor.a) end end end end