diff --git a/EventListener.lua b/EventListener.lua index 2b09a64..4a70816 100644 --- a/EventListener.lua +++ b/EventListener.lua @@ -177,7 +177,7 @@ function EventListener:ARENA_OPPONENT_UPDATE(unit, updateReason) end end -local exceptionNames = { +local exceptionNames = { -- TODO MOVE ME TO CLASSBUFFS LIB [31117] = GetSpellInfo(30405) .. " Silence", -- Unstable Affliction Silence [43523] = GetSpellInfo(30405) .. " Silence", [24131] = select(1, GetSpellInfo(19386)) .. " Dot", -- Wyvern Sting Dot diff --git a/Frame.lua b/Frame.lua index 83eae02..0b65d81 100644 --- a/Frame.lua +++ b/Frame.lua @@ -30,6 +30,9 @@ Gladdy.BUTTON_DEFAULTS = { function Gladdy:CreateFrame() self.frame = CreateFrame("Frame", "GladdyFrame", UIParent) + --self.frame.texture = self.frame:CreateTexture(nil, "OVERLAY") + --self.frame.texture:SetAllPoints(self.frame) + --self.frame.texture:SetTexture("Interface\\AddOns\\Gladdy\\Images\\Border_rounded_blp") self.frame:SetClampedToScreen(true) self.frame:EnableMouse(false) @@ -109,48 +112,69 @@ function Gladdy:UpdateFrame() end local teamSize = self.curBracket or 0 - local iconSize = self.db.healthBarHeight - local margin = 0 - local width = self.db.barWidth + self.db.padding * 2 + 5 - local height = self.db.healthBarHeight * teamSize + margin * (teamSize - 1) + self.db.padding * 2 + 5 - local extraBarWidth = 0 - local extraBarHeight = 0 + local highlightBorderSize = (self.db.highlightInset and 0 or self.db.highlightBorderSize * 2) + local leftSize = 0 + local rightSize = 0 + --Trinket + Racial + if self.db.trinketEnabled and self.db.trinketPos == "LEFT" then + leftSize = leftSize + self.db.trinketSize * self.db.trinketWidthFactor + self.db.padding + if self.db.racialEnabled and self.db.racialAnchor == "trinket" and self.db.racialPos == "LEFT" then + leftSize = leftSize + self.db.racialSize * self.db.racialWidthFactor + self.db.padding + end + end + if self.db.trinketEnabled and self.db.trinketPos == "RIGHT" then + rightSize = rightSize + self.db.trinketSize * self.db.trinketWidthFactor + self.db.padding + if self.db.racialEnabled and self.db.racialAnchor == "trinket" and self.db.racialPos == "RIGHT" then + rightSize = rightSize + self.db.racialSize * self.db.racialWidthFactor + self.db.padding + end + end + --ClassIcon + if self.db.classIconPos == "LEFT" then + leftSize = leftSize + self.db.classIconSize * self.db.classIconWidthFactor + self.db.padding + else + rightSize = rightSize + self.db.classIconSize * self.db.classIconWidthFactor + self.db.padding + end + --Highlight + if not self.db.highlightInset then + leftSize = leftSize + self.db.highlightBorderSize + rightSize = rightSize + self.db.highlightBorderSize + end - -- Powerbar - iconSize = iconSize + self.db.powerBarHeight - margin = margin + self.db.powerBarHeight - height = height + self.db.powerBarHeight * teamSize - extraBarHeight = extraBarHeight + self.db.powerBarHeight + local margin = self.db.powerBarHeight + 1 + local width = self.db.barWidth + leftSize + rightSize + local height = (self.db.healthBarHeight + self.db.powerBarHeight + 1) * teamSize + + (self.db.highlightInset and 0 or self.db.highlightBorderSize * 2 * teamSize) + + self.db.bottomMargin * (teamSize - 1) - -- Cooldown - margin = margin + 1 + self.db.highlightBorderSize * 2 + 1 -- + 1 space between health and power bar - height = height + self.db.highlightBorderSize * teamSize + -- Highlight + margin = margin + highlightBorderSize if (self.db.cooldownYPos == "TOP" or self.db.cooldownYPos == "BOTTOM") and self.db.cooldown then margin = margin + self.db.cooldownSize - height = height + self.db.cooldownSize * teamSize + height = height + self.db.cooldownSize * (teamSize - 1) end if (self.db.buffsCooldownPos == "TOP" or self.db.buffsCooldownPos == "BOTTOM") and self.db.buffsEnabled then margin = margin + self.db.buffsIconSize - height = height + self.db.buffsIconSize * teamSize + height = height + self.db.buffsIconSize * (teamSize - 1) end if (self.db.buffsBuffsCooldownPos == "TOP" or self.db.buffsBuffsCooldownPos == "BOTTOM") and self.db.buffsEnabled then margin = margin + self.db.buffsBuffsIconSize - height = height + self.db.buffsBuffsIconSize * teamSize + height = height + self.db.buffsBuffsIconSize * (teamSize - 1) end if self.db.buffsCooldownPos == "TOP" and self.db.cooldownYPos == "TOP" and self.db.cooldown and self.db.buffsEnabled then margin = margin + 1 + height = height + (teamSize - 1) end if self.db.buffsCooldownPos == "BOTTOM" and self.db.cooldownYPos == "BOTTOM" and self.db.cooldown and self.db.buffsEnabled then margin = margin + 1 + height = height + (teamSize - 1) end - -- Classicon - width = width + iconSize - extraBarWidth = extraBarWidth + iconSize - - -- Trinket - width = width + iconSize + -- GrowDirection + if (self.db.growDirection == "LEFT" or self.db.growDirection == "RIGHT") then + width = self.db.barWidth * teamSize + (leftSize + rightSize) * teamSize + self.db.bottomMargin * (teamSize - 1) + height = self.db.healthBarHeight + self.db.powerBarHeight + 1 + end self.frame:SetScale(self.db.frameScale) self.frame:SetWidth(width) @@ -161,53 +185,71 @@ function Gladdy:UpdateFrame() self.frame:SetPoint("CENTER") else local scale = self.frame:GetEffectiveScale() - if (self.db.growUp) then + if (self.db.growDirection == "TOP") then self.frame:SetPoint("BOTTOMLEFT", UIParent, "BOTTOMLEFT", self.db.x / scale, self.db.y / scale) else self.frame:SetPoint("TOPLEFT", UIParent, "BOTTOMLEFT", self.db.x / scale, self.db.y / scale) end end + --Anchor self.anchor:SetWidth(width) self.anchor:ClearAllPoints() - if (self.db.growUp) then + if (self.db.growDirection == "TOP") then self.anchor:SetPoint("TOPLEFT", self.frame, "BOTTOMLEFT") - else + elseif self.growDirection == "BOTTOM" or self.growDirection == "RIGHT" then self.anchor:SetPoint("BOTTOMLEFT", self.frame, "TOPLEFT") + else + self.anchor:SetPoint("BOTTOMRIGHT", self.frame, "TOPRIGHT") end if (self.db.locked) then self.anchor:Hide() - self.anchor:Hide() else self.anchor:Show() end for i = 1, teamSize do local button = self.buttons["arena" .. i] - button:SetWidth(self.db.barWidth + extraBarWidth) + button:SetWidth(self.db.barWidth) button:SetHeight(self.db.healthBarHeight) button.secure:SetWidth(self.db.barWidth) - button.secure:SetHeight(self.db.healthBarHeight + extraBarHeight) + button.secure:SetHeight(self.db.healthBarHeight + self.db.powerBarHeight + 1) button:ClearAllPoints() button.secure:ClearAllPoints() - if (self.db.growUp) then + if (self.db.growDirection == "TOP") then if (i == 1) then - button:SetPoint("BOTTOMLEFT", self.frame, "BOTTOMLEFT", self.db.padding + 2, 0) - button.secure:SetPoint("TOPLEFT", button.healthBar, "TOPLEFT") + button:SetPoint("BOTTOMLEFT", self.frame, "BOTTOMLEFT", leftSize, self.db.powerBarHeight + 1) + button.secure:SetPoint("TOPLEFT", button.powerBar, "TOPLEFT") else button:SetPoint("BOTTOMLEFT", self.buttons["arena" .. (i - 1)], "TOPLEFT", 0, margin + self.db.bottomMargin) - button.secure:SetPoint("TOPLEFT", button.healthBar, "TOPLEFT") + button.secure:SetPoint("TOPLEFT", button.powerBar, "TOPLEFT") end - else + elseif (self.db.growDirection == "BOTTOM") then if (i == 1) then - button:SetPoint("TOPLEFT", self.frame, "TOPLEFT", self.db.padding + 2, 0) + button:SetPoint("TOPLEFT", self.frame, "TOPLEFT", leftSize, 0) button.secure:SetPoint("TOPLEFT", button.healthBar, "TOPLEFT") else button:SetPoint("TOPLEFT", self.buttons["arena" .. (i - 1)], "BOTTOMLEFT", 0, -margin - self.db.bottomMargin) button.secure:SetPoint("TOPLEFT", button.healthBar, "TOPLEFT") end + elseif (self.db.growDirection == "LEFT") then + if (i == 1) then + button:SetPoint("TOPRIGHT", self.frame, "TOPRIGHT", -rightSize, 0) + button.secure:SetPoint("TOPLEFT", button.healthBar, "TOPLEFT") + else + button:SetPoint("TOPRIGHT", self.buttons["arena" .. (i - 1)], "TOPLEFT", -rightSize - leftSize - self.db.bottomMargin, 0) + button.secure:SetPoint("TOPLEFT", button.healthBar, "TOPLEFT") + end + elseif (self.db.growDirection == "RIGHT") then + if (i == 1) then + button:SetPoint("TOPLEFT", self.frame, "TOPLEFT", leftSize, 0) + button.secure:SetPoint("TOPLEFT", button.healthBar, "TOPLEFT") + else + button:SetPoint("TOPLEFT", self.buttons["arena" .. (i - 1)], "TOPRIGHT", leftSize + rightSize + self.db.bottomMargin, 0) + button.secure:SetPoint("TOPLEFT", button.healthBar, "TOPLEFT") + end end @@ -258,7 +300,10 @@ function Gladdy:CreateButton(i) local button = CreateFrame("Frame", "GladdyButtonFrame" .. i, self.frame) button:EnableMouse(false) - button:SetAlpha(0) + --button:SetAlpha(0) + --button.texture = button:CreateTexture(nil, "OVERLAY") + --button.texture:SetAllPoints(button) + --button.texture:SetTexture("Interface\\AddOns\\Gladdy\\Images\\Border_rounded_blp") local secure = CreateFrame("Button", "GladdyButton" .. i, button, "SecureActionButtonTemplate") secure:RegisterForClicks("AnyUp") diff --git a/Gladdy.lua b/Gladdy.lua index 0082348..cd82826 100644 --- a/Gladdy.lua +++ b/Gladdy.lua @@ -25,7 +25,7 @@ local MAJOR, MINOR = "Gladdy", 4 local Gladdy = LibStub:NewLibrary(MAJOR, MINOR) local L Gladdy.version_major_num = 1 -Gladdy.version_minor_num = 0.07 +Gladdy.version_minor_num = 0.08 Gladdy.version_num = Gladdy.version_major_num + Gladdy.version_minor_num Gladdy.version_releaseType = RELEASE_TYPES.beta Gladdy.version = PREFIX .. Gladdy.version_num .. "-" .. Gladdy.version_releaseType diff --git a/Gladdy.toc b/Gladdy.toc index 877d2b0..20fe35c 100644 --- a/Gladdy.toc +++ b/Gladdy.toc @@ -1,6 +1,6 @@ ## Interface: 20501 ## Title: Gladdy - TBC -## Version: 1.07-Beta +## Version: 1.08-Beta ## Notes: The most powerful arena AddOn for WoW 2.5.1 ## Author: XiconQoo, DnB_Junkee, Knall ## X-Email: contact me on discord Knall#1751 diff --git a/Images/BasicProfiles/Blizz1.blp b/Images/BasicProfiles/Blizz1.blp new file mode 100644 index 0000000..a90624b Binary files /dev/null and b/Images/BasicProfiles/Blizz1.blp differ diff --git a/ImportStrings.lua b/ImportStrings.lua index 7e97feb..c0fa18d 100644 --- a/ImportStrings.lua +++ b/ImportStrings.lua @@ -1,7 +1,7 @@ local Gladdy = LibStub("Gladdy") function Gladdy:GetKlimpProfile() - return "4XzVBL2CBBZT(xu8GDa(XOK62mtJJVvUZ9TZ0rP0s028gjrpKu3u3p0F7VNfasQfAQe72VertcCWz5bNnGSqU4MfZxvpRQEvr97QwxvJViFXvYfZVDXLUmLwgeoH2zmcRDXDVb(N53p6xQh7lTa92D3DnFyz125L)vXIRuM4RMH)ZBx)4d5lU0AegTmZAvbJXM5WjRxmFzEt7S8XyZReilH)Bn(VTOe9UQQ1RQ(6wMU44QZxwMVES3ZKEE7tRlwm)dBBlQVlFzXV)2vR(02MF)hxNVA1t)(h2KFFrZVZJ9Z1v72UQy1NVD9J4k((YM8Bxx8UY6LanUTNPVFidlUWCAwoo6FQO8(hAbTJiXz)WwKSRwmBX8hkYx3(amQRY3uCz12wwtkDlMV9XBQAl2C9682cwz(21Fn)PMBYRVVOfM(TrT98hQ(6B3vN)(c6prYYRZ1vnlM)lF4h)jcr8)wUQ9HlZx2cC(vYlu2bR(nf)z7UAqp9XYTLBYxx2a8)JfT)enGRlQxwSTf0uiTtyRVFn7dGcznPuMffHKnK44B(01dynMfgOAcdbzPj(J1vF99L1flBlR22j0llhBBGXRbqPjtOmzsTXgrL3p6xQh7lTKLQUytvnYKlM)2Aq1)3)Xv51apbljAzoeibQ2F7ta7xa4I3O98O(zqR)(I7Y3TUf5vN3lWFl6rlpwxwvx2(0IRmectf86XhJK2JkvAyZ6ZthPqlctnMGrnoD41slDo5K0XzNAT0sf4lzSXOIJrk9tWpQmGHgFmm)Kzf6P4zRjm5A5fHXLlnthxMpBQXOcIXht0U7YctrhLWAMIoAToBCBAKF8(XvHr1JEsuyilmUsoXWzJBZ5fcmdtneiaLzCtvsfRYutTTrygFP6qo(XxkMDcoZKGlvqnLgoaS8u2sJ7zekEpJ0ONeBjfk)44ywYvwLFkdHcCxm(Af9xyaVPtUVsPMufgaHFkdAWK9mYfpMmDyktHtmL3uRY8moDSrhbtAqv6m14khlVu(WuKrRvIP8bQ1(PLB9KUTnwJE8XWqqNzkqQszNmWxMysRGwOEgxoPTvpdupYncXZecjb)0tSsTPCw6th5dB2SBBboT(KEVilJtI8cHIYJuIZmLfZ3Fcx0A)FsjCiqsgZy32LNjL3inW9tuCX8))I6giRQpVj))RQ(ZB3THE7Q6oc(gibgiJMRRQBRZlBtP3EBkpuETaD0rkHlRQ3SVkyys0xeqXFVAzAgK78Y15nu1h)RuRZYyMMP82U0dry92mJq7ZuEWYD3BGaUuMCVu71aL5lLuXIqgK)ScvPDzF6sgPFBa8awFceaO3WcUoaUggW7fmzuNFnSWLBVNv1hyvXIrMYQoyoF)c3JvFTOEqjwHb1nShTzs93)XnGrST8X)(piYSy(Dvl31Co1GsBeBRl3(LOQzW(JhorrsjoRxVd8w(2TWYUSydmUgCPIe8xkYx9eUDP5XIL4Sl2wSHErCa)AdJ45vc)WQcQcT8AWfZ86IMD1XAFOTXRWP10pJBEagYda(n5vJyVpM)N4qYRb)wVdySweEhbjzQeU4Kf1qZFFj(UAOcwaUTUyrFn4K439oYMpeNDiWz4U7UQphR80OFlEIK2e)tTNdbTC6wkKZnmqCHBOR72iHKwPW)QqjikZye6cupto85AmphYPfEoG(RaJXzF9YjuqBFviKZK96qiPW(krjRMll5ftOGs96GNuXQGofEYMGtrFT2PjNw7C6xfglihLX(2iK15FDmEqjiIxh3bbPzmL0fYOspRpuXeet4LVkCLn2)NxmHcwPAmXdCdom8DMBAYPTzzVo8L0)kjGYWRJkxRYcJPQ(2OK0nU)3lWoapauHwHW0KeawVoBCcXgN9IjK0(Idn0MYM40jE1NRhL6IDVS6Wmj2Rr6V0uotLbCyoW7TimNav(nOt1doMe84pkF72LpaYrVqGPTni)N(zEOyd1fS8lfRsT7h0PbHvGZbYyjZJpOuz2m6nquh6fAhegdEWJD4a(fBk8mSbcoAMQmW9go(0VgLvIpKj00aLALmqeGOh1qkCEsO4x61z8lSsnnS435oQGRxAbXMJG)TiTqzsIXuqAn8Vs(bTHjewCn(RvXuY5dbMcAdpaSX0ZsnoaFJKgO0zLKmOcEMuaZXFN)tQZViLurM0PzMsBeK2lKPicq9aLecVHwQqATTkxwuofU4AZIHXzyMXA9mxa(ePXAKrgMB7c8GnqFWfI0cd)bp4frDiyoPh0GANfzLJgb1heA1KAMtv8IQsQBRoPv5LI7Nbo1aRLP2OttjWcTvX)Yn9Eg1dtF8fc(HmJKPAG1Ki1z9bWx8dzzSmi9bppjDeB6yLUYP9rzrXViZtt1MmFayMhOJFWZtKB2h8Grqlo8vELCriiu(EwhyMiPtQJiIGLwuBcPO08IhS8maieBk8STiAX4VcABA2ANGNTxg3BKuYkEGEbReK879(4p8wgRpciezrLMplc1nXhGqd0cjKSmYntLjPlIZKmywz0rYW7tuEfdIJB4bFdXjOIBRWEUol2qpA5vrcW8h1K9zXElIVolU7jopy0XnSYaj(ogd6LrLI2rFxlJWAytcVsADu3YmKxgHkr6ivMofcTVRTR9f9hwg68mvC95u4ofzzz5H(qtUXtNFi5gLB18Sf9(r1W(AERkDYw4dIqCmP9lD7tqZnpyd73jjOU4gBLkT)vL8(rhHaPmsBteS2vBIGmTme3BPJdrhGIC5zNCUI(aXhsExbydBS4Cm4vk6AZe9NcVjeTdXnCbpJ2ccthBg9YZwo(C5WxqhSgXuzI9DMk98x0kB0bo4XHboo7(4ETpf2s57GIXv2WGrniSSEh27YkiJM1UGOfxPeIgIPeHuMiKs5crmOtgIOyzurRsEO0jdjedlU9tYoC5ENplE8vZg49KB19mUF2K4d(ZyzrhvIUySeNLDjc(XIXkOnIycp7QZp(2lWjeGnN52Uy9Zsr6bpnmOsHolWryTk8hjUR)w0LCg9lekZH)ckWmj(qg8g6dsEGsJNNPcLn8fem92bWuWGX0gCJrdaKj6bSbeWVEEISgXh9EhPUa0c3Iko2ZlS1g8DISlgld)nqF3QzWny6c8AfayrK)ys5D0iHTzE6VPTBexLXJZPJCTHLheMH)ctK(sM3XRS0ZAepBQOU)t2oHIzManWoWhhyek32gIYedKnUihg11a2KzvRYtFrjTofVwkwvHABjRetarVqejJLv7W2bwIG8dC94qKmWSjnpuUhlJEqnHpW4qsVzf8laRxs8PhCc2OfvJqiA6TssB0ECt4g6k91Tf6PtAaVWkxwxwSD16Nq5C49Nyy7b7AWpDTq(5F4sGZUVU6R)6JOeednS3Pqe7x6X33IbTJ944fC97Y(Q35TGVDz7U810sf3KIm7T51XEJJEwhudYWlf0LGWdaAyVpaAeaiiElsozWPiXh92J8SFalPOVdRj585VpphuXK5c7(2GypGfD64b6)e3c(NqltZ1f1)C5w84DIiPbLW0FNTgqaAqNuKwxHU6WjsIXa1F5r1f1dxF3U6MItyotTRW1HXpWvlEqeZxxKde65tKq2BR2VCUH1)frErnAwVI6u39NoZWzIh70zpplkJBY6mK7DKFSPepZGVCgl5FU4Ya4YvHhYLoyPkGU7nGBUEe)jnIhAEU(HNAkb854jOXNhulEGgZooXSN)weEBvBB1MpMxFF5wm5q5(Y5jlNUZdt6064cP)xXdyeLS)XIKe5xARjOtE8Flj5HVriCNV8dZeh2o07cxH9mP7KwhE)fJM1bDrrGoyojgCFf6)WkIv1)p7YRBp16yb3)ydweyPTEdfeWqRJXcFdYS1Q0q2xqkqPlzyuzffGofJ6axyN(6o2DVkh6DxEsh)p)XI2vG1(X0GA71wO47auOeMvwkM2LMGaYtpZb1)QcwfEu4whlON(l1J9L(s(UPCtbD)aYBtHoowooJA)2BsN3f3LX24nYTZZX7FAB(MYL80PqB)u(67od3XddWmiRfch)DVtp6gzV9hPdWnMqvFZihC1HPWpPGwI91nNr0V9UZ2DDBD)QXNazDmNfB4BuKoUCO4hg4kNBg8yxo7uYzoY)Wv7wV(moz)JVqXKUD2NU5Mp9XJdQbRDr(bzDePjIP6Z7OZRxFEbT013UV70r2(em5fPZgomWZqp85Fy)AdXgP7xbQthY)JQzpbl)J7kAAkAovkCxxv2aUXofDC9OVvJeQ5OTC7dtFE8ykn6ZGSpUhiKq9yHm)cSZTtOgeyN0bSVJdrQ9(xUP6T4TV4dNmZ2pMFF5YtLzBsRaaeuCl7V18dGhds5(HdTJdJYEMs)YY(O0oSGHKB6tvPrtBE7UMBt2Gb31O4U5xAQoDA)5XBmZYYb3NE5EjAD6uupSFlFlHuyhq7LCDuzEyYnd)FIYX7xdzcSb0kHXfOUt0TFDKVup2xaM6j4BEbKUU04DkBMwHbOnMJl4G8fDPvQWEcI9DbZorfV(AqnBGR57RGYZPgo1SUO4r8HbxUX7QQxwGymemxI)ELu7ezCqI261nT72EoZbsKN(pqr92vN9ucoEzEiNV6Gtnbh2bgycFP5CgTsLrLJ0SmVfqLN3CK8)nqwbEXWUA0EotYHxbaCslpRrlnKr(UI86Zz84XYrk2QQZIBSbtiAi(gMc5(PU4r8sGTDzXznRmEwRQZVVABZT1f5q06ZyIMOsEx(5mAl2BxuFvxu8xfT15NfegYi3GZQCZJWBoldthC8PLRR2EwQaNK4TUiA9fcUNZX)HdV3vIXG4ed7s2Xfv1FrspNY96h9OLNTxWs3b5gEON0vdk9t7gMzfebGuXZokvuU(NlS735XFGUCLP4Th2hNeZXoj9srWPZekhwRg4ScCsgsU1tNGF0ST4WlK8li82bEShPll4)0ffc59YUOATlw8FdYM76k" + return "4XzVB92CBBKZ)tu9S)Fx(sRK62mttIVA3P3ntg1qlrBXRYI(HI6j13lYN9dybwskjsBXeD9nw0KlWcGflWpGLCUC(TZVzz9SQ6Lf1VPADvnEJ85Fqo)M7MFLltPLbHtODgJWANF)pa)5Mhg9j1J9KM53SOQA9YQVS5VLj7UD3F)2z4FUC9tRYNFL1imAzM1QcgJnZHJudcv(2Mz5Jza(GaNF8V14FBAh))8JaNlAM)HFWdplFrz(63WQhnFi909jwFtZZRlMFZ720uuFF(IIpD5YLFCZ2p9tRZxU85p9UhZFOy7NOX(h1v72SSy5FC36NWvN3wUn)U1fVPSEbWJ76e6h6lWIlmdlYn1LB(ZIMJ4cjE)4g8UlNpB(npv08Zf5RBwb8(NlkFyfOFoGrBE62QMIhVEDEtbzoVC9xYFE7T51pu0a0EhBVVzv1xUCxD(BlI)lYtAsUUA78B(139t)miQpv9fWCaJ8xbZaoKvP582I)QzxnyLEF5MYhZxxUTbv)RQ20aQmi0Orn5S(TBqxbA26O2nJL70sxumV9Jx3tMidsuek)pOee67BLi8NQR(YBlRlw0uwTPvtz7wCrAlUk1G)R2Rd4)S41D2YjxjXfU53u0Uo1WmsALc)zHtbPFmgDrMI41f4ULtJDAHx4otcwM48WOG2EwyKZKDEyKuyptCYQZmNfgfuQZJ)KYegtIUWMCNiMDH91zNw7C6ZIGfKJkytJrwN)8S4PSzIZt4GG0mMr6cjB0ZImtEcmt4LNfPY61NPDWwPAm1dcd2Jxxaj3Fv2PTzzNh5s6ptkOmCEm5Avwymt104K0nE83lKU9CQWvHWRZsWX68SXjiDNNCms73DQb4rpSpcGzF82B)47JqaQlESkIHz(nxwdyH(6N)qEnmAGDiuPdrLbGW(xTGl1EAu)caf6Tf3NVBDdkHop5Zv0d7wDzvDzZZZ)GrGq(Yx8NZV5T)4SF7QRqXtf49HdsI0oajsL2AN2SifAky2eijyuJpldkyAyLxo1zXzNOGPLkLzusuDK0rGu6NMMOYyN4Hj545acXlYMMEaL8i0tKeRjmrnXQmVGImOUBv(XTVdlxUm)4AVEWvrJCCxLbmWkxwyItHsyntCnXjM6glVFCZ7WuON6(9qwyC)Kr08SjUcAzGHNofqv9MX9fhuSGnUzQtr37cBzgxQgWjrluVGPASDH(XvJHjrfutCrpaQ(0OqBCVGTAGOCkiC94E7d6y5YmVGRO64LJGjB8G1dhmriEHaPJO5MSjUdXPNAseqvCt0AP8k1KDU0HPQ9ALyszE0A)uNdRpmrVrLotn(AIDG8HG37eNdTwNnE03HdOiu(xWHCaXkON4sOXA0JpfdSp0zM22wLDQqgZetnlvWzMOAdfpnjTgIjov8pkVim(Cm06DtQdFD9e(Dp(4Unfix6vaeuajvaKq1vw9IYV32tgN72(llsTqLA)i4xLARyS9QXb)7LlBwDv(IMQOuCZ)Fr9wOkK)4X8)Dv9FSz3JX7UxxC)EfsOkLRRQblxztQbY3H9MDV(I3VFYdwau6ebsf8CLhat5Tq(cTpt5bd89)aGT6OLJRQQFC)fJ9Q)pwgk1b33N)xXgMVoF723TO6VNZEyrzVMQJLV99ATjpG)vpFc(ea61xAv0EhDfGDcHoJBV2NhlCDrjrbu2vNDbODb(lkXlRXRUgeQYnpqgOdS)yp(Fn7FpA(2v84zf070ic4U14PzCOpFEnS)(naTnOoZ2eS31rwCDr9IInnW8Gki5AS)9sZuNffMR8nBaoUO4ryCud8Pj)xlYx(m6xTfmBi1fBkEmEdEa)2wAXNMP4wJc8WmEkVgI6CtDX2D1CVc2sMCGSTDuC7kyiRG1VyuWgw8qN5z7VTAWJmHCxgEhxzVMlaMT7RZFSO7Wv6OS7EXfY((Eh6nSTN3oR)9UtYn8qFkAQoCzS9CxypN4kb4OEF1ID8C2g2lEcmrNxYFU70860rL(GaF0yXmfPi1hhmW41AzgapuzYKAJLpQWhg9j1J9KyWGl3SyfmdD6gUE3Zc1PmhAnIzMkwMoonqgdcaf0mesIpZJxa16a4XX7eaKq4n0aEB8cpcke(f7IZmenMlsPkdssJJp9laOxIxKj0Xbk1kziYGi)I1uG0jbunXBNr3Wk1XHXpNaHIZxAcXwcG)VinrzYOGPeEsses6cTHyeIAc)1Qio58HaXbTHga2ROzj0m4DKXbkDwzuhubpXkq4ONt)BShiiNuSq60KqPnIO1lKPImiwODuj8M4ufsZTv5Yy9u445MudJZqcJ16jPWMLfhRrYcmHEgUWgIpWfyEHhJaCHxW2qy5mEHgm7KkRCXrerJfNnPMKufnPQK52QtwvAQOAIqsdKvo2FQzjquijk6xQFpZIa488ne0fzgjX1azjrUt2dqUOlYYiDaGY5jI0SVPJm6kN2Z6IIUrMpsQnT8boZ0aD0fEIqQ6j4cJio5WtPzYXUGq23SwN5ilDsn7reSXj1M8uuAAYdwIcWfIwk80AbVIrpfS2rQ1obrTxY7nsgzfnqVGmcs6(Ep)dTLbQ5NCiezSrZNXU6g(cPlocTqs6ivFnXsh7NjjNzLrZSH2NavksoX8gEi2atGI3wHv4oJRBno9kMbK8f7gZmUqn82z8UhMoy08gwziQ(oYh0lzJca8jors2Tg2KqZeuJvC80MjW6XUkmFKqqYKbjUVRbdjUF0Vlq8jPSYN(RNrzhcuhEgJTbD)aKORhCjhHm74xAdodgNNaaF(88RcW(tHvA8oyXrRciSuZXjc)FhIYeKF81M4Q6YInlx)mA)48Dj4ryft9pXH(zTXdO43EcHIK3(gAmOSxNmRjtCCX5ydvkXE6jX8tu3lMnVlbfKvKYRqTThVqe4XKce1gac3hrd2qb0tEqooIPsLcmQsPvIDwl6LLI)ii3wTH39c2uoOLMhIoO9m1PSwyYf8IuAly)iTlGoemAM4CggorfChAdJpfjd8uI3jimTIjN(K2sqhRaEJyV)JcvMy)Susp9eTYYzgHq50osND)akAFcpGY3UhNNzdTlxdklz3HGIKbYOjRlOA8mLcvajR59QgEVQYf4n3ozGdpizdTkf6xNwibWbCCnjLjJA00mU9YZ6LwIA5XmQvgr1hsuq6IMnIoojTZs5AGeeCs4yeU2Q8UCrZU81Xc9yNrCq3LxZLdHlG9Gw2)1M6kyZMb8hbdRqiaHLH0nyWLEvuDeY6uOQbrK3hYEFKTMlsb56uH(vICCepzARzQHd93VZX26Qpm(cn9l)4v32j8qreiM5Tq5p)s5gSLcCGSEis72U3JbXbnOQVUcrPgn59FPOUmDAPHw5PhA9bkK4n7Q3wmG2MQR0rr4peL8AOASIxjfH84vX9fZXE)aXGLKs)2Q6YTxFDhdg6OB3RFhNWQxt8vORRWM(RM97bexjWSuDaaoekYOkWqIfkcccOaOSirSb3HXqKCYDbHzcq(6Wh4zSazWnW)3jjcaqamC2ym376fZfcGWJXbBnJpcGK0cOHs5Nzyiqe0cIaabbbJvbHvzEf44uMqgngaerKgdpuiGrK3wnh9245PxZSGdLcPp80deefiRsWvjikGoyI2fxgf0nlq2pRcafFxV4MkHMcQbGrPWrPGKkP1r2wJhcdJ2WuYiWHj(Gyup0QdJiAGOGCXlaRyunrtvsF5yUC(quA5fvYKa1hj8e)4a2aFJIqM3rdioChVMZj(K4RFxu8ICH5zk4FaYyGtV3rcemx0aGuaEAXkJRMcKqQ2Iqi5AWimnQuTDbvszOe0Iu1JosVPa2Am2kErSJViluAktrGGiJPhr(KXvGeGuB4nIidWFvk2QXGvToUayGJKqzCSdCgNEcexYrrLk8qOATyrDhaSYac0EhdQ2fyFCoDNxliRBMHkKkv9siAKHkkzqTMuk4mdPZkgDCqevrJlQjoj5XPmbBGunp5cQf0AnVGajKyZUqfVaYKNr(qzKmQaxvYXlLShCHOuLuE3i1bspaPts(dCrMCExVinBegdNWq6pn5qHEmBYyK6)faigMff2RwDWglzgaeRX8gTioDhhE)6vpVTCbKK7v6Cyd2QSz9cNUFN6URQPP6X3dbol3GD4PdZ(GjN66UsRS12s5EPJm7XLUUFT)lT(3ENmJTb(fGC3MPlb5E1eZKeTwuza45kc)BxLqQy)UsnBV)lJDk92yc0E1amO9Dz9)yxEDZqLazHDzyBNeyb)ywfiLQH6JMfEgal1Q0yuEtBF06Pl7dxIm8KD(RF(wqxAkF6RFoAJ70TwvwDawKHFbTBFtW7Jjto08FcLE2wR6(WlDqgalefmaLgHXetWlVcIMaiZZCcfKAWQWZ6W6iRZWpPESNK62(BFEt(JLlOPF2(aJW9W7PwN23oa5fI1oZ7i3dL4pNV((xgXvA5mDyrFVBJ6JJ8BMj9RM(hJDUF2(gNtbfjji3w(yr84OYBs4KFk1KBX(vmCcgkMPPQwWV9I97aYRSn44pudc2Ck02XfXVS(d7wV(L9UJIg1U(JG8E8Ncrm6s61FCVVSOTh1Z7UNbmUi)aW)SmGUMDW)3VZ)9pqHUZYQT1n79X90Ewc8DhqPVi9ToeoAnbz8)JBYdpt4He9NhAQoYW3VWHrx(6RhhLnUQClekCiQCDU5lhj9ZyUUNKBkp2FAxX2TfDhJ9Ehuz3j91pD1Qx54K5J)dzzxKRBRUepCW3nOJ37ZFOCXq1CMScGprSQZUVnOEEe9kpE1HF5uXCUjFYdRznf(yOMfKYjJoSDar22K3SB7DjtCpCwSD67n0A73L1n8HAEy2rIZ38)bP7l(6NVcIB81p)7RkBk6PNh2VGUinRMCcvkKt)QGtHtp0Aw37dT74nPqzwy1gkHXfIL71UjDKNup2tA65PEc7joSFaXiqxzLkStIyLtiSif)ooSS(nqu7hQQllIv4VDDrXt4f9EVvUVcachpMEicqj(7hKANiJYi1uVEBZUnNcnwOQ)OjEZYtMKGJMMv50lFXRrGdlabi4p3EkJgQjjc(F7I8gW190OrshX6sisg2u8MtHih(LTGeT4KgnuApo67lYRpLXJNsA0WwvDssJnyc8cXeijgsQU4jSOOnlkojQYiQwwN)q1MT3vxKdymobcnSrEx(PmAl2ry0Evxu8FkaiFNKlmukGbPQ8XNG7CslmTUJpVyD1MtYe4KrzR5GiM)nMv)ekJRTsMErs73r4Jt619MaDkSVB0hXPdF3lMawZddiVSxNE1U9E9nobSMhG5LQkd7uEh4V2ScY5DLYVhAq2osXC9srWPZekhwZje7dI5gs5nsVFgSxX8dFBX(2tP2Mb9DBqH9UX)uQXNTOSnBzZ85)3HutJwa" end function Gladdy:GetClassicProfile() @@ -10,4 +10,8 @@ end function Gladdy:GetKnallProfile() return "4XzRB01CBJJ7xuZWVj1J1TBA7mBtZTo3CxNPJ7QyRKOR2w5KKVUzFy)TFGeG6lBfPSXVyRidcaIVbiZk(QBwTCt5IIYnzLVRyBrP)fPRUIVA5THpVp8zP)ZA4DhU7UQpTUy)Y8)mB1vsn9Qf(pE72hFax660Q6fPJIwwaTSaAzE0UbaQy7MIFUhXXLgjtZKjkRtYDMe9Q7EJwcWNUopDBFydSx49i5ww)02Svl)0(6SY7sxN9T3UzZx2x9TpSnDZMN(2N2LEFw13qy)EzXH9BY289B3(ONlEFEv6TBZExE5Aah32UrUV7MGDH60Bdc6pMLF)d1RUsyIC2VS3J2nRwSA5dzPBRFaG6Q0DzxwSVgLKC2fGSC)J3uuNT76TP1zO48TB)z6tv3KwEFwnGGBj59Yhk(5BpuM((SWF6FpsPRlQwT83(0h(yqV(VY3u)WLPRRlckWwIFt2FuFOeetl3vuu)WQLpMv)XWpEDw56S91GqYZTrtJxKq9dBlQaU4bqkSnijwqCDuXfyYB(Y1DyiK4DKhIUwwXf(HYIF((8YS115f7B2NRZNTHgiGlZ2vu6j0QLVVOmV6AGns9IYH6EqK81VaepduLVrZrO(18Q63NDx6HT1EkzSwM)7Swf8JL5aARFA1vQajfoRCCy4ApmCHuRNapCMK5McgNsmoEqAj5gdFs8y0trljxiuJcJGGHZTtWpIeGHghgKFsGObtXZALBsAzzUX3xsepMeBYuWiCSXHH07Me3u4rW0QPWJuktgxNs8J1oUiKepYjTcDjUXfYrgozCDosiqnmfikftnUQkkIfjIPCByQXjvJLJDCsHSJZOM04s4etjHDalpLUuzEMnf6ZWvYjTT4mHDC7yCNl0c7ukcbeUyCArXluQKPSCewHysrOd28tPqDQKNzFHWKiDtPkmSPIMQfQNjOJMcemPcviteJlC0iPSUPqJukytfdukTtVVLtg2wPvYXHbnbnQPmsfc9Kj(sytQfKmXZeYj6w9mM6e3WyptkKO5NCckvhR4OTyIpTB3H9z(L1wsXfjjyvfxWeTfghRb5fvOuVQpd0(F3uWHq5RJohRgc2MXAdR8CEa2Hf39)YkRGYI((U0)tr533Fyx4TBkBWjGeOMMRlkRltZR7utkw6iskqqEKy4YIYD9fcDRR6cNxa0RjIQoiF920QqldZUiT1u1EFTdJ7R961kH7S5FTOIQ0VF9QBkB4yolkv)AFPFqP5)D8pBAvG5xUxkDnq689GarCSEWxX)u6HoR5fT9Q(VhslBKuf)mRStNm8U9o0d5iU(RF)gqNvN)4F97bX0QL3vS(q1C04bVN6Y89)GeorlAWrls0o9KCBlZ1k8DaU3Vhi86SDaCvEIrO83Ys38KFvvpMT2)D2(SDHxqa8pRqZuKs(FytwfWs3Tg(OmR6qj1UrWXBJFrvTWFZdaipaMRXqrbM7ZP)HheqEUp9DaBv7TMjpzDttHd6bjSY(707kHEebBnqqJIJ2fsVLtk82gvKNW)TR7ytJENQlqkgdUOGu0)NslMXy90UUPyl5SlmDJ0wtiIR5m7zbtqsHXq0fqfwy85WedMf6KmlM)9mWyyXsVEe5K6ZcImQKZdI4m9zctAj2fXRgroH48ypjOMwoL9KoAorHz1tJoP0yKNfgZXhLXEzisBSNhLh0Xa78eoWXvJjKUGtc9K2KetGmMLFw4knnUMxnICAUySThegSBM7eZ0OtQtsop8f3EM2GC35rKlfjUXevVmmXnJh)9cUPNrLxl4MgLGH15XXXrZ56vJiU(vNAOowlXyLC1wNhwHLp6xNA68vs0By1)nQ4SFb1un)9kbMpGiiVanR1z0WThgHq7By6T7x)aSxA3g(I26u)t7kh2)e0yW6FKTjosDqU6yqh8l8JBXMy9piej6KWBGmpHxinqQm4bRFOeW3(54UW3ZVjSsrceIZdF8BLqZ9pKWKba5sb3fqqaFHzi5xhh6xn86e8fAUmag974qq80lsq)8m8)nlsOeEGXeqPn43C8bPcrKVFy)3AbIjJ15qmivia(zjVi2RV)n8aGCJMh2dcNfrfWC4VJ)zyyTEmjiM0irMsQybPNlreqqySLHnHvfiLlsBTWKq7tMHOnUnugfYmATf5ciUyawfNyyCsjWdAx4hmocx(uGWdwgjdb1z4bji2XTSWeGim6Ia14sKtfirfrXTwgLQiPWrq4xQdLYHjFhwId30Ab(noN6fHXoAPxWWhsuCeRous6Xokpa(cFijb3dCRZIlss2MguOlmslTxe4lsSHLQJQpWygb0GpyXfIZNdEqXceh(vKsgYeKdBKgJ5aknCjzr40bIQJwkcjsCNgxbycHQclQling(RG0oSAPHHR2YjFJOqwGaAzOqGJV3APVqxgTLmiyjKqZMqM6k6bi9qGqmoUhX5FIO0q2zC0ywOKeAq)eHvGgXKdpeBGwGGCR8JjDbndUa5fecq(lmx8f04a9VoH8EO1bqtoSCxy7BqBqlNekst43LCYSgCsqkjLKSfzilNmvi8WfQgbsWVRUz(fX2gV8nGtKwbriyYeiKMrS6U3aXjA61EoDYJZUjFyy1yK94z4fISIdmEXQ2qRsWvh9EdNpL)bMJGj6c1464TaqGvyOO4E3q(6cr0LwedigoiGG8j65WqbUur2DsUJC3Keish07lU6y8wFyr)dXaUGLeQ)Wspqkrr7uuiw4nos1q(GolAa6yQg2Kc8Jkt8018ViC8ybMkH1p(k3I)IuOPy6qqi0wYO77kiTXmzcBJ1jrzfAFkHnlk3b3zuaPKO0f2AeLIg5qAgYktrwzcJJmlnChzyZjbTig0sgvKqAnYJKJXGXjGVGoeQfDcOIdSEbov6W2hcXH7fjjenu6fJgJscH2O0hbFtFDqhktp(AdG1i4NwZTnP)xet(dbFqJkHp(H)bTokXqo0HHdHSBuwmxcMB3edpgZfBXvkO92XMPGcdXTKSLCgk2bkvS4crjILcOtyNrsHemym4TJHt1u6nnQo0s04guDuaihNsvOSiQSgkFUcT6BC3qBsUcf8axRICnAMbleJKJsmTaZ9bjIXveMHVhdjmuVRrVPgJpeEOlCDFdzLH4qswd2MiRQfOTLGRnK5lza5L2rRwYq0sjy4kmAVaChOW(krmSpzhcRMkOdRsa8xWecn2HGbpYBqLtnBFmkeLFIeJCe3gSsG6JNlxVqPyhV82(DJd83FxpUSmpB)MTp5Xx37Wq3Pl3mO9W1R4x)LlbSFFzXp)Np25MS09WaOjGE8fFOZawNbFIErVDD9H0Tbkr(zEE920Y4eVH6I60BXmVqneQoX11yKx5BfOD2OXDY4x3LH950x8gVBonIVoI2iVbHp8c9QRZk)189e4bnDNUoAVGtDWqaOb7JTf(Gq(Le4DsQUWNy9OMyAnKE3HYQStOLIZxW0y9niiO)qdwUnlfq0ZNIN3Qu637v3M1idQ2dskkJo1DRPr(ptZSgP1ZZIrxNgDyxlEslU8X0YFmds(hRU05VnignuFHkbcAB81fj7yipq9nuXC9dpvLdMJJx0eEQn1(ZCyXXflrxhoOdbixCcKaYPGyyg66WDBrDDXUpNwEF(E)O)193HNSR3HhQg2U7Sv(KkU)rqe56)gdbGURyHJ3Bs(GnmOZ8TEAcoE8apaBXgBer7M5RT3snsO2zudgVl9aDFFPWm4PnL)JdPL1pZ(9cBNDaH(gELpWLEWLJdJX0Cj86gLJFYaGp)b610jWGi3wKFVqsCmDMlW3TTzCt(USWHiNwh5RJP)mAUO3I6Yhxcn3QmgwsscxQHMpJoiNajOLJ)2x24y8(N2NUlFnIWq06pMU9UzeNPBKZojzdgkVeVGEJcJCX6Etoxhperk)F7iX6CjrdXvJrJz9LwZWZU3D2TjBy)gaNWg5yodt(e3shxbo9dhDxeg7I4glMWeoU9RoSD7mIvC89iniBx8LBU5lF(4y2aTZshKon6pQ6MqTjMsBcV6Wf1TDgPeBFcM8I4Pu664I3A(8c9gIhuVH1NhgpYYXK9dhYQQYQov9fxxKxbXuofEmTm0MrcgFKBtFtTN3Mkwy3mq7J9mKcwU(AN)nW7Rzt1M4AS7yogryO9xBuJBkER)C9)u7LXUJG6ZP3NV(ufIfLtGA3laYpzYLo1g(Wqnl0vsVYHNH8yD(jQ95OsHRQtRpuDBuDexrRx7FJS69V2nrfXs)vWiukBNRRaVxnfdlLAyV6VKSfyKKEIas(nCevD)3hygi(jOSqMbs3aLIPuq)0qV6qzHQJlRT7Dd6DqqX7Hnxwy6cvBZYE0)qN7J2DfLRZ82bElRC)3xXLqsnm8CD52Q6d7NZAGkedPFl3Vz2lXzqY8qkExVMAbgF72Wc(r1CGwisc15wToTgmGM3A46WUyde7X3(B9CwKXFmW(fTEwqZvHtZ)US0Y5aV)yzccwW1zoWRDkhPiEbljeIOm7r)fbA)6SzTQeCvBktVh6f92YSuW3Eglurc5dPZbATFqEE5vzw2FMvxMoltyTtQ8RkF3JWBMLIPXC8P1Bl2plrGHh4TM8qn3Bk3GizZWdVPw7orK7ovKUv93EtaNrj)DG(eDomKT7vp1WGwB60pI)sF1wnceMniCwCu5BbG1D(pnkmCPFjCL4Izi73uVh2i7r0IfdygpQvs6UA4v98vKYyqC0J6W2)rVi75nzkQxT6))I8c73a" +end + +function Gladdy:GetBlizzardProfile() + return "4XzVBTUCBBSK(jYQWCFMFAAB54QIL9gQuNZwvkAdrcjH1ueAbaxhLF4N9TNP7byiiGmXrmjvfliam9TPV(nqRyRUE1Yn1lQQ3uu)MQTv1(BKV6k2QL3S6sDMrjLsEMG5mwPA1TVsjxT8UjFs9upPD1Y1vvB3u99D)JWSB2F7Tnl8)ZR3(49ipwN30UiFCLfOLrATcHfOLtYuImpTeb(pXtUzQN06TPVHu3E(xNVUmF7u3hfRLTpTTy1YpSRTO(281f)XR3S5t7A(J3VnFZMN(Jp8q(Dfn)b(UFPUA)UnfB(YnBF0ZX3w2KFZ2I3uwVgOXn9k8Djk7LkbtYLgLJRYCszVYCvMxz9)BT)FbLOTUC33kApIUOa)UD(7Uz1IvlVViFB79aRUk)HIlR21US8VkaDduUDpEDvBXdFEBEBbUx86TFp)PMRZRVROfw(n0M1Y7R((R3xN)2IWV2ZNpx1SA5IpD91F6JET8FvUP9(lZx3cAK361X7Rl(Z291GXBX2Y)6VYR38JV(B5LW)cpZVWGCToFBryzKU9pIZ49L3D)w4)B7u2Otqq3U(tForn(LWfjgrEQ3CCHVVU67VTSUyDBz1Uvl)Tp8(F56oJDqDA86tR)xfgH1)lRhQLhVJNJoLzxOxTSOB)TLietXYmNfkzzMPi0foosRl8ULNg5ezMm9zsWCzNhczfQZcH0s35HqSm1zIskiB3zHqwo)84pXL2PKOlur3jKyWp)PKti0AXzrWSSjfS5riL2CE284kx25jDGLjNYiDbJm6UaXyNaXYmSZIuPmIZueScs9oH6bPbtO1fo9pNCcLZDEKlM5mPGm75XKl4o7uMQ5rjME68VxW0h4u53fS)CscowNNahltFEQXank(sLi4r3DyhaXgKGwaQlEOk0TZQLVTQUS5Zq7f5(oRg2h3JfT)3FcAQOOnWu)78RLnTVT4289BB9sM2G(A98E5J1LarBFA1vqVJqBu5R)gWN3T43V8sVyXTu83OlHPgzjmUqPMhxyzcmj2mwIvYNMlJkycyhNnxUOvZuWemoxo5s49lPFbmMzEAc3roVJVKJ5b3KzNwpeJQ6ovMyEQotjTZutyCBMBECHR4MPnWJlyANzAUmQ6lKSP9vgZcRD2zYcEMsotDh86DtVpoUf2yM2vzCMiMBiV1zN2vzcD3nZ9qf1t4PVcyAy50UJJ70Z5o(PO79zUKtlvJ4My1YzguXZYEMy9X3a5w(mxIf085TcHu)mMQrYZX5Q5w9r7KpJNiFK0CC(mnVsLumDe1yPRLs3mdpywXmLkioxpDQHXzsg38mPgowryoHDMEjcHWnDr3rJOuC5ZuPAufb8RMPVix44tVNOow3vg7mzHoBM90ieM5BE5zZRSo0d0mDt0Yzf0QfZT)hx2STuz8NP8XePREgF9rudy0252Mb0)Jz6QhJTK2iYE9Gq(HhEy)Ucpvsg8bgCeh8jJ3po96YxkIXq7))YPbE6uG42dsB6CebDAimT)Ff1nWGkF5H8)NQ6VSB)dH7IOE(X8)0tj8xE96295B9)(M6)Dcv7ar9d783YBCR(ErDaX0a2Qb4MhApVSQ(HdTMhm4Ey(X4bt0Pdq31lxVnVP5dRR(N54kwxMGMUFoSx6ElURGiid1sIhfWHWkdoaHTjFQImVqmCtRh3zVL4Zatl3Dx4j3wTEFZeMMRy924l1wfhM31Lj0zARHNCcjdP5W9o)Pb8Z27swZ)5gROJK36mL2W6J8OJo4aJvauI8Ai0)naLB9UtODMR09EyD(ZVI1fufo4J3TR4HNcJKNik0gfOV572buDDXdf7ArC9rr43kY3ewwZJfR9Uofr6qVWV3GUuyOviOQObuHhZRHKslRlA2xtqi04FVn(L10VIRVhEL7bHpKKSLKpkEnMb6V5yd0vEaEgGRBNX0xU(268hk6pDN(10FVGRYr5PsuHMKyW4ow88wcwDSBXf(wNmoJ)cqwfk8cpub(lYS07eguDrCix)fmrg(Y(rfx4rxrhUVwBdVjNdDvJRntIejutXFHXsx4NFiqdneZg4S1gUdtqVIWkm0Q9nSHVJmq4qZvbQyDziVz0foLaPRuGlgUJfznJHlYAYc3XMj7eZWfCMWH8XdLXIiEdbHYHRbrhiqo8jcoyxqzjthebUwfmlHr9cR1Oqzl0PAGH(PTcxinHleGYI2DMMSYsbADbvJ4uObC)fzsgszjZQqwArtp8Ywl9iYqZDgfkgXnsJJJVddEiYDF)xlO5zxeN9ArCkHfy7tb1NRjxhbze14wSqRuOntR1iF4EPnPW0)oCmH0z8HU2dt(OsobrkDyi7r4ypoO89lnz5HhJ)lGoLucYSbciEBF)sXpmHxctE9U13d2OERJNSjb69L4gw8l0TwXM45rFT3Vp6psH)G7Oc3YSCmqqOrFxtmYtf8HugYf3fJRPFc9JhCwH6JKZgNfCpq37Wu2(1XyOdMXH3qXeXicKEr(fzifOlIjsKo01NNzqjjJHxiOOqlf2R4iL0gmGqKjWyMa(PlIJL7VdLwacBX4wlfLcch(8dJ8fCsi1cY1xIbwwhhJyngsjmYaRSrER4uOHtGbCaVr1qQLOWOugukuox4DLmsGXbRGluySoLTL50yaUjlgIIr1GPLsdBHus(lcJOe4gdZ2GHOeY1Ek7)2pweSQiR6se4SuwApMTHLqztu8bLhGecg6gz4fojdPQfTKEQJ2dqUWlCXKuD1heKVPgn6qAhdPlyDjiTwyPQ42h4mJVOgVWq5PdikaxiX8vWtroPjxqgOiDoZbsQzcYJWQcmvf9u4cK5wfvBuH8cCYc)K2XWNcwBSogvHdkarXgrJmhFrtgAey49ng6hyidu58WYjCJJC1L0fSynBgQJ44XijP6xW)HMnPiwvc)DdhDIPaEi3aTaofwrfDcdehypNiakFb4jxqil4VTJIEO1bVnfWs1Q0OpOHrgfHgBeGrU1qqcYjHGSTOazOAEoIoqTZodsiURTB8G4Ku(CYXorpUhVSXpRQWc8nZ(BqkAF)HPhf1WZz64VcQUbUsl2fl2msNC)J07zAp6xwxwSBZ2NOtoRB05tCQbYehh4cY6gocVF)rCu33aL(Ud6UTiuPPzBrXJdWs42Q61fEdKFbL(FEf4LM5cg)1T1BBA3V7uwJYPdtGvVBZjVeRgzZ95480)SfO9ngbl4BnNYBdHgHP5AwN3c14pT1WO5ilB8MTDTNYI0(VYa)IwFsVntg(yrUTiV(uEFFv6GHTQ6KKgLvAPnIzSeEyjfpcQComt4jTkhUQn153bt6DtDro4eEclusg595NYBR8fJ82R6II)Qa6F6KCHvwriwR8HhH7CsBmDUJpTEB1UtYeOzbzRF8DCGsOon)hFDHFcxmTYbqonOJASn0R8CSlZKNH30hwdDXbw5)R9W81JHmcL08ctsEHKuCO80N795rLRPnVDFZnrXlk4MK0tFUamfGFYDfE5KsbfvXlnEqofqRJkOqOVNmiTh7W829yqqlESSZFm)p9M7gGB)A5opItKXm2N9nPFqSPui8wPA(2kFp3EH9(HkWWVDY(shdRh8M91nftHiv4JPyGDFQnQ003ryDcB4dy4hZVRC9ym0)DBeyjpXZlbvosgo6lZyt9v73UDs)NEXQZaEcQq6(AQB(tRU0M5NYh6DmdATmZ6)OGHUpw(NRUYQSxyGXCGz0H2Xe0xssyMOPQaBCqVozqF5sMwQHwcb3kfwb2)1HySWifbhpl9ThdvGvWqe(HKY8TNAKHVkzDNcMWPpF)tnLqNatAwiGbB94CT4Wk1Pdg7Gfw12w9WhZRVRCxGsKlUhDSVn6iIPDXCmHF(TRSb5Es(uKdFk0t2pJsagrPb(HWPWGur)w7LwOruOARujvqJ5kvhaRbyKFMTPXm5MuKBzWObAnmAdh2hf2ocF)m78jyP6BSCDzQZxh47H0c)67U8AuYprF6n1PzpOnWRlFOiG8FEBKKP7wrHbQHSCBroyCE(ECz97F38Z)gS7oNIuVnrqc(CvnuuSS9LIQrxR53DGi7RQeoVibL8H((PViSRDWF9deV7lR82Y8Tv3DO9yyJUdzNCCFC09W)xcaf)DqvGFjF7TNW(AkFF(xplr58vHEbM1(DOrJ(pOaw87TlnNXPelKCEhPX9hYP0aKdNd7GEqo(y5OsouAMJRugJS8ELdrlFKIqtaooHm2IiUyq2CCwtULGikJJJKRur4AjeGy0WUzigcqITWcn0SXWKjescrCYme8ohHrUGraOY0wCsy)i6Dd4JJa7KeKa4O2scKwgcRdhg7NOLLWvwArmnGrPrjssVQZIaUPeeemqktK9cIee03mL0er61gjve(gsq5eC8AhoIUZI2pfpcseHZnmrkIVJwtencQnm(JMezdcHOjIALmIHreLA4nqDjckTubwrKkGPkkKeg505x4LwAtLG5XeXLHo(cpNdC0frAi86AApNoOcMbrSZGays0mcwVfruLB0Oab8cFbPdzgpZrOlcsiI1gbup4AqiUi5rSoT84RIAvwenvnQ3iIwcOrgcE145kiqK9TiKr0XzaoLKuYqq0Iq1PiKc5rWBuAcqyGIOqjj4(DocxoqCrhfEeiUmENfd5QIthGJWOjqM0242oQ1greSsjcSyenpc2rHLa5rgpYehUbl4eArqREOParjKGLKlTi4rrzGWutiPneww8CCY4ektwhUXep7dWvLo)c6Wzaxi0XR7CsapDupaPdXvttMs6CsiNLUZestq8Pja74rY4iKRg2FiKfRiFq3)XPUKP9)F4zBtLPZsWHcVfeXoO05WjIgPZkfKFZQ1qNvGNgSb13am4FWHHevWiSwUnRRb4RydkJ93mWwJ0wmwzblt(JVEnu7OT8XF81qjYor797lAAkcNqCWaEurJJ6xVQSPA3OBh6(63BMOxYJ6laz6t7YFOCn(6lsgc6O)8(sN18G2wxrDmEZioaOM21R)RGy)KMAUU61(J5)dH(zgEmXjWzw2)32xY26OcuSHuF73PDYGNpgpXNC4zufB4DiobDgGdQAN8x84lOlPimVlPV5GHn8IuE5)7(86IF81lH5y)Xx)x3x2wKcOYP1kzy3P3ME)0ZBLnobWoBgBEJHwY6K)iC)7o2ZBb7)mNgILC)3NtSBTOZ6M60bqxxM4IY61SHFwnPFsjRoCqPJWC6q4wIOFNCn2R5qJ3Me)1aUgD5qbFKisCdAKT)4PteMtOd6Ui2uDmQ7bQEPwcLnHcE(JQkuz(2x5HBh3IJhimfoSA4x61liYyWgzYNRsYNlLpKzDzNtD7Qv))j1iAsd" end \ No newline at end of file diff --git a/Modules/Announcements.lua b/Modules/Announcements.lua index 3305ca2..467f2d4 100644 --- a/Modules/Announcements.lua +++ b/Modules/Announcements.lua @@ -21,12 +21,12 @@ local Announcements = Gladdy:NewModule("Announcements", nil, { drinks = true, resurrections = true, enemy = false, - spec = false, + spec = true, health = false, healthThreshold = 20, trinketUsed = true, trinketReady = false, - dest = "self", + dest = "party", }, }) diff --git a/Modules/Auras.lua b/Modules/Auras.lua index 16230d8..ffd8966 100644 --- a/Modules/Auras.lua +++ b/Modules/Auras.lua @@ -13,6 +13,7 @@ local function defaultSpells(auraType) spells[tostring(v.spellID)] = {} spells[tostring(v.spellID)].enabled = true spells[tostring(v.spellID)].priority = v.priority + spells[tostring(v.spellID)].track = v.track end end return spells @@ -70,16 +71,6 @@ function Auras:CreateFrame(unit) local classIcon = Gladdy.modules.Classicon.frames[unit] auraFrame:ClearAllPoints() auraFrame:SetAllPoints(classIcon) - auraFrame:SetScript("OnUpdate", function(self, elapsed) - if (self.active) then - if (self.timeLeft <= 0) then - Auras:AURA_FADE(unit) - else - self.timeLeft = self.timeLeft - elapsed - self.text:SetFormattedText("%.1f", self.timeLeft >= 0.0 and self.timeLeft or 0.0) - end - end - end) auraFrame.text = auraFrame.cooldownFrame:CreateFontString(nil, "OVERLAY") auraFrame.text:SetFont(Gladdy.LSM:Fetch("font", Gladdy.db.auraFont), 10, "OUTLINE") @@ -90,6 +81,17 @@ function Auras:CreateFrame(unit) auraFrame.text:SetPoint("CENTER") auraFrame.unit = unit + auraFrame:SetScript("OnUpdate", function(self, elapsed) + if (self.active) then + if (self.timeLeft <= 0) then + Auras:AURA_FADE(self.unit, self.track) + else + self.timeLeft = self.timeLeft - elapsed + self.text:SetFormattedText("%.1f", self.timeLeft >= 0.0 and self.timeLeft or 0.0) + end + end + end) + self.frames[unit] = auraFrame self:ResetUnit(unit) end @@ -123,6 +125,7 @@ function Auras:UpdateFrame(unit) else auraFrame.icon.overlay:SetVertexColor(0, 0, 0, 1) end + auraFrame.icon.overlay:Hide() if Gladdy.db.auraDisableCircle then auraFrame.cooldown:SetAlpha(0) end @@ -130,21 +133,30 @@ end function Auras:ResetUnit(unit) self.frames[unit]:UnregisterAllEvents() - self:AURA_FADE(unit) + self:AURA_FADE(unit, AURA_TYPE_DEBUFF) + self:AURA_FADE(unit, AURA_TYPE_BUFF) end function Auras:Test(unit) - local aura, _, icon + local spellName, _, icon if (unit == "arena1") then - aura, _, icon = GetSpellInfo(12826) - self:AURA_GAIN(unit,nil, 12826, aura, icon, self.auras[aura].duration, GetTime() + self.auras[aura].duration) + spellName, _, icon = GetSpellInfo(12826) + self:AURA_FADE(unit, AURA_TYPE_BUFF) + self:AURA_FADE(unit, AURA_TYPE_DEBUFF) + self:AURA_GAIN(unit,AURA_TYPE_DEBUFF, 12826, spellName, icon, self.auras[spellName].duration, GetTime() + self.auras[spellName].duration) elseif (unit == "arena2") then - aura, _, icon = GetSpellInfo(6770) - self:AURA_GAIN(unit,nil, 6770, aura, icon, self.auras[aura].duration, GetTime() + self.auras[aura].duration) + spellName, _, icon = GetSpellInfo(6770) + self:AURA_FADE(unit, AURA_TYPE_BUFF) + self:AURA_FADE(unit,AURA_TYPE_DEBUFF) + self:AURA_GAIN(unit,AURA_TYPE_DEBUFF, 6770, spellName, icon, self.auras[spellName].duration, GetTime() + self.auras[spellName].duration) elseif (unit == "arena3") then - aura, _, icon = GetSpellInfo(31224) - self:AURA_GAIN(unit,nil, 31224, aura, icon, self.auras[aura].duration, GetTime() + self.auras[aura].duration) + spellName, _, icon = GetSpellInfo(31224) + self:AURA_FADE(unit, AURA_TYPE_BUFF) + self:AURA_GAIN(unit,AURA_TYPE_BUFF, 31224, spellName, icon, self.auras[spellName].duration, GetTime() + self.auras[spellName].duration) + spellName, _, icon = GetSpellInfo(18425) + self:AURA_FADE(unit, AURA_TYPE_DEBUFF) + self:AURA_GAIN(unit,AURA_TYPE_DEBUFF, 18425, spellName, icon, self.auras[spellName].duration, GetTime() + self.auras[spellName].duration) end end @@ -155,35 +167,36 @@ function Auras:JOINED_ARENA() end end -function Auras:AURA_GAIN(unit, auraType, spellID, aura, icon, duration, expirationTime, count, debuffType) +function Auras:AURA_GAIN(unit, auraType, spellID, spellName, icon, duration, expirationTime, count, debuffType) local auraFrame = self.frames[unit] if (not auraFrame) then return end - if not self.auras[aura] then + + if not self.auras[spellName] then return end -- don't use spellId from combatlog, in case of different spellrank - if not Gladdy.db.auraListDefault[tostring(self.auras[aura].spellID)] or not Gladdy.db.auraListDefault[tostring(self.auras[aura].spellID)].enabled then + if not Gladdy.db.auraListDefault[tostring(self.auras[spellName].spellID)] or not Gladdy.db.auraListDefault[tostring(self.auras[spellName].spellID)].enabled then return end - if (auraFrame.priority and auraFrame.priority > Gladdy.db.auraListDefault[tostring(self.auras[aura].spellID)].priority) then + if (auraFrame.priority and auraFrame.priority > Gladdy.db.auraListDefault[tostring(self.auras[spellName].spellID)].priority) then return end auraFrame.startTime = expirationTime - duration auraFrame.endTime = expirationTime - auraFrame.name = aura + auraFrame.name = spellName auraFrame.timeLeft = expirationTime - GetTime() - auraFrame.priority = Gladdy.db.auraListDefault[tostring(self.auras[aura].spellID)].priority + auraFrame.priority = Gladdy.db.auraListDefault[tostring(self.auras[spellName].spellID)].priority auraFrame.icon:SetTexture(icon) - auraFrame.track = self.auras[aura].track + auraFrame.track = auraType auraFrame.active = true - auraFrame.icon.overlay:SetTexture(Gladdy.db.auraBorderStyle) + auraFrame.icon.overlay:Show() auraFrame.cooldownFrame:Show() - if auraFrame.track and auraFrame.track == AURA_TYPE_DEBUFF then + if auraType == AURA_TYPE_DEBUFF then auraFrame.icon.overlay:SetVertexColor(Gladdy.db.auraDebuffBorderColor.r, Gladdy.db.auraDebuffBorderColor.g, Gladdy.db.auraDebuffBorderColor.b, Gladdy.db.auraDebuffBorderColor.a) - elseif auraFrame.track and auraFrame.track == AURA_TYPE_BUFF then + elseif auraType == AURA_TYPE_BUFF then auraFrame.icon.overlay:SetVertexColor(Gladdy.db.auraBuffBorderColor.r, Gladdy.db.auraBuffBorderColor.g, Gladdy.db.auraBuffBorderColor.b, Gladdy.db.auraBuffBorderColor.a) else auraFrame.icon.overlay:SetVertexColor(Gladdy.db.frameBorderColor.r, Gladdy.db.frameBorderColor.g, Gladdy.db.frameBorderColor.b, Gladdy.db.frameBorderColor.a) @@ -194,9 +207,9 @@ function Auras:AURA_GAIN(unit, auraType, spellID, aura, icon, duration, expirati end end -function Auras:AURA_FADE(unit) +function Auras:AURA_FADE(unit, auraType) local auraFrame = self.frames[unit] - if (not auraFrame) then + if (not auraFrame or auraFrame.track ~= auraType) then return end if auraFrame.active then @@ -211,7 +224,7 @@ function Auras:AURA_FADE(unit) auraFrame.endTime = nil auraFrame.icon:SetTexture("") auraFrame.text:SetText("") - auraFrame.icon.overlay:SetTexture("") + auraFrame.icon.overlay:Hide() auraFrame.cooldownFrame:Hide() end @@ -252,6 +265,13 @@ function Auras:GetOptions() step = 0.1, order = 4, }), + } + }, + font = { + type = "group", + name = L["Font"], + order = 2, + args = { auraFont = Gladdy:option({ type = "select", name = L["Font"], @@ -276,12 +296,12 @@ function Auras:GetOptions() order = 7, hasAlpha = true, }), - } + }, }, border = { type = "group", name = "Border", - order = 2, + order = 3, args = { headerAuras = { type = "header", diff --git a/Modules/BuffsDebuffs.lua b/Modules/BuffsDebuffs.lua index 1d7047e..da0394e 100644 --- a/Modules/BuffsDebuffs.lua +++ b/Modules/BuffsDebuffs.lua @@ -226,15 +226,16 @@ 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:SetHeight(Gladdy.db.buffsIconSize) debuffFrame:SetWidth(1) - debuffFrame:SetPoint("BOTTOMLEFT", Gladdy.buttons[unit].healthBar, "TOPLEFT", 0, Gladdy.db.highlightBorderSize + Gladdy.db.padding) + debuffFrame:SetPoint("BOTTOMLEFT", Gladdy.buttons[unit].healthBar, "TOPLEFT", 0, verticalMargin) debuffFrame.unit = unit local buffFrame = CreateFrame("Frame", "GladdyBuffs" .. unit, Gladdy.buttons[unit]) buffFrame:SetHeight(Gladdy.db.buffsIconSize) buffFrame:SetWidth(1) - buffFrame:SetPoint("BOTTOMLEFT", Gladdy.buttons[unit].healthBar, "TOPLEFT", 0, Gladdy.db.highlightBorderSize + Gladdy.db.padding) + buffFrame:SetPoint("BOTTOMLEFT", Gladdy.buttons[unit].healthBar, "TOPLEFT", 0, verticalMargin) buffFrame.unit = unit self.frames[unit] = {} self.frames[unit].buffFrame = buffFrame @@ -277,7 +278,9 @@ end function BuffsDebuffs:UpdateFrame(unit) self.frames[unit].debuffFrame:SetHeight(Gladdy.db.buffsIconSize) self.frames[unit].debuffFrame:ClearAllPoints() - local horizontalMargin = Gladdy.db.highlightBorderSize + + --DEBUFFS + local horizontalMargin = (Gladdy.db.highlightInset and 0 or Gladdy.db.highlightBorderSize) local verticalMargin = -(Gladdy.db.powerBarHeight)/2 if Gladdy.db.buffsCooldownPos == "TOP" then verticalMargin = horizontalMargin + 1 @@ -300,7 +303,7 @@ function BuffsDebuffs:UpdateFrame(unit) self.frames[unit].debuffFrame:SetPoint("TOPRIGHT", Gladdy.buttons[unit].powerBar, "BOTTOMLEFT", Gladdy.db.buffsXOffset, Gladdy.db.buffsYOffset -verticalMargin) end elseif Gladdy.db.buffsCooldownPos == "LEFT" then - horizontalMargin = Gladdy.db.highlightBorderSize - 1 + Gladdy.db.padding + horizontalMargin = horizontalMargin - 1 + Gladdy.db.padding local anchor = Gladdy:GetAnchor(unit, "LEFT") if anchor == Gladdy.buttons[unit].healthBar then self.frames[unit].debuffFrame:SetPoint("RIGHT", anchor, "LEFT", -horizontalMargin + Gladdy.db.buffsXOffset, Gladdy.db.buffsYOffset) @@ -318,9 +321,10 @@ function BuffsDebuffs:UpdateFrame(unit) end end + --BUFFS self.frames[unit].buffFrame:SetHeight(Gladdy.db.buffsBuffsIconSize) self.frames[unit].buffFrame:ClearAllPoints() - horizontalMargin = Gladdy.db.highlightBorderSize + horizontalMargin = (Gladdy.db.highlightInset and 0 or Gladdy.db.highlightBorderSize) verticalMargin = -(Gladdy.db.powerBarHeight)/2 if Gladdy.db.buffsBuffsCooldownPos == "TOP" then verticalMargin = horizontalMargin + 1 @@ -369,7 +373,7 @@ function BuffsDebuffs:UpdateFrame(unit) --self.frames[unit].buffFrame:SetPoint("RIGHT", Gladdy.buttons[unit].healthBar, "LEFT", -horizontalMargin + Gladdy.db.buffsBuffsXOffset, Gladdy.db.buffsBuffsYOffset + verticalMargin) local anchor = Gladdy:GetAnchor(unit, "LEFT") - horizontalMargin = Gladdy.db.highlightBorderSize - 1 + Gladdy.db.padding + horizontalMargin = (Gladdy.db.highlightInset and 0 or Gladdy.db.highlightBorderSize) - 1 + Gladdy.db.padding if anchor == Gladdy.buttons[unit].healthBar then self.frames[unit].buffFrame:SetPoint("RIGHT", anchor, "LEFT", -horizontalMargin + Gladdy.db.buffsBuffsXOffset, Gladdy.db.buffsBuffsYOffset) else @@ -403,7 +407,7 @@ function BuffsDebuffs:UpdateFrame(unit) --self.frames[unit].buffFrame:SetPoint("LEFT", Gladdy.buttons[unit].healthBar, "RIGHT", horizontalMargin + Gladdy.db.buffsBuffsXOffset, Gladdy.db.buffsBuffsYOffset + verticalMargin) local anchor = Gladdy:GetAnchor(unit, "RIGHT") - horizontalMargin = Gladdy.db.highlightBorderSize - 1 + Gladdy.db.padding + horizontalMargin = (Gladdy.db.highlightInset and 0 or Gladdy.db.highlightBorderSize) - 1 + Gladdy.db.padding if anchor == Gladdy.buttons[unit].healthBar then self.frames[unit].buffFrame:SetPoint("LEFT", anchor, "RIGHT", horizontalMargin + Gladdy.db.buffsBuffsXOffset, Gladdy.db.buffsBuffsYOffset) else diff --git a/Modules/Castbar.lua b/Modules/Castbar.lua index 2a746f0..7f1c07c 100644 --- a/Modules/Castbar.lua +++ b/Modules/Castbar.lua @@ -165,7 +165,7 @@ function Castbar:UpdateFrame(unit) end castBar:ClearAllPoints() - local horizontalMargin = Gladdy.db.highlightBorderSize + Gladdy.db.padding + local horizontalMargin = (Gladdy.db.highlightInset and 0 or Gladdy.db.highlightBorderSize) + Gladdy.db.padding if (Gladdy.db.castBarPos == "LEFT") then local anchor = Gladdy:GetAnchor(unit, "LEFT") if anchor == Gladdy.buttons[unit].healthBar then diff --git a/Modules/Classicon.lua b/Modules/Classicon.lua index 5474b40..2648e4e 100644 --- a/Modules/Classicon.lua +++ b/Modules/Classicon.lua @@ -120,7 +120,7 @@ function Classicon:UpdateFrame(unit) classIcon:SetHeight(Gladdy.db.classIconSize) classIcon:ClearAllPoints() - local margin = Gladdy.db.highlightBorderSize + Gladdy.db.padding + local margin = (Gladdy.db.highlightInset and 0 or Gladdy.db.highlightBorderSize) + Gladdy.db.padding if (Gladdy.db.classIconPos == "LEFT") then classIcon:SetPoint("TOPRIGHT", Gladdy.buttons[unit].healthBar, "TOPLEFT", -margin, 0) else @@ -203,6 +203,11 @@ function Classicon:GetOptions() name = L["Icon size"], order = 1, args = { + header = { + type = "header", + name = L["Icon size"], + order = 1, + }, classIconSize = Gladdy:option({ type = "range", name = L["Icon size"], diff --git a/Modules/CombatIndicator.lua b/Modules/CombatIndicator.lua index 5178f17..c9ca5c7 100644 --- a/Modules/CombatIndicator.lua +++ b/Modules/CombatIndicator.lua @@ -64,6 +64,7 @@ function CombatIndicator:UpdateFrame(unit) end ciFrame:SetHeight(Gladdy.db.ciSize) ciFrame:SetWidth(Gladdy.db.ciSize * Gladdy.db.ciWidthFactor) + ciFrame.border:SetTexture(Gladdy.db.ciBorderStyle) ciFrame.border:SetVertexColor(Gladdy.db.ciBorderColor.r, Gladdy.db.ciBorderColor.g, Gladdy.db.ciBorderColor.b, Gladdy.db.ciBorderColor.a) ciFrame:ClearAllPoints() diff --git a/Modules/Cooldowns.lua b/Modules/Cooldowns.lua index 9b587df..46406c9 100644 --- a/Modules/Cooldowns.lua +++ b/Modules/Cooldowns.lua @@ -135,29 +135,30 @@ function Cooldowns:UpdateFrame(unit) if (Gladdy.db.cooldown) then button.spellCooldownFrame:ClearAllPoints() local verticalMargin = -(Gladdy.db.powerBarHeight)/2 + local horizontalMargin = (Gladdy.db.highlightInset and 0 or Gladdy.db.highlightBorderSize) if Gladdy.db.cooldownYPos == "TOP" then if Gladdy.db.cooldownXPos == "RIGHT" then - button.spellCooldownFrame:SetPoint("BOTTOMRIGHT", button.healthBar, "TOPRIGHT", Gladdy.db.cooldownXOffset, Gladdy.db.highlightBorderSize + Gladdy.db.cooldownYOffset) -- needs to be properly anchored after trinket + button.spellCooldownFrame:SetPoint("BOTTOMRIGHT", button.healthBar, "TOPRIGHT", Gladdy.db.cooldownXOffset, horizontalMargin + Gladdy.db.cooldownYOffset) else - button.spellCooldownFrame:SetPoint("BOTTOMLEFT", button.healthBar, "TOPLEFT", Gladdy.db.cooldownXOffset, Gladdy.db.highlightBorderSize + Gladdy.db.cooldownYOffset) + button.spellCooldownFrame:SetPoint("BOTTOMLEFT", button.healthBar, "TOPLEFT", Gladdy.db.cooldownXOffset, horizontalMargin + Gladdy.db.cooldownYOffset) end elseif Gladdy.db.cooldownYPos == "BOTTOM" then if Gladdy.db.cooldownXPos == "RIGHT" then - button.spellCooldownFrame:SetPoint("TOPRIGHT", button.powerBar, "BOTTOMRIGHT", Gladdy.db.cooldownXOffset, -Gladdy.db.highlightBorderSize + Gladdy.db.cooldownYOffset) -- needs to be properly anchored after trinket + button.spellCooldownFrame:SetPoint("TOPRIGHT", button.powerBar, "BOTTOMRIGHT", Gladdy.db.cooldownXOffset, -horizontalMargin + Gladdy.db.cooldownYOffset) else - button.spellCooldownFrame:SetPoint("TOPLEFT", button.powerBar, "BOTTOMLEFT", Gladdy.db.cooldownXOffset, -Gladdy.db.highlightBorderSize + Gladdy.db.cooldownYOffset) + button.spellCooldownFrame:SetPoint("TOPLEFT", button.powerBar, "BOTTOMLEFT", Gladdy.db.cooldownXOffset, -horizontalMargin + Gladdy.db.cooldownYOffset) end elseif Gladdy.db.cooldownYPos == "LEFT" then local anchor = Gladdy:GetAnchor(unit, "LEFT") if anchor == Gladdy.buttons[unit].healthBar then - button.spellCooldownFrame:SetPoint("RIGHT", anchor, "LEFT", -(Gladdy.db.highlightBorderSize + Gladdy.db.padding) + Gladdy.db.cooldownXOffset, Gladdy.db.cooldownYOffset) + button.spellCooldownFrame:SetPoint("RIGHT", anchor, "LEFT", -(horizontalMargin + Gladdy.db.padding) + Gladdy.db.cooldownXOffset, Gladdy.db.cooldownYOffset) else button.spellCooldownFrame:SetPoint("RIGHT", anchor, "LEFT", -Gladdy.db.padding + Gladdy.db.cooldownXOffset, Gladdy.db.cooldownYOffset) end elseif Gladdy.db.cooldownYPos == "RIGHT" then local anchor = Gladdy:GetAnchor(unit, "RIGHT") if anchor == Gladdy.buttons[unit].healthBar then - button.spellCooldownFrame:SetPoint("LEFT", anchor, "RIGHT", Gladdy.db.highlightBorderSize + Gladdy.db.padding + Gladdy.db.cooldownXOffset, Gladdy.db.cooldownYOffset) + button.spellCooldownFrame:SetPoint("LEFT", anchor, "RIGHT", horizontalMargin + Gladdy.db.padding + Gladdy.db.cooldownXOffset, Gladdy.db.cooldownYOffset) else button.spellCooldownFrame:SetPoint("LEFT", anchor, "RIGHT", Gladdy.db.padding + Gladdy.db.cooldownXOffset, Gladdy.db.cooldownYOffset) end @@ -601,7 +602,7 @@ function Cooldowns:GetOptions() desc = L["Size of each cd icon"], order = 4, min = 5, - max = (Gladdy.db.healthBarHeight + Gladdy.db.castBarHeight + Gladdy.db.powerBarHeight + Gladdy.db.bottomMargin) / 2, + max = 50, }), cooldownWidthFactor = Gladdy:option({ type = "range", diff --git a/Modules/Diminishings.lua b/Modules/Diminishings.lua index 245e059..2cba67a 100644 --- a/Modules/Diminishings.lua +++ b/Modules/Diminishings.lua @@ -162,7 +162,7 @@ function Diminishings:UpdateFrame(unit) end drFrame:ClearAllPoints() - local horizontalMargin = Gladdy.db.highlightBorderSize + Gladdy.db.padding + local horizontalMargin = (Gladdy.db.highlightInset and 0 or Gladdy.db.highlightBorderSize) + Gladdy.db.padding if (Gladdy.db.drCooldownPos == "LEFT") then local anchor = Gladdy:GetAnchor(unit, "LEFT") if anchor == Gladdy.buttons[unit].healthBar then diff --git a/Modules/ExportImport.lua b/Modules/ExportImport.lua index 8be70b4..3253929 100644 --- a/Modules/ExportImport.lua +++ b/Modules/ExportImport.lua @@ -85,6 +85,10 @@ end) import:AddChild(importClearButton) import.clearButton = importClearButton +local deletedOptions = { --TODO backward compatibility Imports on deleted options + growUp = true +} + function ExportImport:CheckDeserializedOptions(tbl, refTbl, str) if str == nil and not tbl.version_major_num then return false, "Version conflict: version_major_num not seen" diff --git a/Modules/Healthbar.lua b/Modules/Healthbar.lua index e6f739b..2418535 100644 --- a/Modules/Healthbar.lua +++ b/Modules/Healthbar.lua @@ -164,7 +164,7 @@ function Healthbar:UpdateFrame(unit) edgeSize = Gladdy.db.healthBarBorderSize }) healthBar:SetBackdropBorderColor(Gladdy.db.healthBarBorderColor.r, Gladdy.db.healthBarBorderColor.g, Gladdy.db.healthBarBorderColor.b, Gladdy.db.healthBarBorderColor.a) healthBar:ClearAllPoints() - healthBar:SetPoint("TOPLEFT", Gladdy.buttons[unit], "TOPLEFT", iconSize, 0) + healthBar:SetPoint("TOPLEFT", Gladdy.buttons[unit], "TOPLEFT", 0, 0) healthBar:SetPoint("BOTTOMRIGHT", Gladdy.buttons[unit], "BOTTOMRIGHT") healthBar.hp:SetStatusBarTexture(Gladdy.LSM:Fetch("statusbar", Gladdy.db.healthBarTexture)) diff --git a/Modules/Highlight.lua b/Modules/Highlight.lua index 9513193..a543dab 100644 --- a/Modules/Highlight.lua +++ b/Modules/Highlight.lua @@ -3,10 +3,12 @@ local CreateFrame, UnitIsUnit = CreateFrame, UnitIsUnit local Gladdy = LibStub("Gladdy") local L = Gladdy.L local Highlight = Gladdy:NewModule("Highlight", nil, { - highlightBorderSize = 2, + highlightBorderSize = 1, + highlightInset = false, targetBorderColor = { r = 1, g = 0.8, b = 0, a = 1 }, focusBorderColor = { r = 1, g = 0, b = 0, a = 1 }, leaderBorderColor = { r = 0, g = 1, b = 0, a = 1 }, + highlightBorderStyle = "Square Full White", highlight = true, targetBorder = true, focusBorder = true, @@ -53,17 +55,17 @@ function Highlight:CreateFrame(unit) local healthBar = Gladdy.modules.Healthbar.frames[unit] local targetBorder = CreateFrame("Frame", nil, button, BackdropTemplateMixin and "BackdropTemplate") - targetBorder:SetBackdrop({ edgeFile = "Interface\\ChatFrame\\ChatFrameBackground", edgeSize = Gladdy.db.highlightBorderSize }) + targetBorder:SetBackdrop({ edgeFile = Gladdy.LSM:Fetch("border", Gladdy.db.highlightBorderStyle), edgeSize = Gladdy.db.highlightBorderSize }) --targetBorder:SetFrameStrata("MEDIUM") targetBorder:Hide() local focusBorder = CreateFrame("Frame", nil, button, BackdropTemplateMixin and "BackdropTemplate") - focusBorder:SetBackdrop({ edgeFile = "Interface\\ChatFrame\\ChatFrameBackground", edgeSize = Gladdy.db.highlightBorderSize }) + focusBorder:SetBackdrop({ edgeFile = Gladdy.LSM:Fetch("border", Gladdy.db.highlightBorderStyle), edgeSize = Gladdy.db.highlightBorderSize }) --focusBorder:SetFrameStrata("MEDIUM") focusBorder:Hide() local leaderBorder = CreateFrame("Frame", nil, button, BackdropTemplateMixin and "BackdropTemplate") - leaderBorder:SetBackdrop({ edgeFile = "Interface\\ChatFrame\\ChatFrameBackground", edgeSize = Gladdy.db.highlightBorderSize }) + leaderBorder:SetBackdrop({ edgeFile = Gladdy.LSM:Fetch("border", Gladdy.db.highlightBorderStyle), edgeSize = Gladdy.db.highlightBorderSize }) --leaderBorder:SetFrameStrata("MEDIUM") leaderBorder:Hide() @@ -88,29 +90,48 @@ function Highlight:UpdateFrame(unit) end local borderSize = Gladdy.db.highlightBorderSize + local borderOffset = borderSize local iconSize = Gladdy.db.healthBarHeight + Gladdy.db.powerBarHeight + 1 - local width = Gladdy.db.barWidth + borderSize * 2 - local height = iconSize + borderSize * 2 + local width = Gladdy.db.barWidth + (Gladdy.db.highlightInset and 0 or borderSize * 2) + local height = iconSize + (Gladdy.db.highlightInset and 0 or borderSize * 2) button.targetBorder:SetWidth(width) button.targetBorder:SetHeight(height) button.targetBorder:ClearAllPoints() - button.targetBorder:SetPoint("TOP", button.healthBar, "TOP", 0, borderSize) - button.targetBorder:SetBackdrop({ edgeFile = "Interface\\ChatFrame\\ChatFrameBackground", edgeSize = borderSize }) + if Gladdy.db.highlightInset then + button.targetBorder:SetPoint("TOPLEFT", button.healthBar, "TOPLEFT", -(borderOffset/Gladdy.db.statusbarBorderOffset), (borderOffset/Gladdy.db.statusbarBorderOffset)) + button.targetBorder:SetPoint("BOTTOMRIGHT", button.powerBar, "BOTTOMRIGHT", (borderOffset/Gladdy.db.statusbarBorderOffset), -(borderOffset/Gladdy.db.statusbarBorderOffset)) + else + button.targetBorder:SetPoint("TOP", button.healthBar, "TOP", 0, (Gladdy.db.highlightInset and 0 or borderSize)) + end + + button.targetBorder:SetBackdrop({ edgeFile = Gladdy.LSM:Fetch("border", Gladdy.db.highlightBorderStyle), edgeSize = borderSize }) button.targetBorder:SetBackdropBorderColor(Gladdy.db.targetBorderColor.r, Gladdy.db.targetBorderColor.g, Gladdy.db.targetBorderColor.b, Gladdy.db.targetBorderColor.a) button.focusBorder:SetWidth(width) button.focusBorder:SetHeight(height) button.focusBorder:ClearAllPoints() - button.focusBorder:SetPoint("TOP", button.healthBar, "TOP", 0, borderSize) - button.focusBorder:SetBackdrop({ edgeFile = "Interface\\ChatFrame\\ChatFrameBackground", edgeSize = borderSize }) + if Gladdy.db.highlightInset then + button.focusBorder:SetPoint("TOPLEFT", button.healthBar, "TOPLEFT", -(borderOffset/Gladdy.db.statusbarBorderOffset), (borderOffset/Gladdy.db.statusbarBorderOffset)) + button.focusBorder:SetPoint("BOTTOMRIGHT", button.powerBar, "BOTTOMRIGHT", (borderOffset/Gladdy.db.statusbarBorderOffset), -(borderOffset/Gladdy.db.statusbarBorderOffset)) + else + button.focusBorder:SetPoint("TOP", button.healthBar, "TOP", 0, (Gladdy.db.highlightInset and 0 or borderSize)) + end + + button.focusBorder:SetBackdrop({ edgeFile = Gladdy.LSM:Fetch("border", Gladdy.db.highlightBorderStyle), edgeSize = borderSize }) button.focusBorder:SetBackdropBorderColor(Gladdy.db.focusBorderColor.r, Gladdy.db.focusBorderColor.g, Gladdy.db.focusBorderColor.b, Gladdy.db.focusBorderColor.a) button.leaderBorder:SetWidth(width) button.leaderBorder:SetHeight(height) button.leaderBorder:ClearAllPoints() - button.leaderBorder:SetPoint("TOP", button.healthBar, "TOP", 0, borderSize) - button.leaderBorder:SetBackdrop({ edgeFile = "Interface\\ChatFrame\\ChatFrameBackground", edgeSize = borderSize }) + if Gladdy.db.highlightInset then + button.leaderBorder:SetPoint("TOPLEFT", button.healthBar, "TOPLEFT", -(borderOffset/Gladdy.db.statusbarBorderOffset), (borderOffset/Gladdy.db.statusbarBorderOffset)) + button.leaderBorder:SetPoint("BOTTOMRIGHT", button.powerBar, "BOTTOMRIGHT", (borderOffset/Gladdy.db.statusbarBorderOffset), -(borderOffset/Gladdy.db.statusbarBorderOffset)) + else + button.leaderBorder:SetPoint("TOP", button.healthBar, "TOP", 0, (Gladdy.db.highlightInset and 0 or borderSize)) + end + + button.leaderBorder:SetBackdrop({ edgeFile = Gladdy.LSM:Fetch("border", Gladdy.db.highlightBorderStyle), edgeSize = borderSize }) button.leaderBorder:SetBackdropBorderColor(Gladdy.db.leaderBorderColor.r, Gladdy.db.leaderBorderColor.g, Gladdy.db.leaderBorderColor.b, Gladdy.db.leaderBorderColor.a) if Gladdy.frame.testing then Highlight:Test(unit) @@ -179,34 +200,52 @@ function Highlight:GetOptions() name = L["Highlight"], order = 2, }, - highlightBorderSize = { + highlightInset = Gladdy:option({ + type = "toggle", + name = L["Show Inside"], + desc = L["Show Highlight border inside of frame"], + order = 3, + }), + highlightBorderSize = Gladdy:option({ type = "range", name = L["Border size"], desc = L["Border size"], - order = 3, + order = 4, min = 1, - max = 10, + max = 20, step = 1, + }), + highlightBorderStyle = Gladdy:option({ + type = "select", + name = L["Border style"], + order = 5, + dialogControl = "LSM30_Border", + values = AceGUIWidgetLSMlists.border, + }), + headerColor = { + type = "header", + name = L["Colors"], + order = 6, }, targetBorderColor = Gladdy:colorOption({ type = "color", name = L["Target border color"], desc = L["Color of the selected targets border"], - order = 4, + order = 7, hasAlpha = true, }), focusBorderColor = Gladdy:colorOption({ type = "color", name = L["Focus border color"], desc = L["Color of the focus border"], - order = 5, + order = 8, hasAlpha = true, }), leaderBorderColor = Gladdy:colorOption({ type = "color", name = L["Raid leader border color"], desc = L["Color of the raid leader border"], - order = 6, + order = 9, hasAlpha = true, }), headerEnable = { diff --git a/Modules/Pets.lua b/Modules/Pets.lua index d7590b0..3041bf6 100644 --- a/Modules/Pets.lua +++ b/Modules/Pets.lua @@ -1,12 +1,12 @@ local string_gsub, floor, pairs = string.gsub, math.floor, pairs -local CreateFrame = CreateFrame +local CreateFrame, SetPortraitTexture = CreateFrame, SetPortraitTexture local UnitHealthMax, UnitHealth, UnitGUID = UnitHealthMax, UnitHealth, UnitGUID local Gladdy = LibStub("Gladdy") local L = Gladdy.L local Pets = Gladdy:NewModule("Pets", nil, { petEnabled = true, - petWidth = 100, + petWidth = 128, petHeight = 20, petPortraitEnabled = true, petPortraitBorderStyle = "Interface\\AddOns\\Gladdy\\Images\\Border_rounded_blp", @@ -21,8 +21,8 @@ local Pets = Gladdy:NewModule("Pets", nil, { petHealthBarFontColor = { r = 1, g = 1, b = 1, a = 1 }, petHealthBarFontSize = 12, petHealthPercentage = true, - petXOffset = 50, - petYOffset = 0, + petXOffset = 1, + petYOffset = -62, }) function Pets:Initialize() @@ -124,6 +124,7 @@ function Pets:Test(unitId) petFrame.healthBar.hp:SetMinMaxValues(0, 6200) petFrame.healthBar.hp:SetValue(2000) Pets:SetHealthText(petFrame.healthBar, 2000, 6200) + SetPortraitTexture(petFrame.healthBar.portrait, "player") end end @@ -374,7 +375,7 @@ function Pets:GetOptions() desc = L["Width of the bar"], order = 4, min = 10, - max = 100, + max = 300, step = 1, }), petHealthBarTexture = option({ diff --git a/Modules/Racial.lua b/Modules/Racial.lua index f2ea005..8fcc2a1 100644 --- a/Modules/Racial.lua +++ b/Modules/Racial.lua @@ -134,7 +134,7 @@ function Racial:UpdateFrame(unit) racial.texture.overlay:SetVertexColor(Gladdy.db.racialBorderColor.r, Gladdy.db.racialBorderColor.g, Gladdy.db.racialBorderColor.b, Gladdy.db.racialBorderColor.a) racial:ClearAllPoints() - local margin = Gladdy.db.highlightBorderSize + Gladdy.db.padding + local margin = (Gladdy.db.highlightInset and 0 or Gladdy.db.highlightBorderSize) + Gladdy.db.padding local parent = Gladdy.buttons[unit][Gladdy.db.racialAnchor] if (Gladdy.db.racialPos == "RIGHT") then racial:SetPoint(ANCHORS[Gladdy.db.racialPos], parent, Gladdy.db.racialPos, Gladdy.db.padding + Gladdy.db.racialXOffset, Gladdy.db.racialYOffset) @@ -237,7 +237,7 @@ function Racial:GetOptions() header = { type = "header", name = L["Size"], - order = 4, + order = 1, }, racialSize = Gladdy:option({ type = "range", @@ -245,7 +245,7 @@ function Racial:GetOptions() min = 5, max = 100, step = 1, - order = 4, + order = 2, }), racialWidthFactor = Gladdy:option({ type = "range", @@ -253,7 +253,7 @@ function Racial:GetOptions() min = 0.5, max = 2, step = 0.05, - order = 6, + order = 3, }), }, }, diff --git a/Modules/TotemPlates.lua b/Modules/TotemPlates.lua index 5e49d94..67cca14 100644 --- a/Modules/TotemPlates.lua +++ b/Modules/TotemPlates.lua @@ -451,7 +451,7 @@ function TotemPlates:GetOptions() args = { header = { type = "header", - name = L["Icon"], + name = L["Font"], order = 1, }, npTremorFont = Gladdy:option({ diff --git a/Modules/Trinket.lua b/Modules/Trinket.lua index 7fb96f5..b471fd6 100644 --- a/Modules/Trinket.lua +++ b/Modules/Trinket.lua @@ -130,7 +130,7 @@ function Trinket:UpdateFrame(unit) trinket.texture.overlay:SetVertexColor(Gladdy.db.trinketBorderColor.r, Gladdy.db.trinketBorderColor.g, Gladdy.db.trinketBorderColor.b, Gladdy.db.trinketBorderColor.a) trinket:ClearAllPoints() - local margin = Gladdy.db.highlightBorderSize + Gladdy.db.padding + local margin = (Gladdy.db.highlightInset and 0 or Gladdy.db.highlightBorderSize) + Gladdy.db.padding if (Gladdy.db.classIconPos == "LEFT") then if (Gladdy.db.trinketPos == "RIGHT") then trinket:SetPoint("TOPLEFT", Gladdy.buttons[unit].healthBar, "TOPRIGHT", margin, 0) diff --git a/Modules/XiconProfiles.lua b/Modules/XiconProfiles.lua index e98ff3e..22dc490 100644 --- a/Modules/XiconProfiles.lua +++ b/Modules/XiconProfiles.lua @@ -34,12 +34,41 @@ function XiconProfiles:ApplyClassic() Gladdy:ToggleFrame(3) end +function XiconProfiles:ApplyBlizz() + local deserialized = Gladdy.modules["ExportImport"]:Decode(Gladdy:GetBlizzardProfile()) + if deserialized then + Gladdy.modules["ExportImport"]:ApplyImport(deserialized, Gladdy.db) + end + Gladdy:Reset() + Gladdy:HideFrame() + Gladdy:ToggleFrame(3) +end + function XiconProfiles:GetOptions() return { + headerProfileBlizzard = { + type = "header", + name = L["Blizzard Profile"], + order = 2, + }, + blizzardProfile = { + type = "execute", + func = function() + Gladdy.dbi:ResetProfile(Gladdy.dbi:GetCurrentProfile()) + XiconProfiles:ApplyBlizz() + end, + name = " ", + desc = "Blizzard Profile", + image = "Interface\\AddOns\\Gladdy\\Images\\BasicProfiles\\Blizz1.blp", + imageWidth = 350, + imageHeight = 175, + width = "full", + order = 3, + }, headerProfileClassic = { type = "header", name = L["Classic Profile"], - order = 2, + order = 4, }, classicProfile = { type = "execute", @@ -53,12 +82,12 @@ function XiconProfiles:GetOptions() imageWidth = 350, imageHeight = 175, width = "full", - order = 3, + order = 5, }, headerProfileKnall = { type = "header", name = L["Knall's Profile"], - order = 4, + order = 6, }, knallProfile = { type = "execute", @@ -72,12 +101,12 @@ function XiconProfiles:GetOptions() imageWidth = 350, imageHeight = 175, width = "full", - order = 5, + order = 7, }, headerProfileKlimp = { type = "header", name = L["Klimp's Profile"], - order = 6, + order = 8, }, klimpProfiles = { type = "execute", @@ -91,7 +120,8 @@ function XiconProfiles:GetOptions() name = " ", desc = "Klimp's Profile", width = "full", - order = 7, + order = 9, }, + } end \ No newline at end of file diff --git a/Options.lua b/Options.lua index 02a6eb9..1631a9f 100644 --- a/Options.lua +++ b/Options.lua @@ -16,10 +16,11 @@ Gladdy.defaults = { x = 0, y = 0, growUp = false, + growDirection = "BOTTOM", frameScale = 1, - padding = 3, + padding = 1, barWidth = 180, - bottomMargin = 10, + bottomMargin = 2, statusbarBorderOffset = 6, }, } @@ -193,10 +194,21 @@ function Gladdy:SetupOptions() desc = L["If enabled the frame will grow upwards instead of downwards"], order = 2, }, + growDirection = { + type = "select", + name = L["Grow Direction"], + order = 3, + values = { + ["BOTTOM"] = L["Down"], + ["TOP"] = L["Up"], + ["LEFT"] = L["Left"], + ["RIGHT"] = L["Right"], + } + }, group = { type = "group", name = "General", - order = 3, + order = 4, childGroups = "tree", args = { frameGeneral = { @@ -238,11 +250,11 @@ function Gladdy:SetupOptions() }, bottomMargin = { type = "range", - name = L["Bottom margin"], + name = L["Margin"], desc = L["Margin between each button"], order = 7, - min = -100, - max = 100, + min = -200, + max = 200, step = 1, }, } @@ -490,6 +502,7 @@ function Gladdy:SetupOptions() local g = Gladdy.db.cooldownBorderColor local h = Gladdy.db.drBorderColor local i = Gladdy.db.trinketBorderColor + local j = Gladdy.db.racialBorderColor if (a.r == b.r and a.g == b.g and a.b == b.b and a.a == b.a and a.r == c.r and a.g == c.g and a.b == c.b and a.a == c.a and a.r == d.r and a.g == d.g and a.b == d.b and a.a == d.a @@ -497,7 +510,8 @@ function Gladdy:SetupOptions() and a.r == f.r and a.g == f.g and a.b == f.b and a.a == f.a and a.r == g.r and a.g == g.g and a.b == g.b and a.a == g.a and a.r == h.r and a.g == h.g and a.b == h.b and a.a == h.a - and a.r == i.r and a.g == i.g and a.b == i.b and a.a == i.a) then + and a.r == i.r and a.g == i.g and a.b == i.b and a.a == i.a + and a.r == j.r and a.g == j.g and a.b == j.b and a.a == j.a) then return a.r, a.g, a.b, a.a else return { r = 0, g = 0, b = 0, a = 0 } @@ -514,6 +528,7 @@ function Gladdy:SetupOptions() Gladdy.db.cooldownBorderColor = rgb Gladdy.db.drBorderColor = rgb Gladdy.db.trinketBorderColor = rgb + Gladdy.db.racialBorderColor = rgb Gladdy:UpdateFrame() end, }, diff --git a/README.md b/README.md index b1d84f0..6825bf6 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # Gladdy - TBC ### The most powerful arena addon for WoW TBC 2.5.1 -## [v1.07-Beta Download Here](https://github.com/XiconQoo/Gladdy-TBC/releases/download/v1.07-Beta/Gladdy_TBC-Classic_v1.07-Beta.zip) +## [v1.08-Beta Download Here](https://github.com/XiconQoo/Gladdy-TBC/releases/download/v1.08-Beta/Gladdy_TBC-Classic_v1.08-Beta.zip) ###### Please consider donating if you like my work @@ -39,6 +39,13 @@ The goal is to make Gladdy highly configurable in it's appearance. Everything ca ### Changes +#### v1.08-Beta +- fix Buffs not showing on class icon +- added option highlight to be inside +- added option to grow frames vertically +- added new profile to XiconProfile (Blizzard raid style) +- minor bugfixes + #### v1.07-Beta - CombatIndicator module added