diff --git a/Frame.lua b/Frame.lua index f1f5bc4..128452d 100644 --- a/Frame.lua +++ b/Frame.lua @@ -305,6 +305,7 @@ end function Gladdy:ToggleFrame(i) self:Reset() if (self.frame and self.frame:IsShown() and i == self.curBracket) then + self.frame.testing = nil self:HideFrame() else self.curBracket = i @@ -312,6 +313,7 @@ function Gladdy:ToggleFrame(i) if (not self.frame) then self:CreateFrame() end + self.frame.testing = true for o = 1, self.curBracket do local unit = "arena" .. o diff --git a/Gladdy.lua b/Gladdy.lua index 7cdf5a0..4538015 100644 --- a/Gladdy.lua +++ b/Gladdy.lua @@ -8,10 +8,10 @@ local tsort = table.sort local str_lower = string.lower local math_abs = math.abs local GetTime = GetTime +local InCombatLockdown = InCombatLockdown local CreateFrame = CreateFrame local DEFAULT_CHAT_FRAME = DEFAULT_CHAT_FRAME local IsAddOnLoaded = IsAddOnLoaded -local IsInInstance = IsInInstance local GetBattlefieldStatus = GetBattlefieldStatus local IsActiveBattlefieldArena = IsActiveBattlefieldArena local RELEASE_TYPES = { alpha = "Alpha", beta = "Beta", release = "Release"} @@ -173,23 +173,28 @@ function Gladdy:NewModule(name, priority, defaults) return module end -function Gladdy:CreateMover(frame, x, y, name, points) +function Gladdy:CreateMover(frame, xConfig, yConfig, name, points, width, height, xOffset, yOffset) if not frame.mover then frame.mover = CreateFrame("Frame", nil, frame, BackdropTemplateMixin and "BackdropTemplate") - frame.mover:SetFrameStrata("TOOLTIP") - frame.mover:SetPoint(points[1], frame, points[2], 0, 0) + frame.mover:SetFrameStrata("DIALOG") + frame.mover:SetPoint(points[1], frame, points[2], xOffset or 0, yOffset or 0) + frame.mover:SetHeight(height or frame:GetHeight()) + frame.mover:SetWidth(width or frame:GetWidth()) + local backdrop = { bgFile = "Interface/Tooltips/UI-Tooltip-Background", edgeFile = "", tile = true, tileSize = 16, edgeSize = 10, insets = {left = 0, right = 0, top = 0, bottom = 0} } - frame.mover:SetBackdrop(backdrop) - frame.mover:SetBackdropColor(0,0,0,0.8) - frame.mover:SetHeight(15) - frame.mover:SetWidth(60) - frame.mover.text = frame.mover:CreateFontString(nil, "ARTWORK", "GameFontHighlightSmall") + frame.mover:SetBackdropColor(0,1,0,0.5) + frame.mover.border = CreateFrame("Frame", nil, frame.mover, BackdropTemplateMixin and "BackdropTemplate") + frame.mover.border:SetBackdrop({ edgeFile = Gladdy:SMFetch("border", "highlightBorderStyle"), edgeSize = 2 }) + frame.mover.border:SetAllPoints(frame.mover) + frame.mover.border:SetBackdropBorderColor(0,1,0,1) + + frame.mover.text = frame.mover.border:CreateFontString(nil, "ARTWORK", "GameFontHighlightSmall") frame.mover.text:SetText(name) frame.mover.text:SetPoint("CENTER") @@ -212,15 +217,21 @@ function Gladdy:CreateMover(frame, x, y, name, points) diffY = self.start[2] > self.stop[2] and -diffY or diffY frame:ClearAllPoints() frame:SetPoint(self.point[1], self.point[2], self.point[3], self.point[4] + diffX, self.point[5] + diffY) - Gladdy.db[x] = self.point[4] + diffX - Gladdy.db[y] = self.point[5] + diffY + Gladdy.db[xConfig] = self.point[4] + diffX + Gladdy.db[yConfig] = self.point[5] + diffY Gladdy:UpdateFrame() end) else frame.mover:ClearAllPoints() - frame.mover:SetPoint(points[1], frame, points[2], 0, 0) + frame.mover:SetPoint(points[1], frame, points[2], xOffset or 0, yOffset or 0) + frame.mover:SetHeight(height or frame:GetHeight()) + frame.mover:SetWidth(width or frame:GetWidth()) + end + if self.frame and self.frame.testing then + frame.mover:Show() + else + frame.mover:Hide() end - end --------------------------- @@ -298,7 +309,6 @@ function Gladdy:OnInitialize() self.guids = {} self.curBracket = nil self.curUnit = 1 - self.lastInstance = nil self:SetupOptions() @@ -402,16 +412,10 @@ function Gladdy:PLAYER_ENTERING_WORLD() LibStub("AceConfigDialog-3.0"):Open("Gladdy", nil, LibStub("AceConfigDialog-3.0"):SelectGroup("Gladdy", "XiconProfiles")) self.showConfig = nil end - local instance = select(2, IsInInstance()) - if (instance ~= "arena" and self.frame and self.frame:IsVisible() and not self.frame.testing) then + if (self.frame and self.frame:IsVisible()) then self:Reset() self:HideFrame() end - if (instance == "arena") then - self:Reset() - self:HideFrame() - end - self.lastInstance = instance end function Gladdy:UPDATE_BATTLEFIELD_STATUS(_, index) diff --git a/Modules/BuffsDebuffs.lua b/Modules/BuffsDebuffs.lua index 966e459..0590c9c 100644 --- a/Modules/BuffsDebuffs.lua +++ b/Modules/BuffsDebuffs.lua @@ -331,7 +331,10 @@ function BuffsDebuffs:UpdateFrame(unit) end end if (unit == "arena1") then - Gladdy:CreateMover(self.frames[unit].debuffFrame, "buffsXOffset", "buffsYOffset", L["Debuffs"], {"BOTTOMLEFT", "TOPLEFT"}) + Gladdy:CreateMover(self.frames[unit].debuffFrame, "buffsXOffset", "buffsYOffset", L["Debuffs"], + Gladdy.db.buffsCooldownGrowDirection == "LEFT" and {"TOPRIGHT", "TOPRIGHT"} or {"TOPLEFT", "TOPLEFT"}, + Gladdy.db.buffsIconSize * Gladdy.db.buffsWidthFactor, + Gladdy.db.buffsIconSize, Gladdy.db.buffsCooldownGrowDirection == "LEFT"and -1 or 1, 0) end --BUFFS @@ -428,7 +431,10 @@ function BuffsDebuffs:UpdateFrame(unit) end end if (unit == "arena1") then - Gladdy:CreateMover(self.frames[unit].buffFrame, "buffsBuffsXOffset", "buffsBuffsYOffset", L["Buffs"], {"BOTTOMLEFT", "TOPLEFT"}) + Gladdy:CreateMover(self.frames[unit].buffFrame, "buffsBuffsXOffset", "buffsBuffsYOffset", L["Buffs"], + Gladdy.db.buffsBuffsCooldownGrowDirection == "LEFT" and {"TOPRIGHT", "TOPRIGHT"} or {"TOPLEFT", "TOPLEFT"}, + Gladdy.db.buffsBuffsIconSize * Gladdy.db.buffsBuffsWidthFactor, + Gladdy.db.buffsBuffsIconSize, Gladdy.db.buffsBuffsCooldownGrowDirection == "LEFT"and -1 or 1, 0) end for i=1, #self.frames[unit].auras[AURA_TYPE_BUFF] do diff --git a/Modules/Castbar.lua b/Modules/Castbar.lua index b0a07b3..4717563 100644 --- a/Modules/Castbar.lua +++ b/Modules/Castbar.lua @@ -194,7 +194,7 @@ function Castbar:UpdateFrame(unit) castBar.icon.texture.overlay:SetVertexColor(Gladdy.db.castBarIconColor.r, Gladdy.db.castBarIconColor.g, Gladdy.db.castBarIconColor.b, Gladdy.db.castBarIconColor.a) if (unit == "arena1") then - Gladdy:CreateMover(castBar, "castBarXOffset", "castBarYOffset", L["Cast Bar"], {"BOTTOMLEFT", "TOPLEFT"}) + Gladdy:CreateMover(castBar, "castBarXOffset", "castBarYOffset", L["Cast Bar"], {"TOPLEFT", "TOPLEFT"}, Gladdy.db.castBarWidth, Gladdy.db.castBarHeight, 0, 0) end end diff --git a/Modules/Cooldowns.lua b/Modules/Cooldowns.lua index 90bb6a4..1ab006d 100644 --- a/Modules/Cooldowns.lua +++ b/Modules/Cooldowns.lua @@ -168,7 +168,9 @@ function Cooldowns:UpdateFrame(unit) button.spellCooldownFrame:SetWidth(1) button.spellCooldownFrame:Show() if (unit == "arena1") then - Gladdy:CreateMover(button.spellCooldownFrame, "cooldownXOffset", "cooldownYOffset", L["Cooldown"], {"BOTTOMLEFT", "TOPLEFT"}) + Gladdy:CreateMover(button.spellCooldownFrame, "cooldownXOffset", "cooldownYOffset", L["Cooldown"], + Gladdy.db.cooldownXPos == "RIGHT" and {"TOPRIGHT", "TOPRIGHT"} or {"TOPLEFT", "TOPLEFT"}, + Gladdy.db.cooldownSize * Gladdy.db.cooldownWidthFactor, Gladdy.db.cooldownSize) end -- Update each cooldown icon local o = 1 diff --git a/Modules/Diminishings.lua b/Modules/Diminishings.lua index f11f872..3d46253 100644 --- a/Modules/Diminishings.lua +++ b/Modules/Diminishings.lua @@ -180,7 +180,11 @@ function Diminishings:UpdateFrame(unit) drFrame:SetHeight(Gladdy.db.drIconSize) if (unit == "arena1") then Gladdy:CreateMover(drFrame, "drXOffset", "drYOffset", L["Diminishings"], - Gladdy.db.drCooldownPos == "RIGHT" and {"BOTTOMLEFT", "TOPLEFT"} or {"BOTTOMRIGHT", "TOPRIGHT"}) + Gladdy.db.drCooldownPos == "RIGHT" and {"TOPLEFT", "TOPLEFT"} or {"TOPRIGHT", "TOPRIGHT"}, --point + Gladdy.db.drIconSize * Gladdy.db.drWidthFactor, -- width + Gladdy.db.drIconSize, + 0, --xoffset + 0) --yoffset end for i = 1, 16 do diff --git a/Modules/Pets.lua b/Modules/Pets.lua index 4cb8196..9039ce8 100644 --- a/Modules/Pets.lua +++ b/Modules/Pets.lua @@ -305,7 +305,7 @@ function Pets:UpdateFrame(unitId) healthBar.nameText:SetTextColor(Gladdy.db.petHealthBarFontColor.r, Gladdy.db.petHealthBarFontColor.g, Gladdy.db.petHealthBarFontColor.b, Gladdy.db.petHealthBarFontColor.a) healthBar.healthText:SetTextColor(Gladdy.db.petHealthBarFontColor.r, Gladdy.db.petHealthBarFontColor.g, Gladdy.db.petHealthBarFontColor.b, Gladdy.db.petHealthBarFontColor.a) if (unit == "arenapet1") then - Gladdy:CreateMover(self.frames[unit], "petXOffset", "petYOffset", L["Pets"], {"BOTTOMLEFT", "TOPLEFT"}) + Gladdy:CreateMover(self.frames[unit], "petXOffset", "petYOffset", L["Pets"], {"TOPLEFT", "TOPLEFT"}) end end