diff --git a/Gladdy.lua b/Gladdy.lua index 428005a..7cdf5a0 100644 --- a/Gladdy.lua +++ b/Gladdy.lua @@ -6,6 +6,7 @@ local pairs = pairs local tinsert = table.insert local tsort = table.sort local str_lower = string.lower +local math_abs = math.abs local GetTime = GetTime local CreateFrame = CreateFrame local DEFAULT_CHAT_FRAME = DEFAULT_CHAT_FRAME @@ -172,6 +173,56 @@ function Gladdy:NewModule(name, priority, defaults) return module end +function Gladdy:CreateMover(frame, x, y, name, points) + 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) + 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.text:SetText(name) + frame.mover.text:SetPoint("CENTER") + + frame.mover:SetMovable(true) + frame.mover:EnableMouse(true) + + frame.mover:SetScript("OnMouseDown", function(self) + self.point = { frame:GetPoint() } + self.start = { frame:GetCenter() } + frame:StartMoving() + self:StartMoving() + end) + frame.mover:SetScript("OnMouseUp", function(self) + frame:StopMovingOrSizing() + self:StopMovingOrSizing() + self.stop = { frame:GetCenter() } + local diffX = math_abs(self.start[1] - self.stop[1]) + diffX = self.start[1] > self.stop[1] and -diffX or diffX + local diffY = math_abs(self.start[2] - self.stop[2]) + 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:UpdateFrame() + end) + else + frame.mover:ClearAllPoints() + frame.mover:SetPoint(points[1], frame, points[2], 0, 0) + end + +end + --------------------------- -- INIT diff --git a/Modules/BuffsDebuffs.lua b/Modules/BuffsDebuffs.lua index 0a4faeb..966e459 100644 --- a/Modules/BuffsDebuffs.lua +++ b/Modules/BuffsDebuffs.lua @@ -235,11 +235,13 @@ end function BuffsDebuffs:CreateFrame(unit) local verticalMargin = (Gladdy.db.highlightInset and 0 or Gladdy.db.highlightBorderSize) + Gladdy.db.padding local debuffFrame = CreateFrame("Frame", "GladdyDebuffs" .. unit, Gladdy.buttons[unit]) + debuffFrame:SetMovable(true) debuffFrame:SetHeight(Gladdy.db.buffsIconSize) debuffFrame:SetWidth(1) debuffFrame:SetPoint("BOTTOMLEFT", Gladdy.buttons[unit].healthBar, "TOPLEFT", 0, verticalMargin) debuffFrame.unit = unit local buffFrame = CreateFrame("Frame", "GladdyBuffs" .. unit, Gladdy.buttons[unit]) + buffFrame:SetMovable(true) buffFrame:SetHeight(Gladdy.db.buffsIconSize) buffFrame:SetWidth(1) buffFrame:SetPoint("BOTTOMLEFT", Gladdy.buttons[unit].healthBar, "TOPLEFT", 0, verticalMargin) @@ -328,6 +330,9 @@ function BuffsDebuffs:UpdateFrame(unit) self.frames[unit].debuffFrame:SetPoint("LEFT", anchor, "RIGHT", horizontalMargin + Gladdy.db.buffsXOffset, Gladdy.db.buffsYOffset) end end + if (unit == "arena1") then + Gladdy:CreateMover(self.frames[unit].debuffFrame, "buffsXOffset", "buffsYOffset", L["Debuffs"], {"BOTTOMLEFT", "TOPLEFT"}) + end --BUFFS self.frames[unit].buffFrame:SetHeight(Gladdy.db.buffsBuffsIconSize) @@ -422,6 +427,10 @@ function BuffsDebuffs:UpdateFrame(unit) self.frames[unit].buffFrame:SetPoint("LEFT", anchor, "RIGHT", Gladdy.db.padding + Gladdy.db.buffsBuffsXOffset, Gladdy.db.buffsBuffsYOffset) end end + if (unit == "arena1") then + Gladdy:CreateMover(self.frames[unit].buffFrame, "buffsBuffsXOffset", "buffsBuffsYOffset", L["Buffs"], {"BOTTOMLEFT", "TOPLEFT"}) + end + for i=1, #self.frames[unit].auras[AURA_TYPE_BUFF] do styleIcon(self.frames[unit].auras[AURA_TYPE_BUFF][i], AURA_TYPE_BUFF) end diff --git a/Modules/Castbar.lua b/Modules/Castbar.lua index 17d62e7..b0a07b3 100644 --- a/Modules/Castbar.lua +++ b/Modules/Castbar.lua @@ -59,6 +59,7 @@ end function Castbar:CreateFrame(unit) local castBar = CreateFrame("Frame", nil, Gladdy.buttons[unit], BackdropTemplateMixin and "BackdropTemplate") castBar:EnableMouse(false) + castBar:SetMovable(true) castBar.unit = unit castBar:SetBackdrop({ edgeFile = Gladdy:SMFetch("border", "castBarBorderStyle"), @@ -191,6 +192,10 @@ function Castbar:UpdateFrame(unit) castBar.icon.texture.overlay:SetTexture(Gladdy.db.castBarIconStyle) 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"}) + end end --------------------------- diff --git a/Modules/CombatIndicator.lua b/Modules/CombatIndicator.lua index 54a8b76..572e0b1 100644 --- a/Modules/CombatIndicator.lua +++ b/Modules/CombatIndicator.lua @@ -38,6 +38,7 @@ function CombatIndicator:CreateFrame(unit) end local ciFrame = CreateFrame("Frame", "GladdyCombatindicator" .. unit, button) ciFrame:EnableMouse(false) + ciFrame:SetMovable(true) ciFrame:SetFrameStrata("HIGH") ciFrame:SetHeight(Gladdy.db.ciSize) ciFrame:SetWidth(Gladdy.db.ciSize * Gladdy.db.ciWidthFactor) @@ -77,6 +78,9 @@ function CombatIndicator:UpdateFrame(unit) else ciFrame:Show() end + if (unit == "arena1") then + Gladdy:CreateMover(ciFrame, "ciXOffset", "ciYOffset", L["Combat Indicator"], {"BOTTOMLEFT", "TOPLEFT"}) + end end function CombatIndicator:Test() diff --git a/Modules/Cooldowns.lua b/Modules/Cooldowns.lua index c2ed7b9..90bb6a4 100644 --- a/Modules/Cooldowns.lua +++ b/Modules/Cooldowns.lua @@ -94,6 +94,7 @@ function Cooldowns:CreateFrame(unit) -- Cooldown frame local spellCooldownFrame = CreateFrame("Frame", nil, button) spellCooldownFrame:EnableMouse(false) + spellCooldownFrame:SetMovable(true) for x = 1, 14 do local icon = CreateFrame("Frame", nil, spellCooldownFrame) icon:EnableMouse(false) @@ -166,6 +167,9 @@ function Cooldowns:UpdateFrame(unit) button.spellCooldownFrame:SetHeight(Gladdy.db.cooldownSize) button.spellCooldownFrame:SetWidth(1) button.spellCooldownFrame:Show() + if (unit == "arena1") then + Gladdy:CreateMover(button.spellCooldownFrame, "cooldownXOffset", "cooldownYOffset", L["Cooldown"], {"BOTTOMLEFT", "TOPLEFT"}) + end -- Update each cooldown icon local o = 1 for j = 1, 14 do diff --git a/Modules/Diminishings.lua b/Modules/Diminishings.lua index e999943..f11f872 100644 --- a/Modules/Diminishings.lua +++ b/Modules/Diminishings.lua @@ -67,6 +67,7 @@ end function Diminishings:CreateFrame(unit) local drFrame = CreateFrame("Frame", nil, Gladdy.buttons[unit]) drFrame:EnableMouse(false) + drFrame:SetMovable(true) for i = 1, 16 do local icon = CreateFrame("Frame", "GladdyDr" .. unit .. "Icon" .. i, drFrame) @@ -177,6 +178,10 @@ function Diminishings:UpdateFrame(unit) drFrame:SetWidth(Gladdy.db.drIconSize * 16) 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"}) + end for i = 1, 16 do local icon = drFrame["icon" .. i] diff --git a/Modules/Pets.lua b/Modules/Pets.lua index 994a8b5..780febf 100644 --- a/Modules/Pets.lua +++ b/Modules/Pets.lua @@ -134,6 +134,7 @@ function Pets:CreateFrame(unitId) return end local button = CreateFrame("Frame", "GladdyButtonFramePet" .. unit, Gladdy.frame) + button:SetMovable(true) --button:SetAlpha(0) button:SetPoint("LEFT", Gladdy.buttons[unitId].healthBar, "RIGHT", Gladdy.db.petXOffset, Gladdy.db.petYOffset) @@ -289,6 +290,9 @@ function Pets:UpdateFrame(unitId) end 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"}) + end end function Pets:SetHealthText(healthBar, health, healthMax)