--[[ Author: Jarth Filename: CBs_Helpers.lua ]] -- ------------------------------------------------------------------------------------------------- -- VARIABLES -- ------------------------------------------------------------------------------------------------- local base = CollectionBars ------------------------------------------------------------------------------------------------- -- FUNCTIONS -- ------------------------------------------------------------------------------------------------- function base.GetLocationValue(value) local result if value == "bottom" then result = BOTTOM elseif value == "bottomleft" then result = BOTTOMLEFT elseif value == "bottomright" then result = BOTTOMRIGHT elseif value == "center" then result = CENTER elseif value == "left" then result = LEFT elseif value == "right" then result = RIGHT elseif value == "top" then result = TOP elseif value == "topleft" then result = TOPLEFT elseif value == "topright" then result = TOPRIGHT end return result end function base.GetLocationText(value) local result if value == BOTTOM then result = "bottom" elseif value == BOTTOMLEFT then result = "bottomleft" elseif value == BOTTOMRIGHT then result = "bottomright" elseif value == CENTER then result = "center" elseif value == LEFT then result = "left" elseif value == RIGHT then result = "right" elseif value == TOP then result = "top" elseif value == TOPLEFT then result = "topleft" elseif value == TOPRIGHT then result = "topright" end return result end function base.RestorePosition(_type) _type.Frame:ClearAnchors() local combineFrame = base.Global.Combine.Frame if not _type.Saved.IsCombined or not combineFrame then _type.Frame:SetAnchor(_type.Saved.AnchorXY, GuiRoot, TOPLEFT, _type.Saved.X, _type.Saved.Y) elseif _type.Saved.IsCombined then if not _type.Saved.HideAll then _type.Frame:SetAnchorFill(combineFrame) else _type.Frame:SetAnchor(_type.Saved.AnchorXY, combineFrame, _type.Saved.AnchorXY, 0, 0) end end end function base.GetLabelPostFix(_type) local postFix = "" if _type.Saved.HideAllEnabled then if not _type.Saved.HideAll then postFix = " -" else postFix = " +" end end return postFix end function base.IsAllSelected(_type) local isAllSelected = true for _, collection in pairs(_type.Collection) do if _type.Saved.Selected[collection.Id] == nil then isAllSelected = false break end end return isAllSelected end function base.SelectAll(_type, newValue) for _, collection in pairs(_type.Collection) do if newValue == true then _type.Saved.Selected[collection.Id] = newValue else _type.Saved.Selected[collection.Id] = nil end end end function base.GetVersion(showMinor) if showMinor == false or base.Addon.MinorVersion == nil then return tostring(base.Addon.Version) end return string.format("%s.%s", tostring(base.Addon.Version), tostring(base.Addon.MinorVersion)) end function base.SetAndUpdateAccountSettings(newUseAccountSettings) base.Saved = ZO_SavedVars:New(base.Addon.Name .. "_Character", base.Addon.Version, nil, base.Default) if newUseAccountSettings ~= nil then base.Saved.UseAccountSettings = newUseAccountSettings end if base.Saved.UseAccountSettings then base.Saved = ZO_SavedVars:NewAccountWide(base.Addon.Name .. "_Account", base.Addon.Version, nil, base.Default) end end function base.ResetAccountSettings() if base.Saved.UseAccountSettings then _G[base.Addon.Name .. "_Account"] = nil base.Saved = ZO_SavedVars:NewAccountWide(base.Addon.Name .. "_Account", base.Addon.Version, nil, base.Default) else _G[base.Addon.Name .. "_Character"] = nil base.Saved = ZO_SavedVars:New(base.Addon.Name .. "_Character", base.Addon.Version, nil, base.Default) end end function base.GetBarWidthHeight(_type) local width, height, count = 0, 0, 0 if not _type.Saved.HideAll then for key, value in pairs(_type.Saved.Selected) do if IsCollectibleUnlocked(key) and IsCollectibleValidForPlayer(key) and value then count = count + 1 end end end local function GetBarMaxCount(type) local barConstraintXY = _type.Saved[type] if _type.Saved.IsCombined then barConstraintXY = base.Saved.Combine[type] end if barConstraintXY == 0 then barConstraintXY = base.Saved[type] end if count < barConstraintXY then barConstraintXY = count end return barConstraintXY end _type.BarDepth, _type.BarWidth = GetBarMaxCount("BarDepth"), GetBarMaxCount("BarWidth") if count > 0 then local barWidth = math.ceil(count / _type.BarDepth) local maxBarWidth = _type.BarWidth if maxBarWidth > 0 and maxBarWidth < barWidth then barWidth = maxBarWidth end local isHorizontal = _type.Saved.Horizontal width = base.Saved.ButtonXY * (not isHorizontal and barWidth or _type.BarDepth) height = base.Saved.ButtonXY * (isHorizontal and barWidth or _type.BarDepth) end return width, height end function base.SetFrameSizeIfExists(frame, width, height) if frame ~= nil then frame:SetHeight(height) frame:SetWidth(width) end end function base.HasAny(array) for _ in pairs(array) do return true end return false end function base.SetControlText(control, text) control.SetText(control, text) end