move modules with mouse
This commit is contained in:
		
							
								
								
									
										51
									
								
								Gladdy.lua
									
									
									
									
									
								
							
							
						
						
									
										51
									
								
								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
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
 | 
			
		||||
---------------------------
 | 
			
		||||
 
 | 
			
		||||
@@ -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()
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
 
 | 
			
		||||
@@ -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]
 | 
			
		||||
 
 | 
			
		||||
@@ -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)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user