Compare commits

..

49 Commits

Author SHA1 Message Date
Sumsebrum cf804546c2 Merge branch 'release/v1.07-Beta' into main 2021-05-20 01:32:35 +02:00
Sumsebrum 467b459898 bump version and update readme 2021-05-20 01:32:08 +02:00
Sumsebrum 0d9cbc8f45 DRData cleanup 2021-05-20 01:24:20 +02:00
Sumsebrum 2c858e1c84 XiconProfile image update 2021-05-20 01:23:55 +02:00
Sumsebrum ffc5d32b80 delete Bindings.xml 2021-05-20 01:11:03 +02:00
Sumsebrum 1956b3a568 BuffDebuff options width for icons updated 2021-05-20 01:07:20 +02:00
Sumsebrum 84f542b3b8 add a couple buffs to LibClassAuras 2021-05-20 01:06:42 +02:00
Sumsebrum ccf7d08832 add blessing of sacrifice and intervene to auras 2021-05-20 01:06:03 +02:00
Sumsebrum 2e093950e2 cleanup 2021-05-20 00:16:18 +02:00
Sumsebrum 2f9356f8de classicon warrior slight change 2021-05-20 00:16:09 +02:00
Sumsebrum 8c4a70fd04 general options updated to apply font/borders/etc for all frames 2021-05-20 00:15:50 +02:00
Sumsebrum cac0124f1a XiconProfiles updated 2021-05-20 00:15:06 +02:00
Sumsebrum cef9de3819 cleanup 2021-05-19 19:33:22 +02:00
Sumsebrum a84178edbf /gladdy test1-5 now possible 2021-05-19 19:33:13 +02:00
Sumsebrum c05fab9454 spec icon option added to Classicon module 2021-05-19 19:32:31 +02:00
Sumsebrum be54619576 arena1-5 for name option added 2021-05-19 19:31:13 +02:00
Sumsebrum c70560e66a Highlight remove framestrata 2021-05-19 19:30:54 +02:00
Sumsebrum de4adaec16 fix PowerBar text updates 2021-05-19 19:30:46 +02:00
Sumsebrum 01d748f37e combat indicator fix anchoring 2021-05-19 19:30:40 +02:00
Sumsebrum ad130af188 click through frames health/power bar 2021-05-19 19:30:32 +02:00
Sumsebrum 67edecf8d1 arena countdown refactor 2021-05-19 19:29:59 +02:00
Sumsebrum e01b86e1e6 cleanup Totemplates 2021-05-19 16:35:45 +02:00
Sumsebrum 8b69f5ef93 CombatIndicator module added 2021-05-19 16:35:26 +02:00
Sumsebrum 4f774b1ddb mask applied to icons 2021-05-19 14:57:29 +02:00
Sumsebrum 3a846add3b totem icons removed and mask applied 2021-05-19 14:56:38 +02:00
Sumsebrum 9dfec29f16 add mask texture for icons 2021-05-19 13:55:55 +02:00
Sumsebrum 28d33d2f9a Merge tag 'aura-fix' into develop
v1.06-Beta hotfix
2021-05-18 18:31:33 +02:00
Sumsebrum 2d53df2b5f Merge branch 'hotfix/aura-fix' into main 2021-05-18 18:31:22 +02:00
Sumsebrum cddea2e094 v1.06-Beta hotfix BuffDebuff module 2021-05-18 18:31:03 +02:00
Sumsebrum ee1a78000e Merge tag 'v1.05-Beta' into develop
v1.05-Beta
2021-05-18 16:47:54 +02:00
Sumsebrum 57036a77c1 Merge branch 'release/v1.05-Beta' into main 2021-05-18 16:47:45 +02:00
Sumsebrum fb46b97e73 toc v1.0.5-Beta 2021-05-18 16:45:54 +02:00
Sumsebrum 35d49b61ee toc added ImportStrings and Racial 2021-05-18 16:42:04 +02:00
Sumsebrum f2bfbe3211 Racial module added to Eventlistener and Version check updated 2021-05-18 16:41:25 +02:00
Sumsebrum 8a27f88014 constants for auras/cooldowns/racials updated 2021-05-18 16:40:54 +02:00
Sumsebrum 2db3db21ec anchoring for modules rewritten 2021-05-18 16:39:43 +02:00
Sumsebrum eaf8129143 fix Aura module options (localization independent for profile export) 2021-05-18 16:39:07 +02:00
Sumsebrum 1fb3fce980 Power-/HealthBar customize texts added and UNIT_DESTROYED added 2021-05-18 16:38:17 +02:00
Sumsebrum a152cb6045 Racial module added and trinket modified 2021-05-18 16:37:22 +02:00
Sumsebrum 267d37b32e XiconProfiles import strings 2021-05-18 16:35:20 +02:00
Sumsebrum 7bdc417b30 Pets position extended 2021-05-18 16:35:02 +02:00
Sumsebrum af6eb61c56 delete unused saved variables 2021-05-18 16:34:45 +02:00
Sumsebrum fd5183cf5d ExportImport, VersionCheck & XiconProfiles fix 2021-05-18 16:34:10 +02:00
Sumsebrum edb5608a38 fixed auras 2021-05-18 16:14:11 +02:00
Sumsebrum f640f6fa6a TotemPlates add option to show friendly/enemy icons 2021-05-17 23:22:07 +02:00
Sumsebrum cf8b961a1b Merge tag 'profiles' into develop
xiconprofiles fix
2021-05-17 18:23:08 +02:00
Sumsebrum 03d127fd39 Merge branch 'hotfix/profiles' into main 2021-05-17 18:23:01 +02:00
Sumsebrum 4722bbc9bd hotfix profiles 2021-05-17 18:22:31 +02:00
Sumsebrum ea44a9d5f2 Merge tag 'readme-v-fix' into develop
v1.0.3-Beta-readme-fix
2021-05-17 17:11:46 +02:00
40 changed files with 2177 additions and 1214 deletions
-38
View File
@@ -1,38 +0,0 @@
<Bindings>
<Binding name="GLADDYBUTTON1_LEFT" header="GLADDY" category="ADDONS"/>
<Binding name="GLADDYBUTTON2_LEFT" category="ADDONS"/>
<Binding name="GLADDYBUTTON3_LEFT" category="ADDONS"/>
<Binding name="GLADDYBUTTON4_LEFT" category="ADDONS"/>
<Binding name="GLADDYBUTTON5_LEFT" category="ADDONS"/>
<Binding name="GLADDYBUTTON1_RIGHT" category="ADDONS"/>
<Binding name="GLADDYBUTTON2_RIGHT" category="ADDONS"/>
<Binding name="GLADDYBUTTON3_RIGHT" category="ADDONS"/>
<Binding name="GLADDYBUTTON4_RIGHT" category="ADDONS"/>
<Binding name="GLADDYBUTTON5_RIGHT" category="ADDONS"/>
<Binding name="GLADDYBUTTON1_MIDDLE" category="ADDONS"/>
<Binding name="GLADDYBUTTON2_MIDDLE" category="ADDONS"/>
<Binding name="GLADDYBUTTON3_MIDDLE" category="ADDONS"/>
<Binding name="GLADDYBUTTON4_MIDDLE" category="ADDONS"/>
<Binding name="GLADDYBUTTON5_MIDDLE" category="ADDONS"/>
<Binding name="GLADDYBUTTON1_BUTTON4" category="ADDONS"/>
<Binding name="GLADDYBUTTON2_BUTTON4" category="ADDONS"/>
<Binding name="GLADDYBUTTON3_BUTTON4" category="ADDONS"/>
<Binding name="GLADDYBUTTON4_BUTTON4" category="ADDONS"/>
<Binding name="GLADDYBUTTON5_BUTTON4" category="ADDONS"/>
<Binding name="GLADDYBUTTON1_BUTTON5" category="ADDONS"/>
<Binding name="GLADDYBUTTON2_BUTTON5" category="ADDONS"/>
<Binding name="GLADDYBUTTON3_BUTTON5" category="ADDONS"/>
<Binding name="GLADDYBUTTON4_BUTTON5" category="ADDONS"/>
<Binding name="GLADDYBUTTON5_BUTTON5" category="ADDONS"/>
<Binding header="GLADDYTRINKET" name="GLADDYTRINKET1" category="ADDONS"/>
<Binding name="GLADDYTRINKET2" category="ADDONS"/>
<Binding name="GLADDYTRINKET3" category="ADDONS"/>
<Binding name="GLADDYTRINKET4" category="ADDONS"/>
<Binding name="GLADDYTRINKET5" category="ADDONS"/>
</Bindings>
+305 -1
View File
@@ -1,3 +1,5 @@
local tbl_sort, select = table.sort, select
local GetSpellInfo = GetSpellInfo
local Gladdy = LibStub("Gladdy")
@@ -155,7 +157,7 @@ function Gladdy:GetImportantAuras()
priority = 40,
spellID = 33786,
},
-- Hibername
-- Hibernate
[GetSpellInfo(18658)] = {
track = AURA_TYPE_DEBUFF,
duration = 10,
@@ -364,6 +366,13 @@ function Gladdy:GetImportantAuras()
priority = 10,
spellID = 1044,
},
-- Blessing of Sacrifice
[GetSpellInfo(6940)] = {
track = AURA_TYPE_BUFF,
duration = 30,
priority = 12,
spellID = 6940,
},
-- Divine Shield
[GetSpellInfo(642)] = {
track = AURA_TYPE_BUFF,
@@ -581,6 +590,14 @@ function Gladdy:GetImportantAuras()
spellSchool = "magic",
spellID = 18498,
},
-- Death Wish
[GetSpellInfo(12292)] = {
track = AURA_TYPE_BUFF,
duration = 3,
priority = 15,
spellSchool = "magic",
spellID = 12292,
},
-- Grounding Totem Effect
[GetSpellInfo(8178)] = {
@@ -589,6 +606,14 @@ function Gladdy:GetImportantAuras()
priority = 20,
spellID = 8178
},
--Intervene
[GetSpellInfo(3411)] = {
track = AURA_TYPE_BUFF,
duration = 10,
priority = 10,
spellSchool = "physical",
spellID = 3411,
},
-- War Stomp
@@ -607,4 +632,283 @@ function Gladdy:GetImportantAuras()
spellID = 28730,
},
}
end
Gladdy.CLASSES = {"MAGE", "PRIEST", "DRUID", "SHAMAN", "PALADIN", "WARLOCK", "WARRIOR", "HUNTER", "ROGUE"}
tbl_sort(Gladdy.CLASSES)
Gladdy.RACES = {"Scourge", "BloodElf", "Tauren", "Orc", "Troll", "NightElf", "Draenei", "Human", "Gnome", "Dwarf"}
tbl_sort(Gladdy.RACES)
function Gladdy:GetCooldownList()
return {
-- Spell Name Cooldown[, Spec]
-- Mage
["MAGE"] = {
[1953] = 15, -- Blink
--[122] = 22, -- Frost Nova
--[12051] = 480, --Evocation
[2139] = 24, -- Counterspell
[45438] = { cd = 300, [L["Frost"]] = 240, }, -- Ice Block
[12472] = { cd = 180, spec = L["Frost"], }, -- Icy Veins
[31687] = { cd = 180, spec = L["Frost"], }, -- Summon Water Elemental
[12043] = { cd = 180, spec = L["Arcane"], }, -- Presence of Mind
[11129] = { cd = 180, spec = L["Fire"] }, -- Combustion
[120] = { cd = 10,
sharedCD = {
[31661] = true, -- Cone of Cold
}, spec = L["Fire"] }, -- Dragon's Breath
[31661] = { cd = 20,
sharedCD = {
[120] = true, -- Cone of Cold
}, spec = L["Fire"] }, -- Dragon's Breath
[12042] = { cd = 180, spec = L["Arcane"], }, -- Arcane Power
[11958] = { cd = 384, spec = L["Frost"], -- Coldsnap
resetCD = {
[12472] = true,
[45438] = true,
[31687] = true,
},
},
},
-- Priest
["PRIEST"] = {
[10890] = { cd = 27, [L["Shadow"]] = 23, }, -- Psychic Scream
[15487] = { cd = 45, spec = L["Shadow"], }, -- Silence
[10060] = { cd = 180, spec = L["Discipline"], }, -- Power Infusion
[33206] = { cd = 120, spec = L["Discipline"], }, -- Pain Suppression
[34433] = 300, -- Shadowfiend
},
-- Druid
["DRUID"] = {
[22812] = 60, -- Barkskin
[29166] = 360, -- Innervate
[8983] = 60, -- Bash
[16689] = 60, -- Natures Grasp
[17116] = { cd = 180, spec = L["Restoration"], }, -- Natures Swiftness
[33831] = { cd = 180, spec = L["Balance"], }, -- Force of Nature
},
-- Shaman
["SHAMAN"] = {
[8042] = { cd = 6, -- Earth Shock
sharedCD = {
[8056] = true, -- Frost Shock
[8050] = true, -- Flame Shock
},
},
[30823] = { cd = 120, spec = L["Enhancement"], }, -- Shamanistic Rage
[16166] = { cd = 180, spec = L["Elemental"], }, -- Elemental Mastery
[16188] = { cd = 180, spec = L["Restoration"], }, -- Natures Swiftness
[16190] = { cd = 300, spec = L["Restoration"], }, -- Mana Tide Totem
},
-- Paladin
["PALADIN"] = {
[10278] = 180, -- Blessing of Protection
[1044] = 25, -- Blessing of Freedom
[10308] = { cd = 60, [L["Retribution"]] = 40, }, -- Hammer of Justice
[642] = { cd = 300, -- Divine Shield
sharedCD = {
cd = 60, -- no actual shared CD but debuff
[31884] = true,
},
},
[31884] = { cd = 180, spec = L["Retribution"], -- Avenging Wrath
sharedCD = {
cd = 60,
[642] = true,
},
},
[20066] = { cd = 60, spec = L["Retribution"], }, -- Repentance
[31842] = { cd = 180, spec = L["Holy"], }, -- Divine Illumination
[31935] = { cd = 30, spec = L["Protection"], }, -- Avengers Shield
},
-- Warlock
["WARLOCK"] = {
[17928] = 40, -- Howl of Terror
[27223] = 120, -- Death Coil
--[19647] = { cd = 24 }, -- Spell Lock; how will I handle pet spells?
[30414] = { cd = 20, spec = L["Destruction"], }, -- Shadowfury
[17877] = { cd = 15, spec = L["Destruction"], }, -- Shadowburn
[18708] = { cd = 900, spec = L["Demonology"], }, -- Feldom
},
-- Warrior
["WARRIOR"] = {
--[[6552] = { cd = 10, -- Pummel
sharedCD = {
[72] = true,
},
},
[72] = { cd = 12, -- Shield Bash
sharedCD = {
[6552] = true,
},
}, ]]
--[23920] = 10, -- Spell Reflection
[3411] = 30, -- Intervene
[676] = 60, -- Disarm
[5246] = 180, -- Intimidating Shout
--[2565] = 60, -- Shield Block
[12292] = { cd = 180, spec = L["Arms"], }, -- Death Wish
[12975] = { cd = 180, spec = L["Protection"], }, -- Last Stand
[12809] = { cd = 30, spec = L["Protection"], }, -- Concussion Blow
},
-- Hunter
["HUNTER"] = {
[19503] = 30, -- Scatter Shot
[19263] = 300, -- Deterrence; not on BM but can't do 2 specs
[14311] = { cd = 30, -- Freezing Trap
sharedCD = {
[13809] = true, -- Frost Trap
[34600] = true, -- Snake Trap
},
},
[13809] = { cd = 30, -- Frost Trap
sharedCD = {
[14311] = true, -- Freezing Trap
[34600] = true, -- Snake Trap
},
},
[34600] = { cd = 30, -- Snake Trap
sharedCD = {
[14311] = true, -- Freezing Trap
[13809] = true, -- Frost Trap
},
},
[34490] = { cd = 20, spec = L["Marksmanship"], }, -- Silencing Shot
[19386] = { cd = 60, spec = L["Survival"], }, -- Wyvern Sting
[19577] = { cd = 60, spec = L["Beast Mastery"], }, -- Intimidation
[38373] = { cd = 120, spec = L["Beast Mastery"], }, -- The Beast Within
},
-- Rogue
["ROGUE"] = {
[1766] = 10, -- Kick
[8643] = 20, -- Kidney Shot
[31224] = 60, -- Cloak of Shadow
[26889] = { cd = 300, [L["Subtlety"]] = 180, }, -- Vanish
[2094] = { cd = 180, [L["Subtlety"]] = 90, }, -- Blind
[11305] = { cd = 300, [L["Combat"]] = 180, }, -- Sprint
[26669] = { cd = 300, [L["Combat"]] = 180, }, -- Evasion
[14177] = { cd = 180, spec = L["Assassination"], }, -- Cold Blood
[13750] = { cd = 300, spec = L["Combat"], }, -- Adrenaline Rush
[13877] = { cd = 120, spec = L["Combat"], }, -- Blade Flurry
[36554] = { cd = 30, spec = L["Subtlety"], }, -- Shadowstep
[14185] = { cd = 600, spec = L["Subtlety"], -- Preparation
resetCD = {
[26669] = true,
[11305] = true,
[26889] = true,
[14177] = true,
[36554] = true,
},
},
},
["Scourge"] = {
},
["BloodElf"] = {
},
["Tauren"] = {
},
["Orc"] = {
},
["Troll"] = {
},
["NightElf"] = {
[2651] = { cd = 180, spec = L["Discipline"], }, -- Elune's Grace
[10797] = { cd = 30, spec = L["Discipline"], }, -- Star Shards
},
["Draenei"] = {
[32548] = { cd = 300, spec = L["Discipline"], }, -- Hymn of Hope
},
["Human"] = {
[13908] = { cd = 600, spec = L["Discipline"], }, -- Desperate Prayer
},
["Gnome"] = {
},
["Dwarf"] = {
[13908] = { cd = 600, spec = L["Discipline"], }, -- Desperate Prayer
},
}
end
function Gladdy:Racials()
return {
["Scourge"] = {
[7744] = true, -- Will of the Forsaken
duration = 120,
spellName = select(1, GetSpellInfo(7744)),
texture = select(3, GetSpellInfo(7744))
},
["BloodElf"] = {
[28730] = true, -- Arcane Torrent
duration = 120,
spellName = select(1, GetSpellInfo(28730)),
texture = select(3, GetSpellInfo(28730))
},
["Tauren"] = {
[20549] = true, -- War Stomp
duration = 120,
spellName = select(1, GetSpellInfo(20549)),
texture = select(3, GetSpellInfo(20549))
},
["Orc"] = {
[20572] = true,
[33697] = true,
[33702] = true,
duration = 120,
spellName = select(1, GetSpellInfo(20572)),
texture = select(3, GetSpellInfo(20572))
},
["Troll"] = {
[20554] = true,
[26296] = true,
[26297] = true,
duration = 180,
spellName = select(1, GetSpellInfo(20554)),
texture = select(3, GetSpellInfo(20554))
},
["NightElf"] = {
[20580] = true,
duration = 10,
spellName = select(1, GetSpellInfo(20580)),
texture = select(3, GetSpellInfo(20580))
},
["Draenei"] = {
[28880] = true,
duration = 180,
spellName = select(1, GetSpellInfo(28880)),
texture = select(3, GetSpellInfo(28880))
},
["Human"] = {
[20600] = true, -- Perception
duration = 180,
spellName = select(1, GetSpellInfo(20600)),
texture = select(3, GetSpellInfo(20600))
},
["Gnome"] = {
[20589] = true, -- Escape Artist
duration = 105,
spellName = select(1, GetSpellInfo(20589)),
texture = select(3, GetSpellInfo(20589))
},
["Dwarf"] = {
[20594] = true, -- Stoneform
duration = 180,
spellName = select(1, GetSpellInfo(20594)),
texture = select(3, GetSpellInfo(20594))
},
}
end
+15 -8
View File
@@ -1,4 +1,4 @@
local select, string_gsub = select, string.gsub
local select, string_gsub, tostring = select, string.gsub, tostring
local CombatLogGetCurrentEventInfo = CombatLogGetCurrentEventInfo
local RAID_CLASS_COLORS = RAID_CLASS_COLORS
@@ -34,7 +34,7 @@ function EventListener:JOINED_ARENA()
self:RegisterEvent("UNIT_SPELLCAST_CHANNEL_START")
self:RegisterEvent("UNIT_SPELLCAST_SUCCEEDED")
self:SetScript("OnEvent", EventListener.OnEvent)
Gladdy:SendCommMessage("GladdyVCheck", Gladdy.version, "RAID", UnitName("player"))
Gladdy:SendCommMessage("GladdyVCheck", tostring(Gladdy.version_num), "RAID", UnitName("player"))
end
function EventListener:Reset()
@@ -106,17 +106,24 @@ function EventListener:COMBAT_LOG_EVENT_UNFILTERED()
end
end
if srcUnit then
local unitRace = Gladdy.buttons[srcUnit].race
-- cooldown tracker
if Gladdy.db.cooldown and Cooldowns.cooldownSpellIds[spellName] then
local unitClass
local spellId = Cooldowns.cooldownSpellIds[spellName] -- don't use spellId from combatlog, in case of different spellrank
if (Cooldowns.cooldownSpells[Gladdy.buttons[srcUnit].class][spellId]) then
unitClass = Gladdy.buttons[srcUnit].class
else
unitClass = Gladdy.buttons[srcUnit].race
if Gladdy.db.cooldownCooldowns[tostring(spellId)] then
if (Gladdy:GetCooldownList()[Gladdy.buttons[srcUnit].class][spellId]) then
unitClass = Gladdy.buttons[srcUnit].class
else
unitClass = Gladdy.buttons[srcUnit].race
end
Cooldowns:CooldownUsed(srcUnit, unitClass, spellId, spellName)
Gladdy:DetectSpec(srcUnit, Gladdy.specSpells[spellName])
end
Cooldowns:CooldownUsed(srcUnit, unitClass, spellId, spellName)
Gladdy:DetectSpec(srcUnit, Gladdy.specSpells[spellName])
end
if Gladdy.db.racialEnabled and Gladdy:Racials()[unitRace].spellName == spellName and Gladdy:Racials()[unitRace][spellID] then
Gladdy:SendMessage("RACIAL_USED", srcUnit)
end
if not Gladdy.buttons[srcUnit].class then
+27 -15
View File
@@ -32,7 +32,7 @@ function Gladdy:CreateFrame()
self.frame = CreateFrame("Frame", "GladdyFrame", UIParent)
self.frame:SetClampedToScreen(true)
self.frame:EnableMouse(true)
self.frame:EnableMouse(false)
self.frame:SetMovable(true)
self.frame:RegisterForDrag("LeftButton")
@@ -187,7 +187,7 @@ function Gladdy:UpdateFrame()
local button = self.buttons["arena" .. i]
button:SetWidth(self.db.barWidth + extraBarWidth)
button:SetHeight(self.db.healthBarHeight)
button.secure:SetWidth(self.db.barWidth + extraBarWidth)
button.secure:SetWidth(self.db.barWidth)
button.secure:SetHeight(self.db.healthBarHeight + extraBarHeight)
button:ClearAllPoints()
@@ -195,27 +195,27 @@ function Gladdy:UpdateFrame()
if (self.db.growUp) then
if (i == 1) then
button:SetPoint("BOTTOMLEFT", self.frame, "BOTTOMLEFT", self.db.padding + 2, 0)
button.secure:SetPoint("BOTTOMLEFT", self.frame, "BOTTOMLEFT", self.db.padding + 2, 0)
button.secure:SetPoint("TOPLEFT", button.healthBar, "TOPLEFT")
else
button:SetPoint("BOTTOMLEFT", self.buttons["arena" .. (i - 1)], "TOPLEFT", 0, margin + self.db.bottomMargin)
button.secure:SetPoint("BOTTOMLEFT", self.buttons["arena" .. (i - 1)], "TOPLEFT", 0, margin + self.db.bottomMargin)
button.secure:SetPoint("TOPLEFT", button.healthBar, "TOPLEFT")
end
else
if (i == 1) then
button:SetPoint("TOPLEFT", self.frame, "TOPLEFT", self.db.padding + 2, 0)
button.secure:SetPoint("TOPLEFT", self.frame, "TOPLEFT", self.db.padding + 2, 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", self.buttons["arena" .. (i - 1)], "BOTTOMLEFT", 0, -margin - self.db.bottomMargin)
button.secure:SetPoint("TOPLEFT", button.healthBar, "TOPLEFT")
end
end
for k, v in self:IterModules() do
for _, v in self:IterModules() do
self:Call(v, "UpdateFrame", button.unit)
end
end
for k, v in self:IterModules() do
for _, v in self:IterModules() do
self:Call(v, "UpdateFrameOnce")
end
end
@@ -257,6 +257,7 @@ function Gladdy:CreateButton(i)
end
local button = CreateFrame("Frame", "GladdyButtonFrame" .. i, self.frame)
button:EnableMouse(false)
button:SetAlpha(0)
local secure = CreateFrame("Button", "GladdyButton" .. i, button, "SecureActionButtonTemplate")
@@ -265,12 +266,9 @@ function Gladdy:CreateButton(i)
secure:SetAttribute("*type1", "target")
secure:SetAttribute("*type2", "focus")
secure:SetAttribute("unit", "arena" .. i)
button:RegisterEvent("UNIT_NAME_UPDATE")
button:RegisterEvent("ARENA_OPPONENT_UPDATE")
button:RegisterEvent("ARENA_COOLDOWNS_UPDATE")
button:RegisterEvent("ARENA_CROWD_CONTROL_SPELL_UPDATE")
button:RegisterUnitEvent("UNIT_CONNECTION", "arena" .. i)
--secure.texture = secure:CreateTexture(nil, "OVERLAY")
--secure.texture:SetAllPoints(secure)
--secure.texture:SetTexture("Interface\\AddOns\\Gladdy\\Images\\Border_rounded_blp")
button.id = i
button.unit = "arena" .. i
@@ -281,7 +279,21 @@ function Gladdy:CreateButton(i)
self.buttons[button.unit] = button
for k, v in self:IterModules() do
for _, v in self:IterModules() do
self:Call(v, "CreateFrame", button.unit)
end
end
function Gladdy:GetAnchor(unit, position)
local anchor = "healthBar"
if Gladdy.db.classIconPos == position then
anchor = "classIcon"
end
if Gladdy.db.trinketPos == position then
anchor = "trinket"
end
if anchor == Gladdy.db.racialAnchor and Gladdy.db.racialPos == position then
anchor = "racial"
end
return Gladdy.buttons[unit][anchor]
end
+30 -3
View File
@@ -11,6 +11,9 @@ local IsAddOnLoaded = IsAddOnLoaded
local IsInInstance = IsInInstance
local GetBattlefieldStatus = GetBattlefieldStatus
local IsActiveBattlefieldArena = IsActiveBattlefieldArena
local RELEASE_TYPES = { alpha = "Alpha", beta = "Beta", release = "Release"}
local PREFIX = "TBC-Classic_v"
local VERSION_REGEX = PREFIX .. "(%d+%.%d+)%-(%a)"
---------------------------
@@ -21,9 +24,12 @@ local IsActiveBattlefieldArena = IsActiveBattlefieldArena
local MAJOR, MINOR = "Gladdy", 4
local Gladdy = LibStub:NewLibrary(MAJOR, MINOR)
local L
Gladdy.version_major = "TBC-Classic_v1"
Gladdy.version_minor = "0.3-Beta"
Gladdy.version = Gladdy.version_major .. "." .. Gladdy.version_minor
Gladdy.version_major_num = 1
Gladdy.version_minor_num = 0.07
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
Gladdy.VERSION_REGEX = VERSION_REGEX
LibStub("AceTimer-3.0"):Embed(Gladdy)
LibStub("AceComm-3.0"):Embed(Gladdy)
@@ -160,6 +166,25 @@ end
---------------------------
function Gladdy:DeleteUnknownOptions(tbl, refTbl, str)
if str == nil then
str = "Gladdy.db"
end
for k,v in pairs(tbl) do
if refTbl[k] == nil then
--Gladdy:Print("SavedVariable deleted:", str .. "." .. k, "not found!")
tbl[k] = nil
else
if type(v) ~= type(refTbl[k]) then
--Gladdy:Print("SavedVariable deleted:", str .. "." .. k, "type error!", "Expected", type(refTbl[k]), "but found", type(v))
tbl[k] = nil
elseif type(v) == "table" then
Gladdy:DeleteUnknownOptions(v, refTbl[k], str .. "." .. k)
end
end
end
end
function Gladdy:OnInitialize()
self.dbi = LibStub("AceDB-3.0"):New("GladdyXZ", self.defaults)
self.dbi.RegisterCallback(self, "OnProfileChanged", "OnProfileChanged")
@@ -201,10 +226,12 @@ function Gladdy:OnInitialize()
for k, v in self:IterModules() do
self:Call(v, "Initialize") -- B.E > A.E :D
end
self:DeleteUnknownOptions(self.db, self.defaults.profile)
end
function Gladdy:OnProfileChanged()
self.db = self.dbi.profile
self:DeleteUnknownOptions(self.db, self.defaults.profile)
self:HideFrame()
self:ToggleFrame(3)
+4 -1
View File
@@ -1,6 +1,6 @@
## Interface: 20501
## Title: Gladdy - TBC
## Version: 1.0.3-Beta
## Version: 1.07-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
@@ -14,6 +14,7 @@ Lang.lua
Frame.lua
Options.lua
Constants.lua
ImportStrings.lua
Modules\Announcements.lua
Modules\Healthbar.lua
@@ -25,6 +26,7 @@ Modules\Diminishings.lua
Modules\Highlight.lua
Modules\TotemPlates.lua
Modules\Trinket.lua
Modules\Racial.lua
Modules\Cooldowns.lua
Modules\ArenaCountDown.lua
Modules\BuffsDebuffs.lua
@@ -32,4 +34,5 @@ Modules\VersionCheck.lua
Modules\XiconProfiles.lua
Modules\Pets.lua
Modules\ExportImport.lua
Modules\CombatIndicator.lua
EventListener.lua
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
+13
View File
@@ -0,0 +1,13 @@
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"
end
function Gladdy:GetClassicProfile()
return "4XzRBT3CBBJe)t05bVF8Nrn1PzMgxF1UZ1BMmkLwI2MxKe9rsDPU)r)SFlWUGVKOPCSYmrIMayXI9f(TlGwYxE7YBwxTOSADE1puUPSk8ISLxXxEZDXpFi(zv4ZML3SQSCZ6YVTBIbCPwj9gf3ZeoJK7ClV)FOvbImvlvt1cmz3T)(7Rxe(4DBE6rCowLv3SiBsgMfzywKHzbASg6eYYenyx4GwZwvKTzul807rIFtZZBYxEZh31KxDF2Q8p)U1R)LD1F(dBYwV(5p)XTzpKx)zSVFPQC)U15R)YDBEkmNVVOo7Un5)qr1kGg31X2p0JLV0kyARHXuoM06CEsKaIrJrXmmo8ELxlfSqlYOyCIwQMQfqe0uvS7R5nhWt4I9h3fE76LlwEZJ5zBAEeyZRY2MFz5UMBk(RCqUiwEZUNUTSjF71BYAYrTX728TSNRVnR6H8gy43rQRBES8BVBFv27ZJ)z38CDz9YB(1p(HFkAW9Vkw384LzRAkJwwDt9T5)zZ(kqU)PIDfBZ2uuhvIrUzvgW4Gc03zY(Qus1)39zvjL0Jfp84g4)nTSEYCiYP)8pE5T9yRFk(WqzsN5zAKFOQ8BVVOkFvtr5UH04tz)zqedYXQ8TLX1ZYBEFzvr91xdgdbj2e2m)7FbMH8MLx9pKkSN)miuEF(9z730eSKmwll8DENM8PQcG0npV8kv0lq4SYP7dxh6dxi16zOdNjzU56JtjMMo4Cj5gdFw6y0ZnxsUqOMSpcQpCUDg(r4bgA6(G8JxZKZXZALB25YYCtVUKiDmERFU(iCSP7dP3nE3C0bccPMJosP0pToL4hRDArijEKZAf68UPfYjg2pTohNiqnmxxukMAAvvsel8I5CByQPNQwlh70tfYooJAwJlHtmNe2bS8C6sL5fwuOpdxjN12IZe2PTJXvUqlSZPieq4IPNlkEHs5NZYryfIzfHoyXpNc1P8VW6c7Jx6MtvyyZfnvluVqqhnfiywfQq6ftlC04uzDZrgjGzyUyGsaNYSRB5SHTvaKVP7dAcAuZzKke6z34ZZMvlibCNZz344VGPoXnm2lSfsY8toZm1KGv0HV9JB3UFxEyyDOCVW7rGUxWe9aNJagqSfxwv8x)9F8p3NTUkRj7V)JBVLi9V3INai2tLFlV668Qv57AaOsDW1ArDWOHngX2)lVQgq58LTz)NYQVSB)24BxxnK85niYPEtbSOZ2TdWlVkFl8Q6WkJGO(R5zRFoWd1pLVk8D(U8TXxqD43QrPgIPk0W68aaXNYQar4nv517Ri4x1H(TomS6UrC7JqxEeaRL0AJf2xwwTDOOUFcfqQdnKmlIjmcF8kUbe9BYQR)4QYjtmYOnEyBaaaLs74sDpe9hVLQPAPPllSwLe4Dgrg(wbfpwCmquCyYGD2BhKPquON4ZPTibdKOHvyjWs2EiXGDNb9xqMEnW2f7W5EmhgY1yofwVX89lAsA9WA51jBoHEFF5Q9tk37VII9gLkOus2M80qxS(SBSNxQTH8mDaYiM3ZSH8dbCFDUOhlR6lHHyG9vdBjA0wHJmodz6leqEhwhGcqZnqQjTg0t0s1uTKCPOuKar(USFaIp0emDWvPqBsghJYCAvrx(rqQa3CFfK7kLPiV)y6Ex0CO3OyhAvv3lR4vfJd91L4xNEG7tt2KP2swGOX9aDEFFLuUKX4IiMMfbWwwVn8GeGEOXhcPqfEG5O(etiyrklKWdCjd7SIh7RbGOhEVX4I9e0SGpBCSmfsKiw1Wdwh9qaGBKggWfnoZox8nCj1fPtAPrhWfH9rfjCeJtKkopdNBo9Gxlr6QK4GH34WPMZXb5GCLcp4yQw2m(GGl948esaCrkdUit5XXG5Rfjh2IuaYfKxyMilim6OyjMrrCSwnYBrSTXjmKbq8bLn(GewSOCNBiPSsIsxyPrZueUA4bMIJuwXDACkDOOh6SZrnrcAH3Qr2iPiTEb2ho0io7bqAlO8KwKGDSiHPAbcCkU8fgY0rscrdQILgTgLzgJbNhrGB7TXY4OUdk)dzbZOyh0MG(GNY72T6rWSVZMpeSQNVuNNZyVKgW55R5RtLn62GopPlitFqvOr21jqJaPb1B2KvNok)cfvl2UpzttFdzAevuEMKe0cEu0GQ2yYtHXX5OW16XxO5YK1asV08LMqYixMCIuEuTlcXzJFZXhKKfOJm51cKsglAmiH96XoekIYIei3WBixcWKfTzDKfkWCy7dT6LcIjH4SKFgAu58c0A1APfHvfNkxAU1cYSWlrJnyUXLHYOqMrdWsIVr79X(Q4edJPiapOr7Cksd3BqJBllzEIw0GOLcbbz3g7reZEC24ONgAEsfOkqzTmjvXPQ1jW7OiuHs(ehc5jPfJcncodw6fm8bVIJu1HsYa1r5bWx4d(KdABSrjzBAqHo4YzP1cgtgCPJdvNuFGXm2rd(GLIrftmfEqH(QqR4mzitqoSqAnMJK0WLKfHthNuDYsriXj3PP9f04CbgzXVjng2kiTXy4u0Di4l5BKeYcSJwgke447Tw6l0Lb21yyOuH1tM6k6bEA)koUgXe)rssXUH)HInLmfrg)BRanIjhEi2anab5wrbCJjFgNEbraK)IfeAbLhC41EY7Hgh0BYHLItBqBqlNeksdUjiNmRbNeCMKss2ImKLI37j6a7B0kqI(DHOSf)EVSRsi1of4FmC4eOiw84nGqYpaOHYJbnR3KN)0OumVVeaggIOhYxQi89vGaN5rI1uTPUz)UtzmAVjIwRA36tEiodonpMHjwn3amH93Gb816tP3GwoIWVEvwdGO)0gdhXCUUOoi221CkdYWSi07vNuV5Qy1BUppR6u6FydNOGTS8K4gnGINueVIHiIdj)PqscqY3N0O84OGm2EasP(UQ8mixTtyGksiVp7u6ToexniVQYZ)RCakWjzcRDY4XewS9j4nNKIP1C85vBk3DsIadpYBnyc2hEKHRkozhxQigDP3c4NUUScwVfnV10ttPDho)TldM1R38Cyn98YlbOIq0oyxdLM5nW(vqIFQ2muta4crtEOQ8B)2tHvFmO07w1SpBtGk9p2QdQm0XoG1dZQKwA4kbs(hgutXt)9FqRIoSNH57USQuzbGWu9sHAW5NAuonGKcIRc)daf078tpRvBbfuedfaP0Q0Fv6RbNr8HhEyVJDmTLWrpm0JiAJguMHQjkTuwl)3J(jrnKXDWCV(68QFUyxOAceJ1dYE3bO3JaXonkt8nLba8HHSQ4yhQ8jAgmov8FyFvD(rQEsQcpM2k80Lmoa)HMxYe(UXjT3p5MGF90vOkjRo44z7RhoXY80k2MkyrV(2xx2hUaPndL88RNWu(NG)pdsooKUjG4pc6h8)bb0M8mqg)YbV4DbVgRxU(XNRlwbY2jd5HfFRjuG2fhwFdmAXLa8Bi9zVgsecIp5nPcmv20uU9tzvpuSdZ1KcEotXTxmS2oWUxGbC7F7gqMufHUqo(ET8QCRhegowewGhoL9eI6NhFLMqTfAECc0G5yxP3HC)6vL4(x9cY8PNVclD)kMScT9lggo8Bl2MhRvEwZ4ykTmbF02dh)YrKUfg9JKnOeBhECfhUpGKbj9gkQPdsNtOA3ha3l6b67EvWVNRBA)ptW3kv1XWsDqC2(Zhqf1X3GhvMHBptpz1jg3BD1pLT5(tiWqF)2ExtKOg972UTjEpEMXQLeIPWth9cbnoY4jez5PuS4OLiy9v18smH9GISpQWQdtOAwb)HReCBLuOIdH8rn0ZTaR87X2IiHVBWoQxTFZMti2avtSfPkIbzKJzzkcjvhEacBUmMBjMDSWH1iWiP6rjDESGxMundsfOYIJuqLr8Wkcd4CqAlPY26muc1ynHS4aXe3TuvoiQZOco6XkuaPaJ1yqt18rJf7slXKYLmfLvoG7IkPQfjL1qf5sHfyUTY2yw3CfwJZWjuK4ASmeWaXYBGsmTaliKuAXrepr3afcx7qKNWe4t15f7VaGyoSMXkdXHKSwYPYQQfynHG8lnuLIPA1gK2Pcet181svDbsuef7sBQwikrQwiujFHrtv5elDMacZfNX2s(YDyPsvWUOTlFSG)urBiXihPTblp2r2vhmHZZgH3k54P6J4QDFiYTZnmgsywiVZjm0V0Q0sgx70YqPaLUwK4d8TdtXrOWfQrmLQ3yIyJoCtRpSpVUopEWKjiFbMF0bd1hItzrD5UJklml7DdtpreDrY)(N3LTTyf29fTXs6VfDlkrKZsBVPapoUZ4tPSKwdNWmpaKXlGE6GayzT3KZVBCIFk7HIvhd)EsgErScdRkIIGB)LRhO6p(DXe3XgcmHX6d58(RW2D901hnZP(hh9ji1QBYA2xFxAJKeoKUDg(oaloihWwM)MW1DOJ5BH8iGGDDEAJZ)QBdPhN8aCX12LwRL5dbDumiENX3DTSNOLQPAPjTz3GCsib7ymP9Vo1hYugPxc5Al1sje122pj9J3s1uTGq66G9dH4pi9SUBOWaT3rylLWzc3P2Wj9zn2ES1XBPAQw6GjHhQCyAAc)P0Ix)PvZxZOSEas6kvvdriUMZSNfkfsoCccDHxqESu85tGCasf8YKDgym8M)92jKtQpleYO8NhcXz6ZeL0s8kX(MjKtiop2tc6g4Em7jDYCI2aqpp5a3DJ8SWyo(Km2RJq6WbAEoiKq7zNNWboUAkH0fPDD9DBWndXch5X5GR00V9G3mHCAUyQLhegShTUWBMNCsT3FE4lU9mTaHeGolesc51nLO61rj866mLnLzGrvql4MNKGH15XXXr)OnEZeIRFZBn00V6p3w(UWLy7JXFwuTfg7if4FA84dQkXBgOzpSqZImU9NzLzexC4v2jIJA8R7Ymeq1MonTr1KjvQM(NA1pgVRVlw2vm)(fPpXH4Dz0YzoakialvgUTkHt(r1(Z6lDjKi(B54lN75roo60pg8BOC41hSfNEZYL))BOyvch"
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
-38
View File
@@ -6,8 +6,6 @@ assert(LibStub, string.format("%s requires LibStub.", major))
local Data = LibStub:NewLibrary(major, minor)
if( not Data ) then return end
if( IS_WRATH_BUILD == nil ) then IS_WRATH_BUILD = (select(4, GetBuildInfo()) >= 30000) end
-- How long before DR resets
Data.RESET_TIME = 18
@@ -234,42 +232,6 @@ Data.spells = {
[10912] = "charm",
}
-- Add WoTLK spells
if( IS_WRATH_BUILD ) then
-- Death Coil
Data.spells[47859] = "dc"
Data.spells[47860] = "dc"
-- Wyvern Sting
Data.spells[49011] = "sleep"
Data.spells[49012] = "sleep"
-- Entangling Roots
Data.spells[53308] = "root"
-- Frost Nova
Data.spells[42917] = "root"
-- Intercept (Remove all except this one come WoTLK)
Data.spells[20252] = "ctrlstun"
-- Pounce
Data.spells[49803] = "ctrlstun"
-- Polymorph
Data.spells[61305] = "disorient"
Data.spells[61025] = "disorient"
-- Sap
Data.spells[51724] = "disorient"
-- Maim
Data.spells[49802] = "disorient"
-- Hex (Guessing)
Data.spells[51514] = "disorient"
end
-- DR Category names
Data.typeNames = {
["disorient"] = "Disorients",
+77 -11
View File
@@ -59,41 +59,107 @@ Buff({ 33891 }, { buffType = "form"}, "DRUID") -- Tree of Life
Buff({ 16864 }, { buffType = "magic"}, "DRUID") -- Omen of Clarity
Buff({ 16689, 16810, 16811, 16812, 16813, 17329, 27009 }, { buffType = "magic"}, "DRUID") -- Nature's Grasp
Buff({ 45281, 45282, 45283 }, { buffType = "magic"}, "DRUID") -- Natural Perfection
Buff({ 16188 }, { buffType = "magic"}, "DRUID") -- Nature's Swiftness
Buff({ 17116 }, { buffType = "magic"}, "DRUID") -- Nature's Swiftness
Buff({ 17007 }, { buffType = "aura"}, "DRUID") -- Leader of the Pack
-------------
-- WARRIOR
-- WARRIOR -- TODO
-------------
--Buff({ 29703 }, { buffType = "physical"}, "WARRIOR") -- Dazed
Buff({ 29838 }, { buffType = "physical"}, "WARRIOR") -- Second Wind
Buff({ 12292 }, { buffType = "physical"}, "WARRIOR") -- Death Wish
Buff({ 6673 }, { buffType = "physical"}, "WARRIOR") -- Battle Shout
Buff({ 469 }, { buffType = "physical"}, "WARRIOR") -- Commanding Shout
Buff({ 12328 }, { buffType = "physical"}, "WARRIOR") -- Sweeping Strikes
Buff({ 30032 }, { buffType = "physical"}, "WARRIOR") -- Rampage
Buff({ 2687 }, { buffType = "physical"}, "WARRIOR") -- Blood Rage
Buff({ 20230 }, { buffType = "physical"}, "WARRIOR") -- Retaliation
Buff({ 871 }, { buffType = "physical"}, "WARRIOR") -- Shield Wall
Buff({ 18499 }, { buffType = "physical"}, "WARRIOR") -- Berserker Rage
Buff({ 23885 }, { buffType = "physical"}, "WARRIOR") -- Bloodthirst
Buff({ 3411 }, { buffType = "physical"}, "WARRIOR") -- Intervene
--------------
-- ROGUE
-- ROGUE -- TODO
--------------
Buff({ 2983 }, { buffType = "physical" }, "ROGUE") -- Sprint
Buff({ 5277 }, { buffType = "physical" }, "ROGUE") -- Evasion
Buff({ 31224 }, { buffType = "physical" }, "ROGUE") -- Cloak of Shadows
Buff({ 14278 }, { buffType = "physical" }, "ROGUE") -- Ghostly Strike
------------
-- WARLOCK
-- WARLOCK --TODO
------------
Buff({ 19028 }, { buffType = "immune"}, "WARLOCK") -- Soul Link
Buff({ 23759 }, { buffType = "immune"}, "WARLOCK") -- Master Demonologist
Buff({ 19028 }, { buffType = "aura"}, "WARLOCK") -- Soul Link
Buff({ 696 }, { buffType = "aura"}, "WARLOCK") -- Demon Skin
Buff({ 706 }, { buffType = "aura"}, "WARLOCK") -- Demon Armor
Buff({ 28176 }, { buffType = "aura"}, "WARLOCK") -- Fel Armor
Buff({ 23759 }, { buffType = "aura"}, "WARLOCK") -- Master Demonologist
Buff({ 34936 }, { buffType = "magic"}, "WARLOCK") -- Backlash
Buff({ 5697 }, { buffType = "magic"}, "WARLOCK") -- Unending Breath
Buff({ 132 }, { buffType = "magic"}, "WARLOCK") -- Detect Invisibility
Buff({ 1949 }, { buffType = "aura"}, "WARLOCK") -- Hellfire
Buff({ 6229 }, { buffType = "magic"}, "WARLOCK") -- Shadow Ward
Buff({ 19480 }, { buffType = "magic"}, "WARLOCK") -- Paranoia
Buff({ 7812 }, { buffType = "magic"}, "WARLOCK") -- Sacrifice
Buff({ 2947 }, { buffType = "magic"}, "WARLOCK") -- Fire Shield
---------------
-- SHAMAN
---------------
Buff({ 8178 } ,{ buffType = "magic" }, "SHAMAN") -- Grounding Totem Effect
Buff({ 30823 } ,{ buffType = "magic" }, "SHAMAN") -- Shamanistic Rage
Buff({ 32182 } ,{ buffType = "magic" }, "SHAMAN") -- Heroism
Buff({ 2825 } ,{ buffType = "magic" }, "SHAMAN") -- Bloodlust
Buff({ 974 } ,{ buffType = "magic" }, "SHAMAN") -- Earth Shield
Buff({ 24398 } ,{ buffType = "magic" }, "SHAMAN") -- Water Shield
Buff({ 324 } ,{ buffType = "magic" }, "SHAMAN") -- Lightning Shield
Buff({ 16188 } ,{ buffType = "magic" }, "SHAMAN") -- Nature's Swiftness
Buff({ 16166 } ,{ buffType = "magic" }, "SHAMAN") -- Elemental Mastery
--------------
-- PALADIN
-- PALADIN --TODO
--------------
--Buff( { 25771 }, { buffType = "immune"}, "PALADIN") -- Forbearance
--Blessings
Buff( { 1022, 5599, 10278 }, { buffType = "magic"}, "PALADIN") -- Blessing of Protection
Buff( { 6940 }, { buffType = "magic"}, "PALADIN") -- Blessing of Sacrifice
Buff( { 1044 }, { buffType = "magic"}, "PALADIN") -- Blessing of Freedom
Buff( { 19740, 19834, 19835, 19836, 19837, 19838, 25291, 27140 }, { buffType = "magic"}, "PALADIN") -- Blessing of Might
Buff( { 19742 }, { buffType = "magic"}, "PALADIN") -- Blessing of Wisdom
Buff( { 20217 }, { buffType = "magic"}, "PALADIN") -- Blessing of Kings
Buff( { 19977 }, { buffType = "magic"}, "PALADIN") -- Blessing of Light
Buff( { 1038 }, { buffType = "magic"}, "PALADIN") -- Blessing of Salvation
Buff( { 20911 }, { buffType = "magic"}, "PALADIN") -- Blessing of Sanctuary
Buff( { 25898 }, { buffType = "magic"}, "PALADIN") -- Greater Blessing of Kings
Buff( { 25890 }, { buffType = "magic"}, "PALADIN") -- Greater Blessing of Light
Buff( { 25782 }, { buffType = "magic"}, "PALADIN") -- Greater Blessing of Might
Buff( { 25895 }, { buffType = "magic"}, "PALADIN") -- Greater Blessing of Salvation
Buff( { 25899 }, { buffType = "magic"}, "PALADIN") -- Greater Blessing of Sanctuary
Buff( { 25894 }, { buffType = "magic"}, "PALADIN") -- Greater Blessing of Wisdom
Buff( { 642 }, { buffType = "magic"}, "PALADIN") -- Divine Shield
--Auras
Buff( { 465, 10290, 643, 10291, 1032, 10292, 10293, 27149 }, { buffType = "aura"}, "PALADIN") -- Devotion Aura
Buff( { 7294 }, { buffType = "aura"}, "PALADIN") -- Retribution Aura
Buff( { 19746 }, { buffType = "aura"}, "PALADIN") -- Concentration Aura
Buff( { 19876 }, { buffType = "aura"}, "PALADIN") -- Shadow Resistance Aura
Buff( { 20218 }, { buffType = "aura"}, "PALADIN") -- Sanctity Aura
Buff( { 19888 }, { buffType = "aura"}, "PALADIN") -- Frost Resistance Aura
Buff( { 19891 }, { buffType = "aura"}, "PALADIN") -- Fire Resistance Aura
Buff( { 32223 }, { buffType = "aura"}, "PALADIN") -- Crusader Aura
--Seals
Buff( { 20154, 20287, 20288, 20289, 20290, 20291, 20292, 20293, 27155 }, { buffType = "magic"}, "PALADIN") -- Seal of Righteousness
Buff( { 31892 }, { buffType = "magic"}, "PALADIN") -- Seal of Blood
Buff( { 20375 }, { buffType = "magic"}, "PALADIN") -- Seal of Command
Buff( { 20164 }, { buffType = "magic"}, "PALADIN") -- Seal of Justice
Buff( { 20165 }, { buffType = "magic"}, "PALADIN") -- Seal of Light
Buff( { 15277 }, { buffType = "magic"}, "PALADIN") -- Seal of Reckoning
Buff( { 31801 }, { buffType = "magic"}, "PALADIN") -- Seal of Vengeance
Buff( { 20166 }, { buffType = "magic"}, "PALADIN") -- Seal of Wisdom
Buff( { 21082 }, { buffType = "magic"}, "PALADIN") -- Seal of the Crusade
-------------
+12 -1
View File
@@ -1,5 +1,6 @@
local type, ipairs, pairs, tinsert = type, ipairs, pairs, tinsert
local GetSpellInfo = GetSpellInfo
local AURA_TYPE_DEBUFF, AURA_TYPE_BUFF = AURA_TYPE_DEBUFF, AURA_TYPE_BUFF
local LibClassAuras = LibStub:NewLibrary("LibClassAuras-1.0", 1)
LibClassAuras.debuffs = {}
@@ -71,4 +72,14 @@ local function getClassBuffs(class)
end
return classSpells
end
LibClassAuras.GetClassBuffs = getClassBuffs
LibClassAuras.GetClassBuffs = getClassBuffs
local function getSpellNameToId(auraType)
if auraType == AURA_TYPE_DEBUFF then
return LibClassAuras.debuffToId
else
return LibClassAuras.buffToId
end
end
LibClassAuras.GetSpellNameToId = getSpellNameToId
+90 -82
View File
@@ -1,5 +1,5 @@
local select, floor, str_len, tostring, str_sub, str_find = select, math.floor, string.len, tostring, string.sub, string.find
local IsInInstance = IsInInstance
local floor, str_len, tostring, str_sub, str_find = math.floor, string.len, tostring, string.sub, string.find
local CreateFrame = CreateFrame
local Gladdy = LibStub("Gladdy")
local L = Gladdy.L
@@ -8,87 +8,88 @@ local ACDFrame = Gladdy:NewModule("Countdown", nil, {
arenaCountdownSize = 256
})
function ACDFrame:OnEvent(event, ...)
self[event](self, ...)
end
function ACDFrame:Initialize()
self.hidden = false
self.countdown = -1
self.texturePath = "Interface\\AddOns\\Gladdy\\Images\\Countdown\\";
ACDFrame:RegisterEvent("CHAT_MSG_BG_SYSTEM_NEUTRAL")
ACDFrame:RegisterEvent("PLAYER_ENTERING_WORLD")
local ACDNumFrame = CreateFrame("Frame", "ACDNumFrame", UIParent)
ACDNumFrame:EnableMouse(false)
ACDNumFrame:SetHeight(256)
ACDNumFrame:SetWidth(256)
ACDNumFrame:SetPoint("CENTER", 0, 128)
ACDNumFrame:Show()
self.ACDNumFrame = ACDNumFrame
local ACDNumTens = ACDNumFrame:CreateTexture("ACDNumTens", "HIGH")
ACDNumTens:SetWidth(256)
ACDNumTens:SetHeight(128)
ACDNumTens:SetPoint("CENTER", ACDNumFrame, "CENTER", -48, 0)
self.ACDNumTens = ACDNumTens
local ACDNumOnes = ACDNumFrame:CreateTexture("ACDNumOnes", "HIGH")
ACDNumOnes:SetWidth(256)
ACDNumOnes:SetHeight(128)
ACDNumOnes:SetPoint("CENTER", ACDNumFrame, "CENTER", 48, 0)
self.ACDNumOnes = ACDNumOnes
local ACDNumOne = ACDNumFrame:CreateTexture("ACDNumOne", "HIGH")
ACDNumOne:SetWidth(256)
ACDNumOne:SetHeight(128)
ACDNumOne:SetPoint("CENTER", ACDNumFrame, "CENTER", 0, 0)
self.ACDNumOne = ACDNumOne
self:RegisterMessage("JOINED_ARENA")
end
function ACDFrame:OnEvent(event, ...)
-- functions created in "object:method"-style have an implicit first parameter of "self", which points to object
self[event](self, ...) -- route event parameters to LoseControl:event methods
end
ACDFrame:SetScript("OnEvent", ACDFrame.OnEvent)
function ACDFrame.OnUpdate(self, elapse)
if (self.countdown > 0 and Gladdy.db.countdown) then
self.hidden = false;
if ((floor(self.countdown) ~= floor(self.countdown - elapse)) and (floor(self.countdown - elapse) >= 0)) then
local str = tostring(floor(self.countdown - elapse));
local ACDNumFrame = CreateFrame("Frame", "ACDNumFrame", UIParent)
ACDNumFrame:SetHeight(256)
ACDNumFrame:SetWidth(256)
ACDNumFrame:SetPoint("CENTER", 0, 128)
ACDNumFrame:Show()
if (floor(self.countdown - elapse) == 0) then
self.ACDNumTens:Hide();
self.ACDNumOnes:Hide();
self.ACDNumOne:Hide();
elseif (str_len(str) == 2) then
-- Display has 2 digits
self.ACDNumOne:Hide();
self.ACDNumTens:Show();
self.ACDNumOnes:Show();
local ACDNumTens = ACDNumFrame:CreateTexture("ACDNumTens", "HIGH")
ACDNumTens:SetWidth(256)
ACDNumTens:SetHeight(128)
ACDNumTens:SetPoint("CENTER", ACDNumFrame, "CENTER", -48, 0)
local ACDNumOnes = ACDNumFrame:CreateTexture("ACDNumOnes", "HIGH")
ACDNumOnes:SetWidth(256)
ACDNumOnes:SetHeight(128)
ACDNumOnes:SetPoint("CENTER", ACDNumFrame, "CENTER", 48, 0)
local ACDNumOne = ACDNumFrame:CreateTexture("ACDNumOne", "HIGH")
ACDNumOne:SetWidth(256)
ACDNumOne:SetHeight(128)
ACDNumOne:SetPoint("CENTER", ACDNumFrame, "CENTER", 0, 0)
function ACDFrame:PLAYER_ENTERING_WORLD()
local instanceType = select(2, IsInInstance())
if (( instanceType == "arena" )) then
ACDFrame:SetScript("OnUpdate", function(self, elapse)
if (self.countdown > 0 and Gladdy.db.countdown) then
self.hidden = false;
if ((floor(self.countdown) ~= floor(self.countdown - elapse)) and (floor(self.countdown - elapse) >= 0)) then
local str = tostring(floor(self.countdown - elapse));
if (floor(self.countdown - elapse) == 0) then
ACDNumTens:Hide();
ACDNumOnes:Hide();
ACDNumOne:Hide();
elseif (str_len(str) == 2) then
-- Display has 2 digits
ACDNumOne:Hide();
ACDNumTens:Show();
ACDNumOnes:Show();
ACDNumTens:SetTexture(self.texturePath .. str_sub(str, 0, 1));
ACDNumOnes:SetTexture(self.texturePath .. str_sub(str, 2, 2));
ACDNumFrame:SetScale(0.7)
elseif (str_len(str) == 1) then
-- Display has 1 digit
ACDNumOne:Show();
ACDNumOne:SetTexture(self.texturePath .. str_sub(str, 0, 1));
ACDNumOnes:Hide();
ACDNumTens:Hide();
ACDNumFrame:SetScale(1.0)
end
end
self.countdown = self.countdown - elapse;
else
self.hidden = true;
ACDNumTens:Hide();
ACDNumOnes:Hide();
ACDNumOne:Hide();
self.ACDNumTens:SetTexture(self.texturePath .. str_sub(str, 0, 1));
self.ACDNumOnes:SetTexture(self.texturePath .. str_sub(str, 2, 2));
self.ACDNumFrame:SetScale(0.7)
elseif (str_len(str) == 1) then
-- Display has 1 digit
self.ACDNumOne:Show();
self.ACDNumOne:SetTexture(self.texturePath .. str_sub(str, 0, 1));
self.ACDNumOnes:Hide();
self.ACDNumTens:Hide();
self.ACDNumFrame:SetScale(1.0)
end
end)
end
self.countdown = self.countdown - elapse;
else
self.hidden = true;
self.ACDNumTens:Hide();
self.ACDNumOnes:Hide();
self.ACDNumOne:Hide();
end
end
function ACDFrame:JOINED_ARENA()
self:RegisterEvent("CHAT_MSG_BG_SYSTEM_NEUTRAL")
self:SetScript("OnEvent", ACDFrame.OnEvent)
self:SetScript("OnUpdate", ACDFrame.OnUpdate)
end
function ACDFrame:CHAT_MSG_BG_SYSTEM_NEUTRAL(msg)
if (str_find(msg, "L'ar\195\168ne ouvre ses portes dans 60 secondes !")) then
self.countdown = 61
@@ -129,29 +130,36 @@ function ACDFrame:CHAT_MSG_BG_SYSTEM_NEUTRAL(msg)
end
function ACDFrame:UpdateFrame()
ACDNumFrame:SetHeight(Gladdy.db.arenaCountdownSize)
ACDNumFrame:SetWidth(Gladdy.db.arenaCountdownSize)
ACDNumFrame:SetPoint("CENTER", 0, 128)
self.ACDNumFrame:SetHeight(Gladdy.db.arenaCountdownSize)
self.ACDNumFrame:SetWidth(Gladdy.db.arenaCountdownSize)
self.ACDNumFrame:SetPoint("CENTER", 0, 128)
ACDNumTens:SetWidth(Gladdy.db.arenaCountdownSize)
ACDNumTens:SetHeight(Gladdy.db.arenaCountdownSize/2)
ACDNumTens:SetPoint("CENTER", ACDNumFrame, "CENTER", -(Gladdy.db.arenaCountdownSize/8 + Gladdy.db.arenaCountdownSize/8/2), 0)
self.ACDNumTens:SetWidth(Gladdy.db.arenaCountdownSize)
self.ACDNumTens:SetHeight(Gladdy.db.arenaCountdownSize/2)
self.ACDNumTens:SetPoint("CENTER", self.ACDNumFrame, "CENTER", -(Gladdy.db.arenaCountdownSize/8 + Gladdy.db.arenaCountdownSize/8/2), 0)
ACDNumOnes:SetWidth(Gladdy.db.arenaCountdownSize)
ACDNumOnes:SetHeight(Gladdy.db.arenaCountdownSize/2)
ACDNumOnes:SetPoint("CENTER", ACDNumFrame, "CENTER", (Gladdy.db.arenaCountdownSize/8 + Gladdy.db.arenaCountdownSize/8/2), 0)
self.ACDNumOnes:SetWidth(Gladdy.db.arenaCountdownSize)
self.ACDNumOnes:SetHeight(Gladdy.db.arenaCountdownSize/2)
self.ACDNumOnes:SetPoint("CENTER", self.ACDNumFrame, "CENTER", (Gladdy.db.arenaCountdownSize/8 + Gladdy.db.arenaCountdownSize/8/2), 0)
ACDNumOne:SetWidth(Gladdy.db.arenaCountdownSize)
ACDNumOne:SetHeight(Gladdy.db.arenaCountdownSize/2)
ACDNumOne:SetPoint("CENTER", ACDNumFrame, "CENTER", 0, 0)
self.ACDNumOne:SetWidth(Gladdy.db.arenaCountdownSize)
self.ACDNumOne:SetHeight(Gladdy.db.arenaCountdownSize/2)
self.ACDNumOne:SetPoint("CENTER", self.ACDNumFrame, "CENTER", 0, 0)
end
function ACDFrame:Test()
self.countdown = 30
self:JOINED_ARENA()
end
function ACDFrame:Reset()
self.countdown = 0
self:UnregisterEvent("CHAT_MSG_BG_SYSTEM_NEUTRAL")
self:SetScript("OnUpdate", nil)
self.hidden = true;
self.ACDNumTens:Hide();
self.ACDNumOnes:Hide();
self.ACDNumOne:Hide();
end
function ACDFrame:GetOptions()
+29 -26
View File
@@ -1,4 +1,4 @@
local pairs, ipairs, select, tinsert, tbl_sort = pairs, ipairs, select, tinsert, table.sort
local pairs, ipairs, select, tinsert, tbl_sort, tostring = pairs, ipairs, select, tinsert, table.sort, tostring
local GetSpellInfo = GetSpellInfo
local CreateFrame, GetTime = CreateFrame, GetTime
@@ -10,9 +10,9 @@ local function defaultSpells(auraType)
local spells = {}
for k,v in pairs(Gladdy:GetImportantAuras()) do
if not auraType or auraType == v.track then
spells[k] = {}
spells[k].enabled = true
spells[k].priority = v.priority
spells[tostring(v.spellID)] = {}
spells[tostring(v.spellID)].enabled = true
spells[tostring(v.spellID)].priority = v.priority
end
end
return spells
@@ -42,6 +42,7 @@ end
function Auras:CreateFrame(unit)
local auraFrame = CreateFrame("Frame", nil, Gladdy.modules.Classicon.frames[unit])
auraFrame:EnableMouse(false)
auraFrame:SetFrameStrata("MEDIUM")
auraFrame:SetFrameLevel(3)
@@ -59,6 +60,7 @@ function Auras:CreateFrame(unit)
auraFrame.cooldownFrame:SetFrameLevel(5)
auraFrame.icon = auraFrame:CreateTexture(nil, "BACKGROUND")
auraFrame.icon:SetMask("Interface\\AddOns\\Gladdy\\Images\\mask")
auraFrame.icon:SetAllPoints(auraFrame)
auraFrame.icon.overlay = auraFrame.cooldownFrame:CreateTexture(nil, "OVERLAY")
@@ -74,7 +76,7 @@ function Auras:CreateFrame(unit)
Auras:AURA_FADE(unit)
else
self.timeLeft = self.timeLeft - elapsed
self.text:SetFormattedText("%.1f", self.timeLeft)
self.text:SetFormattedText("%.1f", self.timeLeft >= 0.0 and self.timeLeft or 0.0)
end
end
end)
@@ -136,16 +138,13 @@ function Auras:Test(unit)
if (unit == "arena1") then
aura, _, icon = GetSpellInfo(12826)
elseif (unit == "arena4") then
self:AURA_GAIN(unit,nil, 12826, aura, icon, self.auras[aura].duration, GetTime() + self.auras[aura].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)
elseif (unit == "arena3") then
aura, _, icon = GetSpellInfo(31224)
end
if (aura) then
--(unit, auraType, spellID, aura, icon, duration, expirationTime, count, debuffType)
self:AURA_GAIN(unit,nil, nil, aura, icon, self.auras[aura].duration, GetTime() + self.auras[aura].duration)
--self:AURA_FADE(unit)
self:AURA_GAIN(unit,nil, 31224, aura, icon, self.auras[aura].duration, GetTime() + self.auras[aura].duration)
end
end
@@ -157,22 +156,26 @@ function Auras:JOINED_ARENA()
end
function Auras:AURA_GAIN(unit, auraType, spellID, aura, icon, duration, expirationTime, count, debuffType)
if not Gladdy.db.auraListDefault[aura] or not Gladdy.db.auraListDefault[aura].enabled then
return
end
local auraFrame = self.frames[unit]
if (not auraFrame) then
return
end
if not self.auras[aura] 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
return
end
if (auraFrame.priority and auraFrame.priority > Gladdy.db.auraListDefault[aura].priority) then
if (auraFrame.priority and auraFrame.priority > Gladdy.db.auraListDefault[tostring(self.auras[aura].spellID)].priority) then
return
end
auraFrame.startTime = expirationTime - duration
auraFrame.endTime = expirationTime
auraFrame.name = aura
auraFrame.timeLeft = expirationTime - GetTime()
auraFrame.priority = Gladdy.db.auraListDefault[aura].priority
auraFrame.priority = Gladdy.db.auraListDefault[tostring(self.auras[aura].spellID)].priority
auraFrame.icon:SetTexture(icon)
auraFrame.track = self.auras[aura].track
auraFrame.active = true
@@ -356,28 +359,28 @@ function Auras:GetAuraOptions(auraType)
local auras = {}
for k,v in pairs(Gladdy:GetImportantAuras()) do
if v.track == auraType then
tinsert(auras, k)
tinsert(auras, v.spellID)
end
end
tbl_sort(auras)
for i,k in ipairs(auras) do
options[k] = {
options[tostring(k)] = {
type = "group",
name = k,
name = GetSpellInfo(k),
order = i+2,
icon = select(3, GetSpellInfo(Gladdy:GetImportantAuras()[k].spellID)),
icon = select(3, GetSpellInfo(k)),
args = {
enabled = {
order = 1,
name = L["Enabled"],
type = "toggle",
image = select(3, GetSpellInfo(Gladdy:GetImportantAuras()[k].spellID)),
image = select(3, GetSpellInfo(k)),
width = "2",
set = function(info, value)
Gladdy.db.auraListDefault[k].enabled = value
Gladdy.db.auraListDefault[tostring(k)].enabled = value
end,
get = function(info)
return Gladdy.db.auraListDefault[k].enabled
return Gladdy.db.auraListDefault[tostring(k)].enabled
end
},
priority = {
@@ -389,10 +392,10 @@ function Auras:GetAuraOptions(auraType)
width = "2",
step = 1,
get = function(info)
return Gladdy.db.auraListDefault[k].priority
return Gladdy.db.auraListDefault[tostring(k)].priority
end,
set = function(info, value)
Gladdy.db.auraListDefault[k].priority = value
Gladdy.db.auraListDefault[tostring(k)].priority = value
end,
}
}
+70 -70
View File
@@ -1,7 +1,7 @@
local GetSpellInfo = GetSpellInfo
local CreateFrame = CreateFrame
local GetTime = GetTime
local select, lower, ceil, tremove, tinsert, pairs, ipairs = select, string.lower, ceil, tremove, tinsert, pairs, ipairs
local select, lower, ceil, tremove, tinsert, pairs, ipairs, tostring = select, string.lower, ceil, tremove, tinsert, pairs, ipairs, tostring
local auraTypeColor = { }
local AURA_TYPE_DEBUFF, AURA_TYPE_BUFF = AURA_TYPE_DEBUFF, AURA_TYPE_BUFF
local auraTypes = {AURA_TYPE_BUFF, AURA_TYPE_DEBUFF}
@@ -21,9 +21,10 @@ auraTypeColor[""] = auraTypeColor["none"]
---------------------------
local Gladdy = LibStub("Gladdy")
local LibClassAuras = LibStub("LibClassAuras-1.0")
local L = Gladdy.L
local defaultTrackedDebuffs = select(2, Gladdy:GetAuras("debuff"))
local defaultTrackedBuffs = select(2, Gladdy:GetAuras("buff"))
local defaultTrackedDebuffs = select(2, Gladdy:GetAuras(AURA_TYPE_DEBUFF))
local defaultTrackedBuffs = select(2, Gladdy:GetAuras(AURA_TYPE_BUFF))
local BuffsDebuffs = Gladdy:NewModule("BuffsDebuffs", nil, {
buffsEnabled = true,
buffsShowAuraDebuffs = false,
@@ -87,6 +88,8 @@ function BuffsDebuffs:Initialize()
self.trackedCC = {}
self.framePool = {}
self:RegisterMessage("JOINED_ARENA")
self:RegisterMessage("UNIT_DESTROYED")
self:RegisterMessage("UNIT_DEATH")
self:RegisterMessage("AURA_FADE")
self:RegisterMessage("AURA_GAIN")
self:RegisterMessage("AURA_GAIN_LIMIT")
@@ -126,6 +129,14 @@ function BuffsDebuffs:ResetUnit(unit)
end
end
function BuffsDebuffs:UNIT_DESTROYED(unit)
BuffsDebuffs:ResetUnit(unit)
end
function BuffsDebuffs:UNIT_DEATH(unit)
BuffsDebuffs:ResetUnit(unit)
end
function BuffsDebuffs:Reset()
for i=1,#self.framePool do
self.framePool[i]:Hide()
@@ -135,18 +146,23 @@ end
function BuffsDebuffs:Test(unit)
if Gladdy.db.buffsEnabled then
if unit == "arena1" or unit == "arena3" then
self:AddOrRefreshAura(unit, 1943, AURA_TYPE_DEBUFF, 10, 10, 1,"physical", select(3, GetSpellInfo(1943)), 1)
self:AddOrRefreshAura(unit, 18647, AURA_TYPE_DEBUFF, 10, 10,1, "immune", select(3, GetSpellInfo(18647)), 2)
self:AddOrRefreshAura(unit, 27218, AURA_TYPE_DEBUFF, 24, 20,1, "curse", select(3, GetSpellInfo(27218)), 3)
self:AddOrRefreshAura(unit, 27216, AURA_TYPE_DEBUFF, 18, 18,1, "magic", select(3, GetSpellInfo(27216)), 4)
self:AddOrRefreshAura(unit, 27189, AURA_TYPE_DEBUFF, 12, 12,5, "poison", select(3, GetSpellInfo(27189)), 5)
self:AddOrRefreshAura(unit, 1, AURA_TYPE_BUFF, 20, 20,5, "magic", select(3, GetSpellInfo(32999)), 1)
self:AddOrRefreshAura(unit, 1, AURA_TYPE_BUFF, 20, 20,5, "magic", select(3, GetSpellInfo(25389)), 2)
BuffsDebuffs:AURA_FADE(unit, AURA_TYPE_DEBUFF)
BuffsDebuffs:AURA_FADE(unit, AURA_TYPE_BUFF)
BuffsDebuffs:AURA_GAIN(unit, AURA_TYPE_DEBUFF, 1943, select(1, GetSpellInfo(1943)), select(3, GetSpellInfo(1943)), 10, GetTime() + 10, 1, "physical")
BuffsDebuffs:AURA_GAIN(unit, AURA_TYPE_DEBUFF, 18647, select(1, GetSpellInfo(18647)), select(3, GetSpellInfo(18647)), 10, GetTime() + 10, 1, "immune")
BuffsDebuffs:AURA_GAIN(unit, AURA_TYPE_DEBUFF, 27218, select(1, GetSpellInfo(27218)), select(3, GetSpellInfo(27218)), 24, GetTime() + 20, 1, "curse")
BuffsDebuffs:AURA_GAIN(unit, AURA_TYPE_DEBUFF, 27216, select(1, GetSpellInfo(27216)), select(3, GetSpellInfo(27216)), 18, GetTime() + 18, 1, "magic")
BuffsDebuffs:AURA_GAIN(unit, AURA_TYPE_DEBUFF, 27189, select(1, GetSpellInfo(27189)), select(3, GetSpellInfo(27189)), 12, GetTime() + 12, 5, "poison")
BuffsDebuffs:AURA_GAIN(unit, AURA_TYPE_BUFF, 33076, select(1, GetSpellInfo(33076)), select(3, GetSpellInfo(33076)), 20, GetTime() + 20, 1, "magic")
BuffsDebuffs:AURA_GAIN(unit, AURA_TYPE_BUFF, 26980, select(1, GetSpellInfo(26980)), select(3, GetSpellInfo(26980)), 20, GetTime() + 20, 5, "magic")
elseif unit == "arena2" then
self:AddOrRefreshAura(unit, 1943, AURA_TYPE_DEBUFF, 10, 10, 1, "physical", select(3, GetSpellInfo(1943)), 1)
self:AddOrRefreshAura(unit, 1, AURA_TYPE_DEBUFF, 20, 20,5, "poison", select(3, GetSpellInfo(1)), 2)
self:AddOrRefreshAura(unit, 1, AURA_TYPE_BUFF, 20, 20,5, "magic", select(3, GetSpellInfo(32999)), 1)
self:AddOrRefreshAura(unit, 1, AURA_TYPE_BUFF, 20, 20,5, "magic", select(3, GetSpellInfo(25389)), 2)
BuffsDebuffs:AURA_FADE(unit, AURA_TYPE_DEBUFF)
BuffsDebuffs:AURA_FADE(unit, AURA_TYPE_BUFF)
BuffsDebuffs:AURA_GAIN(unit, AURA_TYPE_DEBUFF, 1943, select(1, GetSpellInfo(1943)), select(3, GetSpellInfo(1943)), 10, GetTime() + 10, 1, "physical")
BuffsDebuffs:AURA_GAIN(unit, AURA_TYPE_DEBUFF, 1, select(1, GetSpellInfo(1)), select(3, GetSpellInfo(1)), 20, GetTime() + 20, 5, "poison")
BuffsDebuffs:AURA_GAIN(unit, AURA_TYPE_BUFF, 27009, select(1, GetSpellInfo(27009)), select(3, GetSpellInfo(27009)), 20, GetTime() + 15, 1, "magic")
BuffsDebuffs:AURA_GAIN(unit, AURA_TYPE_BUFF, 11426, select(1, GetSpellInfo(11426)), select(3, GetSpellInfo(11426)), 10, GetTime() + 10, 1, "magic")
end
end
end
@@ -186,11 +202,13 @@ function BuffsDebuffs:AURA_GAIN(unit, auraType, spellID, spellName, texture, dur
return
end
local auraFrame = self.frames[unit]
local aura = Gladdy.db.auraListDefault[spellName] and Gladdy.db.auraListDefault[spellName].enabled
local aura = Gladdy:GetImportantAuras()[spellName] and Gladdy.db.auraListDefault[tostring(Gladdy:GetImportantAuras()[spellName].spellID)].enabled
if aura and Gladdy.db.buffsShowAuraDebuffs then
aura = false
end
if not aura and spellID and expirationTime and (Gladdy.db.trackedBuffs[spellName] or Gladdy.db.trackedDebuffs[spellName]) then
local auraNames = LibClassAuras.GetSpellNameToId(auraType)
local spellId = auraNames[spellName] and auraNames[spellName].id[1]
if not aura and spellID and spellId and expirationTime and (Gladdy.db.trackedBuffs[tostring(spellId)] or Gladdy.db.trackedDebuffs[tostring(spellId)]) then
local index
if auraType == AURA_TYPE_DEBUFF then
auraFrame.numDebuffs = auraFrame.numDebuffs + 1
@@ -282,55 +300,22 @@ 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 = horizontalMargin - 1 + Gladdy.db.padding
if (Gladdy.db.trinketPos == "LEFT" and Gladdy.db.trinketEnabled) then
horizontalMargin = horizontalMargin + (Gladdy.db.trinketSize * Gladdy.db.trinketWidthFactor) + Gladdy.db.padding
if (Gladdy.db.classIconPos == "LEFT") then
horizontalMargin = horizontalMargin + (Gladdy.db.classIconSize * Gladdy.db.classIconWidthFactor) + Gladdy.db.padding
end
elseif (Gladdy.db.classIconPos == "LEFT") then
horizontalMargin = horizontalMargin + (Gladdy.db.classIconSize * Gladdy.db.classIconWidthFactor) + Gladdy.db.padding
if (Gladdy.db.trinketPos == "LEFT" and Gladdy.db.trinketEnabled) then
horizontalMargin = horizontalMargin + (Gladdy.db.trinketSize * Gladdy.db.trinketWidthFactor) + Gladdy.db.padding
end
horizontalMargin = Gladdy.db.highlightBorderSize - 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)
else
self.frames[unit].debuffFrame:SetPoint("RIGHT", anchor, "LEFT", -Gladdy.db.padding + Gladdy.db.buffsXOffset, Gladdy.db.buffsYOffset)
end
if (Gladdy.db.drCooldownPos == "LEFT" and Gladdy.db.drEnabled) then
verticalMargin = verticalMargin + Gladdy.db.drIconSize/2 + Gladdy.db.padding/2
end
if (Gladdy.db.castBarPos == "LEFT") then
verticalMargin = verticalMargin -
(((Gladdy.db.castBarHeight < Gladdy.db.castBarIconSize) and Gladdy.db.castBarIconSize
or Gladdy.db.castBarHeight)/2 + Gladdy.db.padding/2)
end
if (Gladdy.db.cooldownYPos == "LEFT" and Gladdy.db.cooldown) then
verticalMargin = verticalMargin + (Gladdy.db.buffsIconSize/2 + Gladdy.db.padding/2)
end
self.frames[unit].debuffFrame:SetPoint("RIGHT", Gladdy.buttons[unit].healthBar, "LEFT", -horizontalMargin + Gladdy.db.buffsXOffset, Gladdy.db.buffsYOffset + verticalMargin)
elseif Gladdy.db.buffsCooldownPos == "RIGHT" then
horizontalMargin = horizontalMargin - 1 + Gladdy.db.padding
if (Gladdy.db.trinketPos == "RIGHT" and Gladdy.db.trinketEnabled) then
horizontalMargin = horizontalMargin + (Gladdy.db.trinketSize * Gladdy.db.trinketWidthFactor) + Gladdy.db.padding
if (Gladdy.db.classIconPos == "RIGHT") then
horizontalMargin = horizontalMargin + (Gladdy.db.classIconSize * Gladdy.db.classIconWidthFactor) + Gladdy.db.padding
end
elseif (Gladdy.db.classIconPos == "RIGHT") then
horizontalMargin = horizontalMargin + (Gladdy.db.classIconSize * Gladdy.db.classIconWidthFactor) + Gladdy.db.padding
if (Gladdy.db.trinketPos == "RIGHT" and Gladdy.db.trinketEnabled) then
horizontalMargin = horizontalMargin + (Gladdy.db.trinketSize * Gladdy.db.trinketWidthFactor) + Gladdy.db.padding
end
local anchor = Gladdy:GetAnchor(unit, "RIGHT")
if anchor == Gladdy.buttons[unit].healthBar then
self.frames[unit].debuffFrame:SetPoint("LEFT", anchor, "RIGHT", horizontalMargin + Gladdy.db.buffsXOffset, Gladdy.db.buffsYOffset)
else
self.frames[unit].debuffFrame:SetPoint("LEFT", anchor, "RIGHT", horizontalMargin + Gladdy.db.buffsXOffset, Gladdy.db.buffsYOffset)
end
if (Gladdy.db.drCooldownPos == "RIGHT" and Gladdy.db.drEnabled) then
verticalMargin = verticalMargin + Gladdy.db.drIconSize/2 + Gladdy.db.padding/2
end
if (Gladdy.db.castBarPos == "RIGHT") then
verticalMargin = verticalMargin -
(((Gladdy.db.castBarHeight < Gladdy.db.castBarIconSize) and Gladdy.db.castBarIconSize
or Gladdy.db.castBarHeight)/2 + Gladdy.db.padding/2)
end
if (Gladdy.db.cooldownYPos == "RIGHT" and Gladdy.db.cooldown) then
verticalMargin = verticalMargin + (Gladdy.db.buffsIconSize/2 + Gladdy.db.padding/2)
end
self.frames[unit].debuffFrame:SetPoint("LEFT", Gladdy.buttons[unit].healthBar, "RIGHT", horizontalMargin + Gladdy.db.buffsXOffset, Gladdy.db.buffsYOffset + verticalMargin)
end
self.frames[unit].buffFrame:SetHeight(Gladdy.db.buffsBuffsIconSize)
@@ -381,7 +366,16 @@ function BuffsDebuffs:UpdateFrame(unit)
if (Gladdy.db.cooldownYPos == "LEFT" and Gladdy.db.cooldown) then
verticalMargin = verticalMargin + (Gladdy.db.buffsBuffsIconSize/2 + Gladdy.db.padding/2)
end
self.frames[unit].buffFrame:SetPoint("RIGHT", Gladdy.buttons[unit].healthBar, "LEFT", -horizontalMargin + Gladdy.db.buffsBuffsXOffset, Gladdy.db.buffsBuffsYOffset + verticalMargin)
--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
if anchor == Gladdy.buttons[unit].healthBar then
self.frames[unit].buffFrame:SetPoint("RIGHT", anchor, "LEFT", -horizontalMargin + Gladdy.db.buffsBuffsXOffset, Gladdy.db.buffsBuffsYOffset)
else
self.frames[unit].buffFrame:SetPoint("RIGHT", anchor, "LEFT", -Gladdy.db.padding + Gladdy.db.buffsBuffsXOffset, Gladdy.db.buffsBuffsYOffset)
end
elseif Gladdy.db.buffsBuffsCooldownPos == "RIGHT" then
horizontalMargin = horizontalMargin - 1 + Gladdy.db.padding
if (Gladdy.db.trinketPos == "RIGHT" and Gladdy.db.trinketEnabled) then
@@ -406,7 +400,15 @@ function BuffsDebuffs:UpdateFrame(unit)
if (Gladdy.db.cooldownYPos == "RIGHT" and Gladdy.db.cooldown) then
verticalMargin = verticalMargin + (Gladdy.db.buffsBuffsIconSize/2 + Gladdy.db.padding/2)
end
self.frames[unit].buffFrame:SetPoint("LEFT", Gladdy.buttons[unit].healthBar, "RIGHT", horizontalMargin + Gladdy.db.buffsBuffsXOffset, Gladdy.db.buffsBuffsYOffset + verticalMargin)
--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
if anchor == Gladdy.buttons[unit].healthBar then
self.frames[unit].buffFrame:SetPoint("LEFT", anchor, "RIGHT", horizontalMargin + Gladdy.db.buffsBuffsXOffset, Gladdy.db.buffsBuffsYOffset)
else
self.frames[unit].buffFrame:SetPoint("LEFT", anchor, "RIGHT", Gladdy.db.padding + Gladdy.db.buffsBuffsXOffset, Gladdy.db.buffsBuffsYOffset)
end
end
for i=1, #self.frames[unit].auras[AURA_TYPE_BUFF] do
styleIcon(self.frames[unit].auras[AURA_TYPE_BUFF][i], AURA_TYPE_BUFF)
@@ -465,10 +467,6 @@ function BuffsDebuffs:UpdateAurasOnUnit(unit)
end
end
function BuffsDebuffs:UNIT_DEATH(destUnit)
self:RemoveAuras(destUnit)
end
local function iconTimer(auraFrame, elapsed)
if auraFrame.endtime ~= "undefined" then
local timeLeftMilliSec = auraFrame.endtime - GetTime()
@@ -490,7 +488,7 @@ local function iconTimer(auraFrame, elapsed)
auraFrame.cooldown:SetFormattedText("%d", timeLeftSec)
elseif timeLeftMilliSec <= 3 and timeLeftMilliSec > 0 then
if Gladdy.db.buffsDynamicColor then auraFrame.cooldown:SetTextColor(1, 0, 0) end
auraFrame.cooldown:SetFormattedText("%.1f", timeLeftMilliSec)
auraFrame.cooldown:SetFormattedText("%.1f", timeLeftMilliSec >= 0.0 and timeLeftMilliSec or 0.0)
elseif timeLeftMilliSec <= 0 and timeLeftMilliSec > -0.05 then -- 50ms ping max wait for SPELL_AURA_REMOVED event
auraFrame.cooldown:SetText("")
else -- fallback in case SPELL_AURA_REMOVED is not fired
@@ -508,8 +506,10 @@ function BuffsDebuffs:AddAura(unit, spellID, auraType, duration, timeLeft, stack
aura = tremove(self.framePool, #self.framePool)
else
aura = CreateFrame("Frame")
aura:EnableMouse(false)
aura:SetFrameLevel(3)
aura.texture = aura:CreateTexture(nil, "BACKGROUND")
aura.texture:SetMask("Interface\\AddOns\\Gladdy\\Images\\mask")
aura.texture:SetAllPoints(aura)
aura.cooldowncircle = CreateFrame("Cooldown", nil, aura, "CooldownFrameTemplate")
aura.cooldowncircle:SetFrameLevel(4)
@@ -1027,7 +1027,7 @@ function BuffsDebuffs:GetOptions()
type = "group",
order = 11,
childGroups = "tree",
args = select(1, Gladdy:GetAuras("debuff")),
args = select(1, Gladdy:GetAuras(AURA_TYPE_DEBUFF)),
set = function(info, state)
local optionKey = info[#info]
Gladdy.dbi.profile.trackedDebuffs[optionKey] = state
@@ -1042,7 +1042,7 @@ function BuffsDebuffs:GetOptions()
type = "group",
order = 12,
childGroups = "tree",
args = select(1, Gladdy:GetAuras("buffs")),
args = select(1, Gladdy:GetAuras(AURA_TYPE_BUFF)),
set = function(info, state)
local optionKey = info[#info]
Gladdy.dbi.profile.trackedBuffs[optionKey] = state
+13 -42
View File
@@ -57,6 +57,7 @@ end
function Castbar:CreateFrame(unit)
local castBar = CreateFrame("Frame", nil, Gladdy.buttons[unit], BackdropTemplateMixin and "BackdropTemplate")
castBar:EnableMouse(false)
castBar.unit = unit
castBar:SetBackdrop({ edgeFile = Gladdy.LSM:Fetch("border", Gladdy.db.castBarBorderStyle),
@@ -85,6 +86,7 @@ function Castbar:CreateFrame(unit)
castBar.icon = CreateFrame("Frame", nil, castBar)
castBar.icon.texture = castBar.icon:CreateTexture(nil, "BACKGROUND")
castBar.icon.texture:SetMask("Interface\\AddOns\\Gladdy\\Images\\mask")
castBar.icon.texture:SetAllPoints(castBar.icon)
castBar.icon.texture.overlay = castBar.icon:CreateTexture(nil, "BORDER")
castBar.icon.texture.overlay:SetAllPoints(castBar.icon.texture)
@@ -164,52 +166,21 @@ function Castbar:UpdateFrame(unit)
castBar:ClearAllPoints()
local horizontalMargin = Gladdy.db.highlightBorderSize + Gladdy.db.padding
local verticalMargin = -(Gladdy.db.powerBarHeight)/2
if (Gladdy.db.castBarPos == "LEFT") then
if (Gladdy.db.trinketPos == "LEFT" and Gladdy.db.trinketEnabled) then
horizontalMargin = horizontalMargin + (Gladdy.db.trinketSize * Gladdy.db.trinketWidthFactor) + Gladdy.db.padding
if (Gladdy.db.classIconPos == "LEFT") then
horizontalMargin = horizontalMargin + (Gladdy.db.classIconSize * Gladdy.db.classIconWidthFactor) + Gladdy.db.padding
end
elseif (Gladdy.db.classIconPos == "LEFT") then
horizontalMargin = horizontalMargin + (Gladdy.db.classIconSize * Gladdy.db.classIconWidthFactor) + Gladdy.db.padding
if (Gladdy.db.trinketPos == "LEFT" and Gladdy.db.trinketEnabled) then
horizontalMargin = horizontalMargin + (Gladdy.db.trinketSize * Gladdy.db.trinketWidthFactor) + Gladdy.db.padding
end
local anchor = Gladdy:GetAnchor(unit, "LEFT")
if anchor == Gladdy.buttons[unit].healthBar then
castBar:SetPoint("RIGHT", anchor, "LEFT", -horizontalMargin - leftMargin + Gladdy.db.castBarXOffset, Gladdy.db.castBarYOffset)
else
castBar:SetPoint("RIGHT", anchor, "LEFT", -Gladdy.db.padding - leftMargin + Gladdy.db.castBarXOffset, Gladdy.db.castBarYOffset)
end
if (Gladdy.db.cooldownYPos == "LEFT" and Gladdy.db.cooldown) then
verticalMargin = verticalMargin + (Gladdy.db.cooldownSize/2 + Gladdy.db.padding/2)
end
if (Gladdy.db.drCooldownPos == "LEFT" and Gladdy.db.drEnabled) then
verticalMargin = verticalMargin + (Gladdy.db.drIconSize/2 + Gladdy.db.padding/2)
end
if (Gladdy.db.buffsCooldownPos == "LEFT" and Gladdy.db.buffsEnabled) then
verticalMargin = verticalMargin + Gladdy.db.buffsIconSize/2 + Gladdy.db.padding/2
end
castBar:SetPoint("RIGHT", button.healthBar, "LEFT", -horizontalMargin - leftMargin + Gladdy.db.castBarXOffset, Gladdy.db.castBarYOffset + verticalMargin)
end
if (Gladdy.db.castBarPos == "RIGHT") then
if (Gladdy.db.trinketPos == "RIGHT" and Gladdy.db.trinketEnabled) then
horizontalMargin = horizontalMargin + (Gladdy.db.trinketSize * Gladdy.db.trinketWidthFactor) + Gladdy.db.padding
if (Gladdy.db.classIconPos == "RIGHT") then
horizontalMargin = horizontalMargin + (Gladdy.db.classIconSize * Gladdy.db.classIconWidthFactor) + Gladdy.db.padding
end
elseif (Gladdy.db.classIconPos == "RIGHT") then
horizontalMargin = horizontalMargin + (Gladdy.db.classIconSize * Gladdy.db.classIconWidthFactor) + Gladdy.db.padding
if (Gladdy.db.trinketPos == "LEFT" and Gladdy.db.trinketEnabled) then
horizontalMargin = horizontalMargin + (Gladdy.db.trinketSize * Gladdy.db.trinketWidthFactor) + Gladdy.db.padding
end
local anchor = Gladdy:GetAnchor(unit, "RIGHT")
if anchor == Gladdy.buttons[unit].healthBar then
castBar:SetPoint("LEFT", anchor, "RIGHT", horizontalMargin + rightMargin + Gladdy.db.castBarXOffset, Gladdy.db.castBarYOffset)
else
castBar:SetPoint("LEFT", anchor, "RIGHT", Gladdy.db.padding + rightMargin + Gladdy.db.castBarXOffset, Gladdy.db.castBarYOffset)
end
if (Gladdy.db.cooldownYPos == "RIGHT" and Gladdy.db.cooldown) then
verticalMargin = verticalMargin + (Gladdy.db.cooldownSize/2 + Gladdy.db.padding/2)
end
if (Gladdy.db.drCooldownPos == "RIGHT" and Gladdy.db.drEnabled) then
verticalMargin = verticalMargin + (Gladdy.db.drIconSize/2 + Gladdy.db.padding/2)
end
if (Gladdy.db.buffsCooldownPos == "RIGHT" and Gladdy.db.buffsEnabled) then
verticalMargin = verticalMargin + Gladdy.db.buffsIconSize/2 + Gladdy.db.padding/2
end
castBar:SetPoint("LEFT", button.healthBar, "RIGHT", horizontalMargin + rightMargin + Gladdy.db.castBarXOffset, Gladdy.db.castBarYOffset + verticalMargin)
end
castBar.spellText:SetFont(Gladdy.LSM:Fetch("font", Gladdy.db.auraFont), Gladdy.db.castBarFontSize)
@@ -515,7 +486,7 @@ function Castbar:Test(unit)
if (unit == "arena2") then
spell, _, icon = GetSpellInfo(27072)
value, maxValue, event = 0, 2, "cast"
value, maxValue, event = 0, 40, "cast"
elseif (unit == "arena1") then
spell, _, icon = GetSpellInfo(27220)
endTime = GetTime() * 1000 + 60*1000
+108 -36
View File
@@ -1,5 +1,8 @@
local select = select
local Gladdy = LibStub("Gladdy")
local CreateFrame = CreateFrame
local GetSpellInfo = GetSpellInfo
local L = Gladdy.L
local Classicon = Gladdy:NewModule("Classicon", 80, {
classIconPos = "LEFT",
@@ -7,21 +10,87 @@ local Classicon = Gladdy:NewModule("Classicon", 80, {
classIconWidthFactor = 0.9,
classIconBorderStyle = "Interface\\AddOns\\Gladdy\\Images\\Border_rounded_blp",
classIconBorderColor = { r = 0, g = 0, b = 0, a = 1 },
classIconSpecIcon = false,
})
local classIconPath = "Interface\\Addons\\Gladdy\\Images\\Classes\\"
local classIcons = {
["DRUID"] = classIconPath .. "inv_misc_monsterclaw_04",
["HUNTER"] = classIconPath .. "inv_weapon_bow_07",
["MAGE"] = classIconPath .. "inv_staff_13",
["PALADIN"] = classIconPath .. "inv_hammer_01",
["PRIEST"] = classIconPath .. "inv_staff_30",
["ROGUE"] = classIconPath .. "inv_throwingknife_04",
["SHAMAN"] = classIconPath .. "inv_jewelry_talisman_04",
["WARLOCK"] = classIconPath .. "spell_nature_drowsy",
["WARRIOR"] = classIconPath .. "inv_sword_27",
}
local specIcons = {
--DRUID
["DRUID"] = {
[L["Balance"]] = select(3, GetSpellInfo(8921)), -- Moonfire
[L["Feral"]] = select(3, GetSpellInfo(27545)), -- Cat Form
[L["Restoration"]] = select(3, GetSpellInfo(5185)), -- Healing Touch
},
["HUNTER"] = {
[L["Beast Mastery"]] = select(3, GetSpellInfo(1515)), -- Tame Beast
[L["Marksmanship"]] = select(3, GetSpellInfo(42243)), -- Volley
[L["Survival"]] = select(3, GetSpellInfo(1495)), -- Mongoose Bite
},
["MAGE"] = {
[L["Arcane"]] = select(3, GetSpellInfo(1459)), -- Arcane Intellect
[L["Fire"]] = select(3, GetSpellInfo(133)), -- Fireball
[L["Frost"]] = select(3, GetSpellInfo(116)), -- Frostbolt
},
["PALADIN"] = {
[L["Holy"]] = select(3, GetSpellInfo(635)), -- Holy Light
[L["Retribution"]] = select(3, GetSpellInfo(7294)), -- Retribution Aura
[L["Protection"]] = select(3, GetSpellInfo(32828)), -- Protection Aura
},
["PRIEST"] = {
[L["Discipline"]] = select(3, GetSpellInfo(1243)), -- Power Word: Fortitude
[L["Shadow"]] = select(3, GetSpellInfo(589)), -- Shadow Word: Pain
[L["Holy"]] = select(3, GetSpellInfo(635)), -- Holy Light
},
["ROGUE"] = {
[L["Assassination"]] = select(3, GetSpellInfo(1329)), -- Mutilate (Eviscerate? 2098)
[L["Combat"]] = select(3, GetSpellInfo(53)), -- Backstab
[L["Subtlety"]] = select(3, GetSpellInfo(1784)), -- Stealth
},
["SHAMAN"] = {
[L["Elemental"]] = select(3, GetSpellInfo(403)), -- Lightning Bolt
[L["Enhancement"]] = select(3, GetSpellInfo(324)), -- Lightning Shield
[L["Restoration"]] = select(3, GetSpellInfo(331)), -- Healing Wave
},
["WARLOCK"] = {
[L["Affliction"]] = select(3, GetSpellInfo(6789)), -- Affliction
[L["Demonology"]] = select(3, GetSpellInfo(5500)), -- Sense Demons
[L["Destruction"]] = select(3, GetSpellInfo(5740)), -- Rain of Fire
},
["WARRIOR"] = {
[L["Arms"]] = select(3, GetSpellInfo(12294)), -- Mortal Strike
[L["Fury"]] = select(3, GetSpellInfo(12325)), -- Inner Rage
[L["Protection"]] = select(3, GetSpellInfo(71)), -- Defensive Stance
},
}
function Classicon:Initialize()
self.frames = {}
self:RegisterMessage("ENEMY_SPOTTED")
self:RegisterMessage("UNIT_DEATH")
self:RegisterMessage("UNIT_SPEC")
end
function Classicon:CreateFrame(unit)
local classIcon = CreateFrame("Frame", nil, Gladdy.buttons[unit])
classIcon:EnableMouse(false)
classIcon:SetFrameStrata("MEDIUM")
classIcon:SetFrameLevel(1)
classIcon.texture = classIcon:CreateTexture(nil, "BACKGROUND")
classIcon.texture:SetAllPoints(classIcon)
classIcon.texture:SetMask("Interface\\AddOns\\Gladdy\\Images\\mask")
classIcon.texture.overlay = classIcon:CreateTexture(nil, "BORDER")
classIcon.texture.overlay:SetAllPoints(classIcon)
@@ -65,6 +134,25 @@ function Classicon:UpdateFrame(unit)
classIcon.texture.overlay:SetVertexColor(Gladdy.db.classIconBorderColor.r, Gladdy.db.classIconBorderColor.g, Gladdy.db.classIconBorderColor.b, Gladdy.db.classIconBorderColor.a)
end
function Classicon:ENEMY_SPOTTED(unit)
local classIcon = self.frames[unit]
if (not classIcon) then
return
end
classIcon.texture:SetTexture(classIcons[Gladdy.buttons[unit].class])
--classIcon.texture:SetTexCoord(unpack(CLASS_BUTTONS[Gladdy.buttons[unit].class]))
classIcon.texture:SetAllPoints(classIcon)
end
function Classicon:UNIT_SPEC(unit, spec)
local classIcon = self.frames[unit]
if (not Gladdy.db.classIconSpecIcon or not classIcon) then
return
end
classIcon.texture:SetTexture(specIcons[Gladdy.buttons[unit].class][spec])
end
function Classicon:Test(unit)
self:ENEMY_SPOTTED(unit)
end
@@ -85,11 +173,30 @@ function Classicon:GetOptions()
name = L["Class Icon"],
order = 2,
},
classIconSpecIcon = {
type = "toggle",
name = L["Show Spec Icon"],
desc = L["Shows Spec Icon once spec is detected"],
order = 3,
get = function(info) return Gladdy.db.classIconSpecIcon end,
set = function(info, value)
Gladdy.db.classIconSpecIcon = value
if Gladdy.curBracket and Gladdy.curBracket > 0 then
for i=1,Gladdy.curBracket do
local unit = "arena" .. i
if (Gladdy.buttons[unit] and Gladdy.buttons[unit].spec) then
self:ENEMY_SPOTTED(unit)
self:UNIT_SPEC(unit, Gladdy.buttons[unit].spec)
end
end
end
end
},
group = {
type = "group",
childGroups = "tree",
name = "Frame",
order = 3,
order = 4,
args = {
size = {
type = "group",
@@ -164,39 +271,4 @@ function Classicon:GetOptions()
},
},
}
end
local function getClassIcon(class)
-- see https://wow.gamepedia.com/Class_icon
local classIcon = "Interface\\Addons\\Gladdy\\Images\\Classes\\"
if class == "DRUID" then
return classIcon .. "inv_misc_monsterclaw_04"
elseif class == "HUNTER" then
return classIcon .. "inv_weapon_bow_07"
elseif class == "MAGE" then
return classIcon .. "inv_staff_13"
elseif class == "PALADIN" then
return classIcon .. "inv_hammer_01"
elseif class == "PRIEST" then
return classIcon .. "inv_staff_30"
elseif class == "ROGUE" then
return classIcon .. "inv_throwingknife_04"
elseif class == "SHAMAN" then
return classIcon .. "inv_jewelry_talisman_04"
elseif class == "WARLOCK" then
return classIcon .. "spell_nature_drowsy"
elseif class == "WARRIOR" then
return classIcon .. "inv_sword_27"
end
end
function Classicon:ENEMY_SPOTTED(unit)
local classIcon = self.frames[unit]
if (not classIcon) then
return
end
classIcon.texture:SetTexture(getClassIcon(Gladdy.buttons[unit].class))
--classIcon.texture:SetTexCoord(unpack(CLASS_BUTTONS[Gladdy.buttons[unit].class]))
classIcon.texture:SetAllPoints(classIcon)
end
+242
View File
@@ -0,0 +1,242 @@
local select = select
local UnitExists, UnitAffectingCombat, GetSpellInfo = UnitExists, UnitAffectingCombat, GetSpellInfo
local CreateFrame = CreateFrame
local ANCHORS = { ["LEFT"] = "RIGHT", ["RIGHT"] = "LEFT", ["BOTTOM"] = "TOP", ["TOP"] = "BOTTOM"}
local Gladdy = LibStub("Gladdy")
local L = Gladdy.L
local CombatIndicator = Gladdy:NewModule("CombatIndicator", nil, {
ciEnabled = true,
ciSize = 20,
ciAlpha = 1,
ciWidthFactor = 1,
ciAnchor = "healthBar",
ciPos = "TOP",
ciXOffset = 0,
ciYOffset = -31,
ciBorderStyle = "Interface\\AddOns\\Gladdy\\Images\\Border_rounded_blp",
ciBorderColor = { r = 0, g = 0, b = 0, a = 1 },
})
function CombatIndicator:Initialize()
self.frames = {}
self:RegisterMessage("JOINED_ARENA")
self.updateInterval = 0.05
self.combatIndicatorIcon = select(3, GetSpellInfo(674))
end
function CombatIndicator:JOINED_ARENA()
self:SetScript("OnUpdate", CombatIndicator.OnEvent)
self.lastTimeUpdated = 0
end
function CombatIndicator:CreateFrame(unit)
local button = Gladdy.buttons[unit]
if not button then
return
end
local ciFrame = CreateFrame("Frame", "GladdyCombatindicator" .. unit, button)
ciFrame:EnableMouse(false)
ciFrame:SetFrameStrata("HIGH")
ciFrame:SetHeight(Gladdy.db.ciSize)
ciFrame:SetWidth(Gladdy.db.ciSize * Gladdy.db.ciWidthFactor)
ciFrame.texture = ciFrame:CreateTexture(nil, "OVERLAY")
ciFrame.texture:SetMask("Interface\\AddOns\\Gladdy\\Images\\mask")
ciFrame.texture:SetTexture(self.combatIndicatorIcon)
ciFrame.texture:SetAllPoints(ciFrame)
ciFrame.border = ciFrame:CreateTexture(nil, "OVERLAY")
ciFrame.border:SetAllPoints(ciFrame)
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)
self.frames[unit] = ciFrame
button.ciFrame = ciFrame
end
function CombatIndicator:UpdateFrame(unit)
local button = Gladdy.buttons[unit]
local ciFrame = self.frames[unit]
if (not button or not ciFrame) then
return
end
ciFrame:SetHeight(Gladdy.db.ciSize)
ciFrame:SetWidth(Gladdy.db.ciSize * Gladdy.db.ciWidthFactor)
ciFrame.border:SetVertexColor(Gladdy.db.ciBorderColor.r, Gladdy.db.ciBorderColor.g, Gladdy.db.ciBorderColor.b, Gladdy.db.ciBorderColor.a)
ciFrame:ClearAllPoints()
ciFrame:SetPoint(ANCHORS[Gladdy.db.ciPos], Gladdy.buttons[unit][Gladdy.db.ciAnchor], Gladdy.db.ciPos, Gladdy.db.ciXOffset, Gladdy.db.ciYOffset)
ciFrame:SetAlpha(Gladdy.db.ciAlpha)
if (Gladdy.db.ciEnabled == false) then
ciFrame:Hide()
else
ciFrame:Show()
end
end
function CombatIndicator:Test()
self.test = true
self:JOINED_ARENA()
end
function CombatIndicator:Reset()
self:SetScript("OnUpdate", nil)
self.test = false
end
function CombatIndicator.OnEvent(self, elapsed)
self.lastTimeUpdated = self.lastTimeUpdated + elapsed
if (self.lastTimeUpdated > self.updateInterval) then
for i=1,Gladdy.curBracket do
local unit = "arena" .. i
if CombatIndicator.test or (UnitExists(unit) and UnitAffectingCombat(unit)) then
CombatIndicator.frames[unit]:Show()
else
CombatIndicator.frames[unit]:Hide()
end
end
self.lastTimeUpdated = 0
end
end
function CombatIndicator:GetOptions()
return {
headerTrinket = {
type = "header",
name = L["Racial"],
order = 2,
},
ciEnabled = Gladdy:option({
type = "toggle",
name = L["Enabled"],
desc = L["Enable ci icon"],
order = 3,
}),
group = {
type = "group",
childGroups = "tree",
name = "Frame",
order = 4,
args = {
general = {
type = "group",
name = L["Frame"],
order = 1,
args = {
header = {
type = "header",
name = L["Frame"],
order = 1,
},
ciSize = Gladdy:option({
type = "range",
name = L["Icon size"],
min = 5,
max = 100,
step = 1,
order = 2,
}),
ciWidthFactor = Gladdy:option({
type = "range",
name = L["Icon width factor"],
min = 0.5,
max = 2,
step = 0.05,
order = 3,
}),
ciAlpha = Gladdy:option({
type = "range",
name = L["Alpha"],
min = 0,
max = 1,
step = 0.05,
order = 4,
}),
},
},
position = {
type = "group",
name = L["Position"],
order = 4,
args = {
header = {
type = "header",
name = L["Position"],
order = 4,
},
ciAnchor = Gladdy:option({
type = "select",
name = L["Anchor"],
desc = L["This changes the anchor of the ci icon"],
order = 20,
values = {
["trinket"] = L["Trinket"],
["classIcon"] = L["Class Icon"],
["healthBar"] = L["Health Bar"],
["powerBar"] = L["Power Bar"],
},
}),
ciPos = Gladdy:option({
type = "select",
name = L["Position"],
desc = L["This changes position relative to its anchor of the ci icon"],
order = 21,
values = {
["LEFT"] = L["Left"],
["RIGHT"] = L["Right"],
["TOP"] = L["Top"],
["BOTTOM"] = L["Bottom"],
},
}),
ciXOffset = Gladdy:option({
type = "range",
name = L["Horizontal offset"],
order = 23,
min = -400,
max = 400,
step = 0.1,
}),
ciYOffset = Gladdy:option({
type = "range",
name = L["Vertical offset"],
order = 24,
min = -400,
max = 400,
step = 0.1,
}),
},
},
border = {
type = "group",
name = L["Border"],
order = 4,
args = {
header = {
type = "header",
name = L["Border"],
order = 4,
},
ciBorderStyle = Gladdy:option({
type = "select",
name = L["Border style"],
order = 31,
values = Gladdy:GetIconStyles()
}),
ciBorderColor = Gladdy:colorOption({
type = "color",
name = L["Border color"],
desc = L["Color of the border"],
order = 32,
hasAlpha = true,
}),
},
},
},
},
}
end
+220 -336
View File
@@ -1,12 +1,54 @@
local type, pairs, ceil, tonumber, mod = type, pairs, ceil, tonumber, mod
local type, pairs, ceil, tonumber, mod, tostring, upper, select = type, pairs, ceil, tonumber, mod, tostring, string.upper, select
local GetTime = GetTime
local CreateFrame = CreateFrame
local RACE_ICON_TCOORDS = {
["HUMAN_MALE"] = {0, 0.125, 0, 0.25},
["DWARF_MALE"] = {0.125, 0.25, 0, 0.25},
["GNOME_MALE"] = {0.25, 0.375, 0, 0.25},
["NIGHTELF_MALE"] = {0.375, 0.5, 0, 0.25},
["TAUREN_MALE"] = {0, 0.125, 0.25, 0.5},
["SCOURGE_MALE"] = {0.125, 0.25, 0.25, 0.5},
["TROLL_MALE"] = {0.25, 0.375, 0.25, 0.5},
["ORC_MALE"] = {0.375, 0.5, 0.25, 0.5},
["HUMAN_FEMALE"] = {0, 0.125, 0.5, 0.75},
["DWARF_FEMALE"] = {0.125, 0.25, 0.5, 0.75},
["GNOME_FEMALE"] = {0.25, 0.375, 0.5, 0.75},
["NIGHTELF_FEMALE"] = {0.375, 0.5, 0.5, 0.75},
["TAUREN_FEMALE"] = {0, 0.125, 0.75, 1.0},
["SCOURGE_FEMALE"] = {0.125, 0.25, 0.75, 1.0},
["TROLL_FEMALE"] = {0.25, 0.375, 0.75, 1.0},
["ORC_FEMALE"] = {0.375, 0.5, 0.75, 1.0},
["BLOODELF_MALE"] = {0.5, 0.625, 0.25, 0.5},
["BLOODELF_FEMALE"] = {0.5, 0.625, 0.75, 1.0},
["DRAENEI_MALE"] = {0.5, 0.625, 0, 0.25},
["DRAENEI_FEMALE"] = {0.5, 0.625, 0.5, 0.75},
}
local GetSpellInfo = GetSpellInfo
local Gladdy = LibStub("Gladdy")
local L = Gladdy.L
local function getDefaultCooldown()
local cooldowns = {}
for class, t in pairs(Gladdy:GetCooldownList()) do
for spellId, v in pairs(t) do
local spellName, _, texture = GetSpellInfo(spellId)
if spellName then
cooldowns[tostring(spellId)] = true
else
Gladdy:Print("spellid does not exist " .. spellId)
end
end
end
return cooldowns
end
local Cooldowns = Gladdy:NewModule("Cooldowns", nil, {
cooldownFont = "DorisPP",
cooldownFontScale = 1,
@@ -23,13 +65,14 @@ local Cooldowns = Gladdy:NewModule("Cooldowns", nil, {
cooldownBorderStyle = "Interface\\AddOns\\Gladdy\\Images\\Border_Gloss",
cooldownBorderColor = { r = 1, g = 1, b = 1, a = 1 },
cooldownDisableCircle = false,
cooldownCooldownAlpha = 1
cooldownCooldownAlpha = 1,
cooldownCooldowns = getDefaultCooldown()
})
function Cooldowns:Initialize()
self.cooldownSpellIds = {}
self.spellTextures = {}
for class, t in pairs(self.cooldownSpells) do
for class, t in pairs(Gladdy:GetCooldownList()) do
for k, v in pairs(t) do
local spellName, _, texture = GetSpellInfo(k)
if spellName then
@@ -43,17 +86,20 @@ function Cooldowns:Initialize()
self:RegisterMessage("ENEMY_SPOTTED")
self:RegisterMessage("SPEC_DETECTED")
self:RegisterMessage("UNIT_DEATH")
self:RegisterMessage("UNIT_DESTROYED")
end
function Cooldowns:CreateFrame(unit)
local button = Gladdy.buttons[unit]
-- Cooldown frame
local spellCooldownFrame = CreateFrame("Frame", nil, button)
spellCooldownFrame:EnableMouse(false)
for x = 1, 14 do
local icon = CreateFrame("Frame", nil, spellCooldownFrame)
icon:EnableMouse(false)
icon:SetFrameLevel(3)
icon.texture = icon:CreateTexture(nil, "BACKGROUND")
icon.texture:SetMask("Interface\\AddOns\\Gladdy\\Images\\mask")
icon.texture:SetAllPoints(icon)
icon.cooldown = CreateFrame("Cooldown", nil, icon, "CooldownFrameTemplate")
@@ -102,56 +148,19 @@ function Cooldowns:UpdateFrame(unit)
button.spellCooldownFrame:SetPoint("TOPLEFT", button.powerBar, "BOTTOMLEFT", Gladdy.db.cooldownXOffset, -Gladdy.db.highlightBorderSize + Gladdy.db.cooldownYOffset)
end
elseif Gladdy.db.cooldownYPos == "LEFT" then
local horizontalMargin = Gladdy.db.highlightBorderSize + Gladdy.db.padding
if (Gladdy.db.trinketPos == "LEFT" and Gladdy.db.trinketEnabled) then
horizontalMargin = horizontalMargin + (Gladdy.db.trinketSize * Gladdy.db.trinketWidthFactor) + Gladdy.db.padding
if (Gladdy.db.classIconPos == "LEFT") then
horizontalMargin = horizontalMargin + (Gladdy.db.classIconSize * Gladdy.db.classIconWidthFactor) + Gladdy.db.padding
end
elseif (Gladdy.db.classIconPos == "LEFT") then
horizontalMargin = horizontalMargin + (Gladdy.db.classIconSize * Gladdy.db.classIconWidthFactor) + Gladdy.db.padding
if (Gladdy.db.trinketPos == "LEFT" and Gladdy.db.trinketEnabled) then
horizontalMargin = horizontalMargin + (Gladdy.db.trinketSize * Gladdy.db.trinketWidthFactor) + Gladdy.db.padding
end
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)
else
button.spellCooldownFrame:SetPoint("RIGHT", anchor, "LEFT", -Gladdy.db.padding + Gladdy.db.cooldownXOffset, Gladdy.db.cooldownYOffset)
end
if (Gladdy.db.drCooldownPos == "LEFT" and Gladdy.db.drEnabled) then
verticalMargin = verticalMargin + Gladdy.db.drIconSize/2 + Gladdy.db.padding/2
end
if (Gladdy.db.castBarPos == "LEFT") then
verticalMargin = verticalMargin -
((Gladdy.db.castBarHeight < Gladdy.db.castBarIconSize) and Gladdy.db.castBarIconSize
or Gladdy.db.castBarHeight)/2 + Gladdy.db.padding/2
end
if (Gladdy.db.buffsCooldownPos == "LEFT" and Gladdy.db.buffsEnabled) then
verticalMargin = verticalMargin - (Gladdy.db.buffsIconSize/2 + Gladdy.db.padding/2)
end
button.spellCooldownFrame:SetPoint("RIGHT", button.healthBar, "LEFT", -horizontalMargin + Gladdy.db.cooldownXOffset, Gladdy.db.cooldownYOffset + verticalMargin)
elseif Gladdy.db.cooldownYPos == "RIGHT" then
verticalMargin = -(Gladdy.db.powerBarHeight)/2
local horizontalMargin = Gladdy.db.highlightBorderSize + Gladdy.db.padding
if (Gladdy.db.trinketPos == "RIGHT" and Gladdy.db.trinketEnabled) then
horizontalMargin = horizontalMargin + (Gladdy.db.trinketSize * Gladdy.db.trinketWidthFactor) + Gladdy.db.padding
if (Gladdy.db.classIconPos == "RIGHT") then
horizontalMargin = horizontalMargin + (Gladdy.db.classIconSize * Gladdy.db.classIconWidthFactor) + Gladdy.db.padding
end
elseif (Gladdy.db.classIconPos == "RIGHT") then
horizontalMargin = horizontalMargin + (Gladdy.db.classIconSize * Gladdy.db.classIconWidthFactor) + Gladdy.db.padding
if (Gladdy.db.trinketPos == "RIGHT" and Gladdy.db.trinketEnabled) then
horizontalMargin = horizontalMargin + (Gladdy.db.trinketSize * Gladdy.db.trinketWidthFactor) + Gladdy.db.padding
end
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)
else
button.spellCooldownFrame:SetPoint("LEFT", anchor, "RIGHT", Gladdy.db.padding + Gladdy.db.cooldownXOffset, Gladdy.db.cooldownYOffset)
end
if (Gladdy.db.drCooldownPos == "RIGHT" and Gladdy.db.drEnabled) then
verticalMargin = verticalMargin + Gladdy.db.drIconSize/2 + Gladdy.db.padding/2
end
if (Gladdy.db.castBarPos == "RIGHT") then
verticalMargin = verticalMargin -
((Gladdy.db.castBarHeight < Gladdy.db.castBarIconSize) and Gladdy.db.castBarIconSize
or Gladdy.db.castBarHeight)/2 + Gladdy.db.padding/2
end
if (Gladdy.db.buffsCooldownPos == "RIGHT" and Gladdy.db.buffsEnabled) then
verticalMargin = verticalMargin - (Gladdy.db.buffsIconSize/2 + Gladdy.db.padding/2)
end
button.spellCooldownFrame:SetPoint("LEFT", button.healthBar, "RIGHT", horizontalMargin + Gladdy.db.cooldownXOffset, Gladdy.db.cooldownYOffset + verticalMargin)
end
button.spellCooldownFrame:SetHeight(Gladdy.db.cooldownSize)
button.spellCooldownFrame:SetWidth(1)
@@ -227,12 +236,10 @@ function Cooldowns:UpdateFrame(unit)
end
function Cooldowns:Test(unit)
if Gladdy.db.cooldown then
local button = Gladdy.buttons[unit]
button.spellCooldownFrame:Show()
button.lastCooldownSpell = 1
self:UpdateTestCooldowns(unit)
end
local button = Gladdy.buttons[unit]
button.spellCooldownFrame:Show()
button.lastCooldownSpell = 1
self:UpdateTestCooldowns(unit)
end
function Cooldowns:UpdateTestCooldowns(unit)
@@ -246,12 +253,12 @@ function Cooldowns:UpdateTestCooldowns(unit)
button.test = true
-- use class spells
for k, v in pairs(self.cooldownSpells[button.class]) do
for k, v in pairs(Gladdy:GetCooldownList()[button.class]) do
--k is spellId
self:CooldownUsed(unit, button.class, k, nil)
end
-- use race spells
for k, v in pairs(self.cooldownSpells[button.race]) do
for k, v in pairs(Gladdy:GetCooldownList()[button.race]) do
self:CooldownUsed(unit, button.race, k, nil)
end
end
@@ -345,30 +352,32 @@ function Cooldowns:DetectSpec(unit, spec)
if (Gladdy.db.cooldown) then
local class = Gladdy.buttons[unit].class
local race = Gladdy.buttons[unit].race
for k, v in pairs(self.cooldownSpells[class]) do
--if (self.db.cooldownList[k] ~= false and self.db.cooldownList[class] ~= false) then
if (type(v) == "table" and ((v.spec ~= nil and v.spec == spec) or (v.notSpec ~= nil and v.notSpec ~= spec))) then
local sharedCD = false
if (type(v) == "table" and v.sharedCD ~= nil and v.sharedCD.cd == nil) then
for spellId, _ in pairs(v.sharedCD) do
for i = 1, button.lastCooldownSpell do
local icon = button.spellCooldownFrame["icon" .. i]
if (icon.spellId == spellId) then
sharedCD = true
for k, v in pairs(Gladdy:GetCooldownList()[class]) do
if Gladdy.db.cooldownCooldowns[tostring(k)] then
--if (self.db.cooldownList[k] ~= false and self.db.cooldownList[class] ~= false) then
if (type(v) == "table" and ((v.spec ~= nil and v.spec == spec) or (v.notSpec ~= nil and v.notSpec ~= spec))) then
local sharedCD = false
if (type(v) == "table" and v.sharedCD ~= nil and v.sharedCD.cd == nil) then
for spellId, _ in pairs(v.sharedCD) do
for i = 1, button.lastCooldownSpell do
local icon = button.spellCooldownFrame["icon" .. i]
if (icon.spellId == spellId) then
sharedCD = true
end
end
end
end
end
if sharedCD then
return
end
if sharedCD then
return
end
local icon = button.spellCooldownFrame["icon" .. button.lastCooldownSpell]
icon:Show()
icon.texture:SetTexture(self.spellTextures[k])
icon.spellId = k
button.spellCooldownFrame["icon" .. button.lastCooldownSpell] = icon
button.lastCooldownSpell = button.lastCooldownSpell + 1
local icon = button.spellCooldownFrame["icon" .. button.lastCooldownSpell]
icon:Show()
icon.texture:SetTexture(self.spellTextures[k])
icon.spellId = k
button.spellCooldownFrame["icon" .. button.lastCooldownSpell] = icon
button.lastCooldownSpell = button.lastCooldownSpell + 1
end
end
end
--end
@@ -377,31 +386,33 @@ function Cooldowns:DetectSpec(unit, spec)
--- RACE FUNCTIONALITY
----------------------
local race = Gladdy.buttons[unit].race
if self.cooldownSpells[race] then
for k, v in pairs(self.cooldownSpells[race]) do
--if (self.db.cooldownList[k] ~= false and self.db.cooldownList[class] ~= false) then
if (type(v) == "table" and ((v.spec ~= nil and v.spec == spec) or (v.notSpec ~= nil and v.notSpec ~= spec))) then
local sharedCD = false
if (type(v) == "table" and v.sharedCD ~= nil and v.sharedCD.cd == nil) then
for spellId, _ in pairs(v.sharedCD) do
for i = 1, button.lastCooldownSpell do
local icon = button.spellCooldownFrame["icon" .. i]
if (icon.spellId == spellId) then
sharedCD = true
if Gladdy:GetCooldownList()[race] then
for k, v in pairs(Gladdy:GetCooldownList()[race]) do
if Gladdy.db.cooldownCooldowns[tostring(k)] then
--if (self.db.cooldownList[k] ~= false and self.db.cooldownList[class] ~= false) then
if (type(v) == "table" and ((v.spec ~= nil and v.spec == spec) or (v.notSpec ~= nil and v.notSpec ~= spec))) then
local sharedCD = false
if (type(v) == "table" and v.sharedCD ~= nil and v.sharedCD.cd == nil) then
for spellId, _ in pairs(v.sharedCD) do
for i = 1, button.lastCooldownSpell do
local icon = button.spellCooldownFrame["icon" .. i]
if (icon.spellId == spellId) then
sharedCD = true
end
end
end
end
end
if sharedCD then
return
end
if sharedCD then
return
end
local icon = button.spellCooldownFrame["icon" .. button.lastCooldownSpell]
icon:Show()
icon.texture:SetTexture(self.spellTextures[k])
icon.spellId = k
button.spellCooldownFrame["icon" .. button.lastCooldownSpell] = icon
button.lastCooldownSpell = button.lastCooldownSpell + 1
local icon = button.spellCooldownFrame["icon" .. button.lastCooldownSpell]
icon:Show()
icon.texture:SetTexture(self.spellTextures[k])
icon.spellId = k
button.spellCooldownFrame["icon" .. button.lastCooldownSpell] = icon
button.lastCooldownSpell = button.lastCooldownSpell + 1
end
end
end
end
@@ -412,6 +423,10 @@ function Cooldowns:ResetUnit(unit)
Gladdy.buttons[unit].test = nil
end
function Cooldowns:UNIT_DESTROYED(unit)
end
function Cooldowns:UpdateCooldowns(button)
local class = button.class
local race = button.race
@@ -420,29 +435,31 @@ function Cooldowns:UpdateCooldowns(button)
end
if (Gladdy.db.cooldown) then
for k, v in pairs(self.cooldownSpells[class]) do
if (type(v) ~= "table" or (type(v) == "table" and v.spec == nil and v.notSpec == nil)) then
-- see if we have shared cooldowns without a cooldown defined
-- e.g. hunter traps have shared cooldowns, so only display one trap instead all of them
local sharedCD = false
if (type(v) == "table" and v.sharedCD ~= nil and v.sharedCD.cd == nil) then
for spellId, _ in pairs(v.sharedCD) do
for i = 1, button.lastCooldownSpell do
local icon = button.spellCooldownFrame["icon" .. i]
if (icon.spellId == spellId) then
sharedCD = true
for k, v in pairs(Gladdy:GetCooldownList()[class]) do
if Gladdy.db.cooldownCooldowns[tostring(k)] then
if (type(v) ~= "table" or (type(v) == "table" and v.spec == nil and v.notSpec == nil)) then
-- see if we have shared cooldowns without a cooldown defined
-- e.g. hunter traps have shared cooldowns, so only display one trap instead all of them
local sharedCD = false
if (type(v) == "table" and v.sharedCD ~= nil and v.sharedCD.cd == nil) then
for spellId, _ in pairs(v.sharedCD) do
for i = 1, button.lastCooldownSpell do
local icon = button.spellCooldownFrame["icon" .. i]
if (icon.spellId == spellId) then
sharedCD = true
end
end
end
end
end
if (not sharedCD) then
local icon = button.spellCooldownFrame["icon" .. button.lastCooldownSpell]
icon:Show()
icon.spellId = k
icon.texture:SetTexture(self.spellTextures[k])
button.spellCooldownFrame["icon" .. button.lastCooldownSpell] = icon
button.lastCooldownSpell = button.lastCooldownSpell + 1
if (not sharedCD) then
local icon = button.spellCooldownFrame["icon" .. button.lastCooldownSpell]
icon:Show()
icon.spellId = k
icon.texture:SetTexture(self.spellTextures[k])
button.spellCooldownFrame["icon" .. button.lastCooldownSpell] = icon
button.lastCooldownSpell = button.lastCooldownSpell + 1
end
end
end
end
@@ -450,14 +467,16 @@ function Cooldowns:UpdateCooldowns(button)
-- RACE FUNCTIONALITY
----
for k, v in pairs(self.cooldownSpells[race]) do
if (type(v) ~= "table" or (type(v) == "table" and v.spec == nil and v.notSpec == nil)) then
local icon = button.spellCooldownFrame["icon" .. button.lastCooldownSpell]
icon:Show()
icon.spellId = k
icon.texture:SetTexture(self.spellTextures[k])
button.spellCooldownFrame["icon" .. button.lastCooldownSpell] = icon
button.lastCooldownSpell = button.lastCooldownSpell + 1
for k, v in pairs(Gladdy:GetCooldownList()[race]) do
if Gladdy.db.cooldownCooldowns[tostring(k)] then
if (type(v) ~= "table" or (type(v) == "table" and v.spec == nil and v.notSpec == nil)) then
local icon = button.spellCooldownFrame["icon" .. button.lastCooldownSpell]
icon:Show()
icon.spellId = k
icon.texture:SetTexture(self.spellTextures[k])
button.spellCooldownFrame["icon" .. button.lastCooldownSpell] = icon
button.lastCooldownSpell = button.lastCooldownSpell + 1
end
end
end
end
@@ -470,7 +489,7 @@ function Cooldowns:CooldownUsed(unit, unitClass, spellId, spellName)
end
-- if (self.db.cooldownList[spellId] == false) then return end
local cooldown = self.cooldownSpells[unitClass][spellId]
local cooldown = Gladdy:GetCooldownList()[unitClass][spellId]
local cd = cooldown
if (type(cooldown) == "table") then
-- return if the spec doesn't have a cooldown for this spell
@@ -755,9 +774,80 @@ function Cooldowns:GetOptions()
},
},
},
cooldowns = {
type = "group",
childGroups = "tree",
name = "Cooldowns",
order = 4,
args = Cooldowns:GetCooldownOptions(),
},
}
end
function Cooldowns:GetCooldownOptions()
local group = {}
local p = 1
for i,class in ipairs(Gladdy.CLASSES) do
group[class] = {
type = "group",
name = LOCALIZED_CLASS_NAMES_MALE[class],
order = i,
icon = "Interface\\Glues\\CharacterCreate\\UI-CharacterCreate-Classes",
iconCoords = CLASS_ICON_TCOORDS[class],
args = {}
}
local o = 1
for spellId,cooldown in pairs(Gladdy:GetCooldownList()[class]) do
group[class].args[tostring(spellId)] = {
type = "toggle",
name = select(1, GetSpellInfo(spellId)) .. (type(cooldown) == "table" and cooldown.spec and (" - " .. cooldown.spec) or ""),
order = o,
width = "full",
image = select(3, GetSpellInfo(spellId)),
get = function(info)
return Gladdy.db.cooldownCooldowns[tostring(spellId)]
end,
set = function(info, value)
Gladdy.db.cooldownCooldowns[tostring(spellId)] = value
Gladdy:UpdateFrame()
end
}
o = o + 1
end
p = p + i
end
for i,race in ipairs(Gladdy.RACES) do
group[race] = {
type = "group",
name = L[race],
order = i + p,
icon = "Interface\\Glues\\CharacterCreate\\UI-CharacterCreate-Races",
iconCoords = RACE_ICON_TCOORDS[upper(race) .. "_FEMALE"],
args = {}
}
local o = 1
for spellId,cooldown in pairs(Gladdy:GetCooldownList()[race]) do
group[race].args[tostring(spellId)] = {
type = "toggle",
name = select(1, GetSpellInfo(spellId)) .. (type(cooldown) == "table" and cooldown.spec and (" - " .. cooldown.spec) or ""),
order = o,
width = "full",
image = select(3, GetSpellInfo(spellId)),
get = function(info)
return Gladdy.db.cooldownCooldowns[tostring(spellId)]
end,
set = function(info, value)
Gladdy.db.cooldownCooldowns[tostring(spellId)] = value
Gladdy:UpdateFrame()
end
}
o = o + 1
end
end
return group
end
function Gladdy:UpdateTestCooldowns(i)
local unit = "arena" .. i
local button = Gladdy.buttons[unit]
@@ -769,219 +859,13 @@ function Gladdy:UpdateTestCooldowns(i)
Cooldowns:DetectSpec(unit, button.testSpec)
-- use class spells
for k, v in pairs(Cooldowns.cooldownSpells[button.class]) do
for k, v in pairs(Gladdy:GetCooldownList()[button.class]) do
--k is spellId
Cooldowns:CooldownUsed(unit, button.class, k, nil)
end
-- use race spells
for k, v in pairs(Cooldowns.cooldownSpells[button.race]) do
for k, v in pairs(Gladdy:GetCooldownList()[button.race]) do
Cooldowns:CooldownUsed(unit, button.race, k, nil)
end
end
end
Cooldowns.cooldownSpells = {
-- Spell Name Cooldown[, Spec]
-- Mage
["MAGE"] = {
[1953] = 15, -- Blink
--[122] = 22, -- Frost Nova
--[12051] = 480, --Evocation
[2139] = 24, -- Counterspell
[45438] = { cd = 300, [L["Frost"]] = 240, }, -- Ice Block
[12472] = { cd = 180, spec = L["Frost"], }, -- Icy Veins
[31687] = { cd = 180, spec = L["Frost"], }, -- Summon Water Elemental
[12043] = { cd = 180, spec = L["Arcane"], }, -- Presence of Mind
[11129] = { cd = 180, spec = L["Fire"] }, -- Combustion
[120] = { cd = 10,
sharedCD = {
[31661] = true, -- Cone of Cold
}, spec = L["Fire"] }, -- Dragon's Breath
[31661] = { cd = 20,
sharedCD = {
[120] = true, -- Cone of Cold
}, spec = L["Fire"] }, -- Dragon's Breath
[12042] = { cd = 180, spec = L["Arcane"], }, -- Arcane Power
[11958] = { cd = 384, spec = L["Frost"], -- Coldsnap
resetCD = {
[12472] = true,
[45438] = true,
[31687] = true,
},
},
},
-- Priest
["PRIEST"] = {
[10890] = { cd = 27, [L["Shadow"]] = 23, }, -- Psychic Scream
[15487] = { cd = 45, spec = L["Shadow"], }, -- Silence
[10060] = { cd = 180, spec = L["Discipline"], }, -- Power Infusion
[33206] = { cd = 120, spec = L["Discipline"], }, -- Pain Suppression
[34433] = 300, -- Shadowfiend
},
-- Druid
["DRUID"] = {
[22812] = 60, -- Barkskin
[29166] = 360, -- Innervate
[8983] = 60, -- Bash
[16689] = 60, -- Natures Grasp
[17116] = { cd = 180, spec = L["Restoration"], }, -- Natures Swiftness
[33831] = { cd = 180, spec = L["Balance"], }, -- Force of Nature
},
-- Shaman
["SHAMAN"] = {
[8042] = { cd = 6, -- Earth Shock
sharedCD = {
[8056] = true, -- Frost Shock
[8050] = true, -- Flame Shock
},
},
[30823] = { cd = 120, spec = L["Enhancement"], }, -- Shamanistic Rage
[16166] = { cd = 180, spec = L["Elemental"], }, -- Elemental Mastery
[16188] = { cd = 180, spec = L["Restoration"], }, -- Natures Swiftness
[16190] = { cd = 300, spec = L["Restoration"], }, -- Mana Tide Totem
},
-- Paladin
["PALADIN"] = {
[10278] = 180, -- Blessing of Protection
[1044] = 25, -- Blessing of Freedom
[10308] = { cd = 60, [L["Retribution"]] = 40, }, -- Hammer of Justice
[642] = { cd = 300, -- Divine Shield
sharedCD = {
cd = 60, -- no actual shared CD but debuff
[31884] = true,
},
},
[31884] = { cd = 180, spec = L["Retribution"], -- Avenging Wrath
sharedCD = {
cd = 60,
[642] = true,
},
},
[20066] = { cd = 60, spec = L["Retribution"], }, -- Repentance
[31842] = { cd = 180, spec = L["Holy"], }, -- Divine Illumination
[31935] = { cd = 30, spec = L["Protection"], }, -- Avengers Shield
},
-- Warlock
["WARLOCK"] = {
[17928] = 40, -- Howl of Terror
[27223] = 120, -- Death Coil
--[19647] = { cd = 24 }, -- Spell Lock; how will I handle pet spells?
[30414] = { cd = 20, spec = L["Destruction"], }, -- Shadowfury
[17877] = { cd = 15, spec = L["Destruction"], }, -- Shadowburn
[18708] = { cd = 900, spec = L["Demonology"], }, -- Feldom
},
-- Warrior
["WARRIOR"] = {
--[[6552] = { cd = 10, -- Pummel
sharedCD = {
[72] = true,
},
},
[72] = { cd = 12, -- Shield Bash
sharedCD = {
[6552] = true,
},
}, ]]
--[23920] = 10, -- Spell Reflection
[3411] = 30, -- Intervene
[676] = 60, -- Disarm
[5246] = 180, -- Intimidating Shout
--[2565] = 60, -- Shield Block
[12292] = { cd = 180, spec = L["Arms"], }, -- Death Wish
[12975] = { cd = 180, spec = L["Protection"], }, -- Last Stand
[12809] = { cd = 30, spec = L["Protection"], }, -- Concussion Blow
},
-- Hunter
["HUNTER"] = {
[19503] = 30, -- Scatter Shot
[19263] = 300, -- Deterrence; not on BM but can't do 2 specs
[14311] = { cd = 30, -- Freezing Trap
sharedCD = {
[13809] = true, -- Frost Trap
[34600] = true, -- Snake Trap
},
},
[13809] = { cd = 30, -- Frost Trap
sharedCD = {
[14311] = true, -- Freezing Trap
[34600] = true, -- Snake Trap
},
},
[34600] = { cd = 30, -- Snake Trap
sharedCD = {
[14311] = true, -- Freezing Trap
[13809] = true, -- Frost Trap
},
},
[34490] = { cd = 20, spec = L["Marksmanship"], }, -- Silencing Shot
[19386] = { cd = 60, spec = L["Survival"], }, -- Wyvern Sting
[19577] = { cd = 60, spec = L["Beast Mastery"], }, -- Intimidation
[38373] = { cd = 120, spec = L["Beast Mastery"], }, -- The Beast Within
},
-- Rogue
["ROGUE"] = {
[1766] = 10, -- Kick
[8643] = 20, -- Kidney Shot
[31224] = 60, -- Cloak of Shadow
[26889] = { cd = 300, [L["Subtlety"]] = 180, }, -- Vanish
[2094] = { cd = 180, [L["Subtlety"]] = 90, }, -- Blind
[11305] = { cd = 300, [L["Combat"]] = 180, }, -- Sprint
[26669] = { cd = 300, [L["Combat"]] = 180, }, -- Evasion
[14177] = { cd = 180, spec = L["Assassination"], }, -- Cold Blood
[13750] = { cd = 300, spec = L["Combat"], }, -- Adrenaline Rush
[13877] = { cd = 120, spec = L["Combat"], }, -- Blade Flurry
[36554] = { cd = 30, spec = L["Subtlety"], }, -- Shadowstep
[14185] = { cd = 600, spec = L["Subtlety"], -- Preparation
resetCD = {
[26669] = true,
[11305] = true,
[26889] = true,
[14177] = true,
[36554] = true,
},
},
},
["Scourge"] = {
[7744] = 120, -- Will of the Forsaken
},
["BloodElf"] = {
[28730] = 120, -- Arcane Torrent
},
["Tauren"] = {
[20549] = 120, -- War Stomp
},
["Orc"] = {
},
["Troll"] = {
},
["NightElf"] = {
[2651] = { cd = 180, spec = L["Discipline"], }, -- Elune's Grace
[10797] = { cd = 30, spec = L["Discipline"], }, -- Star Shards
},
["Draenei"] = {
[32548] = { cd = 300, spec = L["Discipline"], }, -- Hymn of Hope
},
["Human"] = {
[13908] = { cd = 600, spec = L["Discipline"], }, -- Desperate Prayer
[20600] = 180, -- Perception
},
["Gnome"] = {
[20589] = 105, -- Escape Artist
},
["Dwarf"] = {
[20594] = 180, -- Stoneform
[13908] = { cd = 600, spec = L["Discipline"], }, -- Desperate Prayer
},
}
end
+21 -50
View File
@@ -62,11 +62,12 @@ end
function Diminishings:Initialize()
self.frames = {}
self:RegisterMessage("UNIT_DEATH", "ResetUnit", "AURA_FADE")
self:RegisterMessage("UNIT_DEATH", "ResetUnit", "AURA_FADE", "UNIT_DESTROYED")
end
function Diminishings:CreateFrame(unit)
local drFrame = CreateFrame("Frame", nil, Gladdy.buttons[unit])
drFrame:EnableMouse(false)
for i = 1, 16 do
local icon = CreateFrame("Frame", "GladdyDr" .. unit .. "Icon" .. i, drFrame)
@@ -74,6 +75,7 @@ function Diminishings:CreateFrame(unit)
icon:EnableMouse(false)
icon:SetFrameLevel(3)
icon.texture = icon:CreateTexture(nil, "BACKGROUND")
icon.texture:SetMask("Interface\\AddOns\\Gladdy\\Images\\mask")
icon.texture:SetAllPoints(icon)
icon:SetScript("OnUpdate", function(self, elapsed)
if (self.active) then
@@ -94,7 +96,7 @@ function Diminishings:CreateFrame(unit)
if self.timeLeft >=5 then
self.timeText:SetFormattedText("%d", self.timeLeft)
else
self.timeText:SetFormattedText("%.1f", self.timeLeft)
self.timeText:SetFormattedText("%.1f", self.timeLeft >= 0.0 and self.timeLeft or 0.0)
end
end
end
@@ -161,56 +163,21 @@ function Diminishings:UpdateFrame(unit)
drFrame:ClearAllPoints()
local horizontalMargin = Gladdy.db.highlightBorderSize + Gladdy.db.padding
local verticalMargin = -(Gladdy.db.powerBarHeight)/2
if (Gladdy.db.drCooldownPos == "LEFT") then
if (Gladdy.db.trinketPos == "LEFT" and Gladdy.db.trinketEnabled) then
horizontalMargin = horizontalMargin + (Gladdy.db.trinketSize * Gladdy.db.trinketWidthFactor) + Gladdy.db.padding
if (Gladdy.db.classIconPos == "LEFT") then
horizontalMargin = horizontalMargin + (Gladdy.db.classIconSize * Gladdy.db.classIconWidthFactor) + Gladdy.db.padding
end
elseif (Gladdy.db.classIconPos == "LEFT") then
horizontalMargin = horizontalMargin + (Gladdy.db.classIconSize * Gladdy.db.classIconWidthFactor) + Gladdy.db.padding
if (Gladdy.db.trinketPos == "LEFT" and Gladdy.db.trinketEnabled) then
horizontalMargin = horizontalMargin + (Gladdy.db.trinketSize * Gladdy.db.trinketWidthFactor) + Gladdy.db.padding
end
local anchor = Gladdy:GetAnchor(unit, "LEFT")
if anchor == Gladdy.buttons[unit].healthBar then
drFrame:SetPoint("RIGHT", anchor, "LEFT", -horizontalMargin + Gladdy.db.drXOffset, Gladdy.db.drYOffset)
else
drFrame:SetPoint("RIGHT", anchor, "LEFT", -Gladdy.db.padding + Gladdy.db.drXOffset, Gladdy.db.drYOffset)
end
if (Gladdy.db.castBarPos == "LEFT") then
verticalMargin = verticalMargin -
(((Gladdy.db.castBarHeight < Gladdy.db.castBarIconSize) and Gladdy.db.castBarIconSize
or Gladdy.db.castBarHeight)/2 + Gladdy.db.padding/2)
end
if (Gladdy.db.cooldownYPos == "LEFT" and Gladdy.db.cooldown) then
verticalMargin = verticalMargin - (Gladdy.db.cooldownSize/2 + Gladdy.db.padding/2)
end
if (Gladdy.db.buffsCooldownPos == "LEFT" and Gladdy.db.buffsEnabled) then
verticalMargin = verticalMargin - (Gladdy.db.buffsIconSize/2 + Gladdy.db.padding/2)
end
drFrame:SetPoint("RIGHT", Gladdy.buttons[unit].healthBar, "LEFT", -horizontalMargin + Gladdy.db.drXOffset, Gladdy.db.drYOffset + verticalMargin)
end
if (Gladdy.db.drCooldownPos == "RIGHT") then
if (Gladdy.db.trinketPos == "RIGHT" and Gladdy.db.trinketEnabled) then
horizontalMargin = horizontalMargin + (Gladdy.db.trinketSize * Gladdy.db.trinketWidthFactor) + Gladdy.db.padding
if (Gladdy.db.classIconPos == "RIGHT") then
horizontalMargin = horizontalMargin + (Gladdy.db.classIconSize * Gladdy.db.classIconWidthFactor) + Gladdy.db.padding
end
elseif (Gladdy.db.classIconPos == "RIGHT") then
horizontalMargin = horizontalMargin + (Gladdy.db.classIconSize * Gladdy.db.classIconWidthFactor) + Gladdy.db.padding
if (Gladdy.db.trinketPos == "RIGHT" and Gladdy.db.trinketEnabled) then
horizontalMargin = horizontalMargin + (Gladdy.db.trinketSize * Gladdy.db.trinketWidthFactor) + Gladdy.db.padding
end
local anchor = Gladdy:GetAnchor(unit, "RIGHT")
if anchor == Gladdy.buttons[unit].healthBar then
drFrame:SetPoint("LEFT", anchor, "RIGHT", horizontalMargin + Gladdy.db.drXOffset, Gladdy.db.drYOffset)
else
drFrame:SetPoint("LEFT", anchor, "RIGHT", Gladdy.db.padding + Gladdy.db.drXOffset, Gladdy.db.drYOffset)
end
if (Gladdy.db.castBarPos == "RIGHT") then
verticalMargin = verticalMargin -
(((Gladdy.db.castBarHeight < Gladdy.db.castBarIconSize) and Gladdy.db.castBarIconSize
or Gladdy.db.castBarHeight)/2 + Gladdy.db.padding/2)
end
if (Gladdy.db.cooldownYPos == "RIGHT" and Gladdy.db.cooldown) then
verticalMargin = verticalMargin - (Gladdy.db.cooldownSize/2 + Gladdy.db.padding/2)
end
if (Gladdy.db.buffsCooldownPos == "RIGHT" and Gladdy.db.buffsEnabled) then
verticalMargin = verticalMargin - (Gladdy.db.buffsIconSize/2 + Gladdy.db.padding/2)
end
drFrame:SetPoint("LEFT", Gladdy.buttons[unit].healthBar, "RIGHT", horizontalMargin + Gladdy.db.drXOffset, Gladdy.db.drYOffset + verticalMargin)
end
drFrame:SetWidth(Gladdy.db.drIconSize * 16)
@@ -264,9 +231,9 @@ function Diminishings:UpdateFrame(unit)
icon.border:SetTexture(Gladdy.db.drBorderStyle)
end
icon.texture:SetTexCoord(.1, .9, .1, .9)
icon.texture:SetPoint("TOPLEFT", icon, "TOPLEFT", 2, -2)
icon.texture:SetPoint("BOTTOMRIGHT", icon, "BOTTOMRIGHT", -2, 2)
--icon.texture:SetTexCoord(.1, .9, .1, .9)
--icon.texture:SetPoint("TOPLEFT", icon, "TOPLEFT", 2, -2)
--icon.texture:SetPoint("BOTTOMRIGHT", icon, "BOTTOMRIGHT", -2, 2)
end
end
@@ -289,6 +256,10 @@ function Diminishings:ResetUnit(unit)
end
end
function Diminishings:UNIT_DESTROYED(unit)
Diminishings:ResetUnit(unit)
end
function Diminishings:Test(unit)
if Gladdy.db.drEnabled then
local spells = { 33786, 118, 8643, 8983 }
+71 -53
View File
@@ -18,19 +18,11 @@ local function table_copy(t)
return t2;
end
local function applyImport(t)
for k,v in pairs(t) do
if type(v) == "table" then
applyImport(v, Gladdy.dbi.profile[k]);
else
Gladdy.dbi.profile[k] = v;
end
end
end
local ExportImport = Gladdy:NewModule("ExportImport", nil, {
})
local export = AceGUI:Create("Frame")
export:SetWidth(550)
export.sizer_se:Hide()
@@ -72,9 +64,11 @@ importButton:SetText("Import\n(this will overwrite your current profile!)")
importButton:SetWidth(200)
importButton:SetHeight(50)
importButton:SetCallback("OnClick", function(widget)
applyImport(import.deserializedTable)
Gladdy:UpdateFrame()
ExportImport:ApplyImport(import.deserializedTable, Gladdy.db)
import:Hide()
Gladdy:Reset()
Gladdy:HideFrame()
Gladdy:ToggleFrame(3)
end)
import:AddChild(importButton)
import.button = importButton
@@ -92,25 +86,24 @@ import:AddChild(importClearButton)
import.clearButton = importClearButton
function ExportImport:CheckDeserializedOptions(tbl, refTbl, str)
if str == nil and not tbl.version_major then
return false, "Version conflict: version_major not seen"
if str == nil and not tbl.version_major_num then
return false, "Version conflict: version_major_num not seen"
end
if str == nil and tbl.version_major ~= Gladdy.version_major then
return false, "Version conflict: " .. tbl.version_major .. " ~= " .. Gladdy.version_major
if str == nil and tbl.version_major_num ~= Gladdy.version_major_num then
return false, "Version conflict: " .. tbl.version_major_num .. " ~= " .. Gladdy.version_major_num
end
if str == nil then
str = "Gladdy.db"
tbl.version_major = nil
tbl.version_major_num = nil
end
if type(tbl) == "table" then
for k,v in pairs(tbl) do
if refTbl[k] ~= nil then
if type(v) ~= type(refTbl[k]) then
return false, str .. "." .. k .. " type error. Expected " .. type(refTbl[k]) .. " found " .. type(v)
end
for k,v in pairs(tbl) do
if refTbl[k] == nil then
return false, str .. "." .. k .. " does not exist"
else
if type(v) ~= type(refTbl[k]) then
return false, str .. "." .. k .. " type error. Expected " .. type(refTbl[k]) .. " found " .. type(v)
elseif type(v) == "table" then
ExportImport:CheckDeserializedOptions(v, refTbl[k], str .. "." .. k)
else
return false, str .. "." .. k .. " does not exist"
end
end
end
@@ -130,7 +123,7 @@ function ExportImport:GetOptions()
type = "execute",
func = function()
local db = table_copy(Gladdy.db)
db.version_major = Gladdy.version_major
db.version_major_num = Gladdy.version_major_num
dump = AceSerializer:Serialize(db)
local compress_deflate = LibDeflate:CompressZlib(dump)
printable_compressed = LibDeflate:EncodeForPrint(compress_deflate)
@@ -154,35 +147,10 @@ function ExportImport:GetOptions()
import.statustext:SetTextColor(1,0,0)
import.eb:SetFocus()
import.eb:SetCallback("OnTextChanged", function(widget)
local decoded_string = LibDeflate:DecodeForPrint(widget:GetText())
if not decoded_string then
import.statustext:SetTextColor(1,0,0)
import:SetStatusText("Invalid Import String FAILED LibDeflate:DecodeForPrint")
import.button.frame:Disable()
local deserialized = ExportImport:Decode(widget:GetText(), true)
if not deserialized then
return
end
local decompress_deflate = LibDeflate:DecompressZlib(decoded_string)
if not decompress_deflate then
import.statustext:SetTextColor(1,0,0)
import:SetStatusText("Invalid Import String FAILED LibDeflate:DecompressZlib")
import.button.frame:Disable()
return
end
local success, deserialized = AceSerializer:Deserialize(decompress_deflate)
if not success then
import.statustext:SetTextColor(1,0,0)
import:SetStatusText("Invalid Import String FAILED AceSerializer:Deserialize")
import.button.frame:Disable()
return
end
local statusOption, error = ExportImport:CheckDeserializedOptions(deserialized, Gladdy.db)
if not statusOption then
import.statustext:SetTextColor(1,0,0)
import:SetStatusText(error)
import.button.frame:Disable()
return
end
import.statustext:SetTextColor(0,1,0)
import:SetStatusText("SUCCESS")
import.button.frame:Enable()
@@ -194,4 +162,54 @@ function ExportImport:GetOptions()
order = 4,
},
}
end
function ExportImport:ApplyImport(t, table)
for k,v in pairs(t) do
if type(v) == "table" then
ExportImport:ApplyImport(v, table[k])
else
table[k] = v
end
end
end
function ExportImport:Decode(str, showError)
local decoded_string = LibDeflate:DecodeForPrint(str)
if not decoded_string then
if showError then
import.statustext:SetTextColor(1,0,0)
import:SetStatusText("Invalid Import String FAILED LibDeflate:DecodeForPrint")
import.button.frame:Disable()
end
return nil
end
local decompress_deflate = LibDeflate:DecompressZlib(decoded_string)
if not decompress_deflate then
if showError then
import.statustext:SetTextColor(1,0,0)
import:SetStatusText("Invalid Import String FAILED LibDeflate:DecompressZlib")
import.button.frame:Disable()
end
return nil
end
local success, deserialized = AceSerializer:Deserialize(decompress_deflate)
if not success then
if showError then
import.statustext:SetTextColor(1,0,0)
import:SetStatusText("Invalid Import String FAILED AceSerializer:Deserialize")
import.button.frame:Disable()
end
return nil
end
local statusOption, error = ExportImport:CheckDeserializedOptions(deserialized, Gladdy.defaults.profile)
if not statusOption then
if showError then
import.statustext:SetTextColor(1,0,0)
import:SetStatusText(error)
import.button.frame:Disable()
end
return nil
end
return deserialized
end
+84 -21
View File
@@ -17,7 +17,10 @@ local Healthbar = Gladdy:NewModule("Healthbar", 100, {
healthBarBorderColor = { r = 0, g = 0, b = 0, a = 1 },
healthBarBgColor = { r = 0, g = 0, b = 0, a = 0.4 },
healthBarFontColor = { r = 1, g = 1, b = 1, a = 1 },
healthBarFontSize = 12,
healthBarNameFontSize = 12,
healthBarHealthFontSize = 12,
healthNameToArenaId = false,
healthName = true,
healthActual = false,
healthMax = true,
healthPercentage = true,
@@ -25,7 +28,9 @@ local Healthbar = Gladdy:NewModule("Healthbar", 100, {
function Healthbar:Initialize()
self.frames = {}
self:RegisterMessage("JOINED_ARENA")
self:RegisterMessage("ENEMY_SPOTTED")
self:RegisterMessage("UNIT_DESTROYED")
self:RegisterMessage("UNIT_DEATH")
end
@@ -33,6 +38,7 @@ function Healthbar:CreateFrame(unit)
local button = Gladdy.buttons[unit]
local healthBar = CreateFrame("Frame", nil, Gladdy.buttons[unit], BackdropTemplateMixin and "BackdropTemplate")
healthBar:EnableMouse(false)
healthBar:SetBackdrop({ edgeFile = Gladdy.LSM:Fetch("border", Gladdy.db.healthBarBorderStyle),
edgeSize = Gladdy.db.healthBarBorderSize })
healthBar:SetBackdropBorderColor(Gladdy.db.healthBarBorderColor.r, Gladdy.db.healthBarBorderColor.g, Gladdy.db.healthBarBorderColor.b, Gladdy.db.healthBarBorderColor.a)
@@ -51,11 +57,11 @@ function Healthbar:CreateFrame(unit)
healthBar.bg:SetVertexColor(Gladdy.db.healthBarBgColor.r, Gladdy.db.healthBarBgColor.g, Gladdy.db.healthBarBgColor.b, Gladdy.db.healthBarBgColor.a)
healthBar.nameText = healthBar:CreateFontString(nil, "LOW", "GameFontNormalSmall")
if (Gladdy.db.healthBarFontSize < 1) then
healthBar.nameText:SetFont(Gladdy.LSM:Fetch("font", Gladdy.db.healthBarFont), 1)
if (Gladdy.db.healthBarNameFontSize < 1) then
healthBar.nameText:SetFont(Gladdy.LSM:Fetch("font", Gladdy.db.healthBarNameFont), 1)
healthBar.nameText:Hide()
else
healthBar.nameText:SetFont(Gladdy.LSM:Fetch("font", Gladdy.db.healthBarFont), Gladdy.db.healthBarFontSize)
healthBar.nameText:SetFont(Gladdy.LSM:Fetch("font", Gladdy.db.healthBarFont), Gladdy.db.healthBarNameFontSize)
healthBar.nameText:Show()
end
healthBar.nameText:SetTextColor(Gladdy.db.healthBarFontColor.r, Gladdy.db.healthBarFontColor.g, Gladdy.db.healthBarFontColor.b, Gladdy.db.healthBarFontColor.a)
@@ -65,11 +71,11 @@ function Healthbar:CreateFrame(unit)
healthBar.nameText:SetPoint("LEFT", 5, 0)
healthBar.healthText = healthBar:CreateFontString(nil, "LOW")
if (Gladdy.db.healthBarFontSize < 1) then
if (Gladdy.db.healthBarHealthFontSize < 1) then
healthBar.healthText:SetFont(Gladdy.LSM:Fetch("font", Gladdy.db.healthBarFont), 1)
healthBar.healthText:Hide()
else
healthBar.healthText:SetFont(Gladdy.LSM:Fetch("font", Gladdy.db.healthBarFont), Gladdy.db.healthBarFontSize)
healthBar.healthText:SetFont(Gladdy.LSM:Fetch("font", Gladdy.db.healthBarFont), Gladdy.db.healthBarHealthFontSize)
healthBar.healthText:Hide()
end
healthBar.healthText:SetTextColor(Gladdy.db.healthBarFontColor.r, Gladdy.db.healthBarFontColor.g, Gladdy.db.healthBarFontColor.b, Gladdy.db.healthBarFontColor.a)
@@ -166,17 +172,24 @@ function Healthbar:UpdateFrame(unit)
healthBar.hp:SetPoint("TOPLEFT", healthBar, "TOPLEFT", (Gladdy.db.healthBarBorderSize/Gladdy.db.statusbarBorderOffset), -(Gladdy.db.healthBarBorderSize/Gladdy.db.statusbarBorderOffset))
healthBar.hp:SetPoint("BOTTOMRIGHT", healthBar, "BOTTOMRIGHT", -(Gladdy.db.healthBarBorderSize/Gladdy.db.statusbarBorderOffset), (Gladdy.db.healthBarBorderSize/Gladdy.db.statusbarBorderOffset))
if (Gladdy.db.healthBarFontSize < 1) then
healthBar.nameText:SetFont(Gladdy.LSM:Fetch("font", Gladdy.db.healthBarFont), 1)
if (Gladdy.db.healthBarHealthFontSize < 1) then
healthBar.healthText:SetFont(Gladdy.LSM:Fetch("font", Gladdy.db.healthBarFont), 1)
healthBar.nameText:Hide()
healthBar.healthText:Hide()
else
healthBar.nameText:SetFont(Gladdy.LSM:Fetch("font", Gladdy.db.healthBarFont), Gladdy.db.healthBarFontSize)
healthBar.nameText:Show()
healthBar.healthText:SetFont(Gladdy.LSM:Fetch("font", Gladdy.db.healthBarFont), Gladdy.db.healthBarFontSize)
healthBar.healthText:SetFont(Gladdy.LSM:Fetch("font", Gladdy.db.healthBarFont), Gladdy.db.healthBarHealthFontSize)
healthBar.healthText:Show()
end
if (Gladdy.db.healthBarNameFontSize < 1) then
healthBar.nameText:SetFont(Gladdy.LSM:Fetch("font", Gladdy.db.healthBarNameFont), 1)
healthBar.nameText:Hide()
else
healthBar.nameText:SetFont(Gladdy.LSM:Fetch("font", Gladdy.db.healthBarFont), Gladdy.db.healthBarNameFontSize)
if Gladdy.db.healthName then
healthBar.nameText:Show()
else
healthBar.nameText:Hide()
end
end
healthBar.nameText:SetTextColor(Gladdy.db.healthBarFontColor.r, Gladdy.db.healthBarFontColor.g, Gladdy.db.healthBarFontColor.b, Gladdy.db.healthBarFontColor.a)
healthBar.healthText:SetTextColor(Gladdy.db.healthBarFontColor.r, Gladdy.db.healthBarFontColor.g, Gladdy.db.healthBarFontColor.b, Gladdy.db.healthBarFontColor.a)
end
@@ -200,10 +213,20 @@ function Healthbar:Test(unit)
return
end
self:JOINED_ARENA()
self:ENEMY_SPOTTED(unit)
self:UNIT_HEALTH(unit, button.health, button.healthMax)
end
function Healthbar:JOINED_ARENA()
if Gladdy.db.healthNameToArenaId and Gladdy.db.healthName then
for i=1,Gladdy.curBracket do
local healthBar = self.frames["arena" .. i]
healthBar.nameText:SetText("Arena" .. i)
end
end
end
function Healthbar:ENEMY_SPOTTED(unit)
local healthBar = self.frames[unit]
local button = Gladdy.buttons[unit]
@@ -218,7 +241,10 @@ function Healthbar:ENEMY_SPOTTED(unit)
healthBar.hp:SetValue(health)
Healthbar:SetHealthText(healthBar, health, healthMax)
end
healthBar.nameText:SetText(button.name)
if Gladdy.db.healthName and not Gladdy.db.healthNameToArenaId then
healthBar.nameText:SetText(button.name)
end
healthBar.hp:SetStatusBarColor(RAID_CLASS_COLORS[button.class].r, RAID_CLASS_COLORS[button.class].g, RAID_CLASS_COLORS[button.class].b, 1)
end
@@ -270,6 +296,17 @@ function Healthbar:UNIT_DEATH(unit)
healthBar.healthText:SetText(L["DEAD"])
end
function Healthbar:UNIT_DESTROYED(unit)
local healthBar = self.frames[unit]
if (not healthBar) then
return
end
healthBar.hp:SetValue(0)
healthBar.healthText:SetText(L["LEAVE"])
healthBar.nameText:SetText("")
end
local function option(params)
local defaults = {
get = function(info)
@@ -283,6 +320,9 @@ local function option(params)
if Gladdy.db.healthBarBorderSize > Gladdy.db.healthBarHeight/2 then
Gladdy.db.healthBarBorderSize = Gladdy.db.healthBarHeight/2
end
for i=1,Gladdy.curBracket do
Healthbar:Test("arena" .. i)
end
Gladdy:UpdateFrame()
end,
}
@@ -368,11 +408,21 @@ function Healthbar:GetOptions()
order = 12,
hasAlpha = true,
}),
healthBarFontSize = option({
healthBarNameFontSize = option({
type = "range",
name = L["Font size"],
desc = L["Size of the text"],
name = L["Name font size"],
desc = L["Size of the name text"],
order = 13,
step = 0.1,
min = 0,
max = 20,
}),
healthBarHealthFontSize = option({
type = "range",
name = L["Health font size"],
desc = L["Size of the health text"],
order = 14,
step = 0.1,
min = 0,
max = 20,
}),
@@ -415,31 +465,44 @@ function Healthbar:GetOptions()
},
healthValues = {
type = "group",
name = L["Health Values"],
name = L["Health Bar Text"],
order = 4,
args = {
header = {
type = "header",
name = L["Health Values"],
name = L["Health Bar Text"],
order = 1,
},
healthName = option({
type = "toggle",
name = L["Show name text"],
desc = L["Show the units name"],
order = 2,
}),
healthNameToArenaId = option({
type = "toggle",
name = L["Show ArenaX"],
desc = L["Show Arena1-5 as name instead"],
order = 3,
disabled = function() return not Gladdy.db.healthName end
}),
healthActual = option({
type = "toggle",
name = L["Show the actual health"],
desc = L["Show the actual health on the health bar"],
order = 31,
order = 4,
}),
healthMax = option({
type = "toggle",
name = L["Show max health"],
desc = L["Show max health on the health bar"],
order = 32,
order = 5,
}),
healthPercentage = option({
type = "toggle",
name = L["Show health percentage"],
desc = L["Show health percentage on the health bar"],
order = 33,
order = 6,
}),
},
},
+3 -3
View File
@@ -54,17 +54,17 @@ function Highlight:CreateFrame(unit)
local targetBorder = CreateFrame("Frame", nil, button, BackdropTemplateMixin and "BackdropTemplate")
targetBorder:SetBackdrop({ edgeFile = "Interface\\ChatFrame\\ChatFrameBackground", edgeSize = Gladdy.db.highlightBorderSize })
targetBorder:SetFrameStrata("HIGH")
--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:SetFrameStrata("LOW")
--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:SetFrameStrata("MEDIUM")
--leaderBorder:SetFrameStrata("MEDIUM")
leaderBorder:Hide()
local highlight = healthBar:CreateTexture(nil, "OVERLAY")
+9 -4
View File
@@ -500,20 +500,25 @@ function Pets:GetOptions()
name = L["Position"],
order = 5,
args = {
header = {
type = "header",
name = L["Position"],
order = 1,
},
petXOffset = Gladdy:option({
type = "range",
name = L["Horizontal offset"],
order = 22,
min = -400,
max = 400,
min = -600,
max = 600,
step = 0.1,
}),
petYOffset = Gladdy:option({
type = "range",
name = L["Vertical offset"],
order = 23,
min = -400,
max = 400,
min = -600,
max = 600,
step = 0.1,
}),
}
+40 -6
View File
@@ -16,6 +16,8 @@ local Powerbar = Gladdy:NewModule("Powerbar", 90, {
powerBarFontColor = { r = 1, g = 1, b = 1, a = 1 },
powerBarBgColor = { r = 0.3, g = 0.3, b = 0.3, a = 0.7 },
powerBarFontSize = 10,
powerShowSpec = true,
powerShowRace = true,
powerActual = true,
powerMax = true,
powerPercentage = false,
@@ -27,12 +29,14 @@ function Powerbar:Initialize()
self:RegisterMessage("ENEMY_SPOTTED")
self:RegisterMessage("UNIT_SPEC")
self:RegisterMessage("UNIT_DEATH")
self:RegisterMessage("UNIT_DESTROYED")
end
function Powerbar:CreateFrame(unit)
local button = Gladdy.buttons[unit]
local powerBar = CreateFrame("Frame", nil, Gladdy.buttons[unit], BackdropTemplateMixin and "BackdropTemplate")
powerBar:EnableMouse(false)
powerBar:SetBackdrop({ edgeFile = Gladdy.LSM:Fetch("border", Gladdy.db.powerBarBorderStyle),
edgeSize = Gladdy.db.powerBarBorderSize })
powerBar:SetBackdropBorderColor(Gladdy.db.powerBarBorderColor.r, Gladdy.db.powerBarBorderColor.g, Gladdy.db.powerBarBorderColor.b, Gladdy.db.powerBarBorderColor.a)
@@ -185,9 +189,9 @@ function Powerbar:ENEMY_SPOTTED(unit)
return
end
local raceText = button.raceLoc
local raceText = Gladdy.db.powerShowRace and button.raceLoc or ""
if (button.spec) then
if (button.spec and Gladdy.db.powerShowSpec) then
raceText = button.spec .. " " .. raceText
end
@@ -203,8 +207,13 @@ function Powerbar:UNIT_SPEC(unit, spec)
if (not powerBar or not button) then
return
end
local raceText = Gladdy.db.powerShowRace and button.raceLoc or ""
powerBar.raceText:SetText(spec .. " " .. button.raceLoc)
if (button.spec and Gladdy.db.powerShowSpec) then
raceText = spec .. " " .. raceText
end
powerBar.raceText:SetText(raceText)
end
function Powerbar:UNIT_POWER(unit, power, powerMax, powerType)
@@ -263,6 +272,15 @@ function Powerbar:UNIT_DEATH(unit)
powerBar.powerText:SetText("0%")
end
function Powerbar:UNIT_DESTROYED(unit)
local powerBar = self.frames[unit]
if (not powerBar) then
return
end
powerBar.energy:SetValue(0)
powerBar.powerText:SetText("0%")
end
local function option(params)
local defaults = {
get = function(info)
@@ -272,10 +290,13 @@ local function option(params)
set = function(info, value)
local key = info.arg or info[#info]
Gladdy.dbi.profile[key] = value
Gladdy.options.args.Powerbar.args.group.args.border.arg.powerBarBorderSize.max = Gladdy.db.powerBarHeight/2
Gladdy.options.args.Powerbar.args.group.args.border.args.powerBarBorderSize.max = Gladdy.db.powerBarHeight/2
if Gladdy.db.powerBarBorderSize > Gladdy.db.powerBarHeight/2 then
Gladdy.db.powerBarBorderSize = Gladdy.db.powerBarHeight/2
end
for i=1,Gladdy.curBracket do
Powerbar:Test("arena" .. i)
end
Gladdy:UpdateFrame()
end,
}
@@ -366,6 +387,7 @@ function Powerbar:GetOptions()
name = L["Font size"],
desc = L["Size of the text"],
order = 13,
step = 0.1,
min = 1,
max = 20,
}),
@@ -408,14 +430,26 @@ function Powerbar:GetOptions()
},
powerValues = {
type = "group",
name = L["Power Values"],
name = L["Power Bar Text"],
order = 4,
args = {
header = {
type = "header",
name = L["Power Values"],
name = L["Power Texts"],
order = 1,
},
powerShowRace = option({
type = "toggle",
name = L["Show race"],
desc = L["Show race"],
order = 2,
}),
powerShowSpec= option({
type = "toggle",
name = L["Show spec"],
desc = L["Show spec"],
order = 3,
}),
powerActual = option({
type = "toggle",
name = L["Show the actual power"],
+394
View File
@@ -0,0 +1,394 @@
local ceil, floor, string_format, tonumber = ceil, floor, string.format, tonumber
local CreateFrame = CreateFrame
local GetTime = GetTime
local Gladdy = LibStub("Gladdy")
local L = Gladdy.L
local Racial = Gladdy:NewModule("Racial", nil, {
racialFont = "DorisPP",
racialFontScale = 1,
racialEnabled = true,
racialSize = 60 + 20 + 1,
racialWidthFactor = 0.9,
racialAnchor = "trinket",
racialPos = "RIGHT",
racialXOffset = 0,
racialYOffset = 0,
racialBorderStyle = "Interface\\AddOns\\Gladdy\\Images\\Border_rounded_blp",
racialBorderColor = { r = 0, g = 0, b = 0, a = 1 },
racialDisableCircle = false,
racialCooldownAlpha = 1,
})
local ANCHORS = { ["LEFT"] = "RIGHT", ["RIGHT"] = "LEFT", ["BOTTOM"] = "TOP", ["TOP"] = "BOTTOM"}
function Racial:Initialize()
self.frames = {}
self:RegisterMessage("JOINED_ARENA")
self:RegisterMessage("ENEMY_SPOTTED")
self:RegisterMessage("RACIAL_USED")
end
local function iconTimer(self,elapsed)
if (self.active) then
if (self.timeLeft <= 0) then
self.active = false
self.cooldown:Clear()
else
self.timeLeft = self.timeLeft - elapsed
end
local timeLeft = ceil(self.timeLeft)
if timeLeft >= 60 then
-- more than 1 minute
self.cooldownFont:SetTextColor(1, 1, 0)
self.cooldownFont:SetText(floor(timeLeft / 60) .. ":" .. string_format("%02.f", floor(timeLeft - floor(timeLeft / 60) * 60)))
self.cooldownFont:SetFont(Gladdy.LSM:Fetch("font", Gladdy.db.racialFont), (self:GetWidth()/2 - 0.15* self:GetWidth()) * Gladdy.db.racialFontScale, "OUTLINE")
elseif timeLeft < 60 and timeLeft >= 21 then
-- between 60s and 21s (green)
self.cooldownFont:SetTextColor(0.7, 1, 0)
self.cooldownFont:SetText(timeLeft)
self.cooldownFont:SetFont(Gladdy.LSM:Fetch("font", Gladdy.db.racialFont), (self:GetWidth()/2 - 1) * Gladdy.db.racialFontScale, "OUTLINE")
elseif timeLeft < 20.9 and timeLeft >= 11 then
-- between 20s and 11s (green)
self.cooldownFont:SetTextColor(0, 1, 0)
self.cooldownFont:SetText(timeLeft)
self.cooldownFont:SetFont(Gladdy.LSM:Fetch("font", Gladdy.db.racialFont), (self:GetWidth()/2 - 1) * Gladdy.db.racialFontScale, "OUTLINE")
elseif timeLeft <= 10 and timeLeft >= 5 then
-- between 10s and 5s (orange)
self.cooldownFont:SetTextColor(1, 0.7, 0)
self.cooldownFont:SetFormattedText("%.1f", timeLeft)
self.cooldownFont:SetFont(Gladdy.LSM:Fetch("font", Gladdy.db.racialFont), (self:GetWidth()/2 - 1) * Gladdy.db.racialFontScale, "OUTLINE")
elseif timeLeft < 5 and timeLeft > 0 then
-- between 5s and 1s (red)
self.cooldownFont:SetTextColor(1, 0, 0)
self.cooldownFont:SetFormattedText("%.1f", timeLeft >= 0.0 and timeLeft or 0.0)
self.cooldownFont:SetFont(Gladdy.LSM:Fetch("font", Gladdy.db.racialFont), (self:GetWidth()/2 - 1) * Gladdy.db.racialFontScale, "OUTLINE")
else
self.cooldownFont:SetText("")
end
end
end
function Racial:CreateFrame(unit)
local racial = CreateFrame("Button", "GladdyTrinketButton" .. unit, Gladdy.buttons[unit])
racial:EnableMouse(false)
racial.texture = racial:CreateTexture(nil, "BACKGROUND")
racial.texture:SetAllPoints(racial)
racial.texture:SetMask("Interface\\AddOns\\Gladdy\\Images\\mask")
--racial.texture:SetTexture("Interface\\Icons\\INV_Jewelry_TrinketPVP_02")
racial.cooldown = CreateFrame("Cooldown", nil, racial, "CooldownFrameTemplate")
racial.cooldown.noCooldownCount = true --Gladdy.db.racialDisableOmniCC
racial.cooldown:SetHideCountdownNumbers(true)
racial.cooldownFrame = CreateFrame("Frame", nil, racial)
racial.cooldownFrame:ClearAllPoints()
racial.cooldownFrame:SetPoint("TOPLEFT", racial, "TOPLEFT")
racial.cooldownFrame:SetPoint("BOTTOMRIGHT", racial, "BOTTOMRIGHT")
racial.cooldownFont = racial.cooldownFrame:CreateFontString(nil, "OVERLAY")
racial.cooldownFont:SetFont(Gladdy.LSM:Fetch("font", Gladdy.db.racialFont), 20, "OUTLINE")
--trinket.cooldownFont:SetAllPoints(trinket.cooldown)
racial.cooldownFont:SetJustifyH("CENTER")
racial.cooldownFont:SetPoint("CENTER")
racial.borderFrame = CreateFrame("Frame", nil, racial)
racial.borderFrame:SetAllPoints(racial)
racial.texture.overlay = racial.borderFrame:CreateTexture(nil, "OVERLAY")
racial.texture.overlay:SetAllPoints(racial)
racial.texture.overlay:SetTexture(Gladdy.db.racialBorderStyle)
racial:SetScript("OnUpdate", iconTimer)
Gladdy.buttons[unit].racial = racial
self.frames[unit] = racial
end
function Racial:UpdateFrame(unit)
local racial = self.frames[unit]
if (not racial) then
return
end
local width, height = Gladdy.db.racialSize * Gladdy.db.racialWidthFactor, Gladdy.db.racialSize
racial:SetWidth(width)
racial:SetHeight(height)
racial.cooldown:SetWidth(width - width/16)
racial.cooldown:SetHeight(height - height/16)
racial.cooldown:ClearAllPoints()
racial.cooldown:SetPoint("CENTER", racial, "CENTER")
racial.cooldown.noCooldownCount = true -- Gladdy.db.racialDisableOmniCC
racial.cooldown:SetAlpha(Gladdy.db.racialCooldownAlpha)
racial.texture:ClearAllPoints()
racial.texture:SetAllPoints(racial)
racial.texture.overlay:SetTexture(Gladdy.db.racialBorderStyle)
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 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)
elseif (Gladdy.db.racialPos == "LEFT") then
racial:SetPoint(ANCHORS[Gladdy.db.racialPos], parent, Gladdy.db.racialPos, -Gladdy.db.padding + Gladdy.db.racialXOffset, Gladdy.db.racialYOffset)
elseif (Gladdy.db.racialPos == "TOP") then
racial:SetPoint(ANCHORS[Gladdy.db.racialPos], parent, Gladdy.db.racialPos, Gladdy.db.racialXOffset, Gladdy.db.padding + Gladdy.db.racialYOffset)
elseif (Gladdy.db.racialPos == "BOTTOM") then
racial:SetPoint(ANCHORS[Gladdy.db.racialPos], parent, Gladdy.db.racialPos, Gladdy.db.racialXOffset, -Gladdy.db.padding + Gladdy.db.racialYOffset)
end
if (Gladdy.db.racialEnabled == false) then
racial:Hide()
else
racial:Show()
end
end
function Racial:JOINED_ARENA()
self:RegisterEvent("ARENA_COOLDOWNS_UPDATE")
self:SetScript("OnEvent", function(self, event, ...)
if self[event] then
self[event](self, ...)
end
end)
end
function Racial:RACIAL_USED(unit)
local racial = self.frames[unit]
local button = Gladdy.buttons[unit]
if (not racial or not button or not button.race) then
return
end
Racial:Used(unit, GetTime(), Gladdy:Racials()[button.race].duration)
end
function Racial:Used(unit, startTime, duration)
local racial = self.frames[unit]
if (not racial) then
return
end
if not racial.active then
racial.timeLeft = duration
if not Gladdy.db.trinketDisableCircle then racial.cooldown:SetCooldown(startTime, duration) end
racial.active = true
end
end
function Racial:ENEMY_SPOTTED(unit)
local racial = self.frames[unit]
if (not racial) then
return
end
racial.texture:SetTexture(Gladdy:Racials()[Gladdy.buttons[unit].race].texture)
end
function Racial:ResetUnit(unit)
local racial = self.frames[unit]
if (not racial) then
return
end
racial.texture:SetTexture(nil)
racial.timeLeft = nil
racial.active = false
racial.cooldown:Clear()
racial.cooldownFont:SetText("")
end
function Racial:Test(unit)
Racial:ENEMY_SPOTTED(unit)
if (unit == "arena1" or unit == "arena3") then
Racial:Used(unit, GetTime(), Gladdy:Racials()[Gladdy.buttons[unit].race].duration)
end
end
function Racial:GetOptions()
return {
headerTrinket = {
type = "header",
name = L["Racial"],
order = 2,
},
racialEnabled = Gladdy:option({
type = "toggle",
name = L["Enabled"],
desc = L["Enable racial icon"],
order = 3,
}),
group = {
type = "group",
childGroups = "tree",
name = "Frame",
order = 4,
args = {
general = {
type = "group",
name = L["Size"],
order = 1,
args = {
header = {
type = "header",
name = L["Size"],
order = 4,
},
racialSize = Gladdy:option({
type = "range",
name = L["Icon size"],
min = 5,
max = 100,
step = 1,
order = 4,
}),
racialWidthFactor = Gladdy:option({
type = "range",
name = L["Icon width factor"],
min = 0.5,
max = 2,
step = 0.05,
order = 6,
}),
},
},
cooldown = {
type = "group",
name = L["Cooldown"],
order = 2,
args = {
header = {
type = "header",
name = L["Cooldown"],
order = 4,
},
racialDisableCircle = Gladdy:option({
type = "toggle",
name = L["No Cooldown Circle"],
order = 7,
}),
racialCooldownAlpha = Gladdy:option({
type = "range",
name = L["Cooldown circle alpha"],
min = 0,
max = 1,
step = 0.1,
order = 8,
}),
},
},
font = {
type = "group",
name = L["Font"],
order = 3,
args = {
header = {
type = "header",
name = L["Font"],
order = 4,
},
racialFont = Gladdy:option({
type = "select",
name = L["Font"],
desc = L["Font of the cooldown"],
order = 11,
dialogControl = "LSM30_Font",
values = AceGUIWidgetLSMlists.font,
}),
racialFontScale = Gladdy:option({
type = "range",
name = L["Font scale"],
desc = L["Scale of the font"],
order = 12,
min = 0.1,
max = 2,
step = 0.1,
}),
},
},
position = {
type = "group",
name = L["Position"],
order = 4,
args = {
header = {
type = "header",
name = L["Position"],
order = 4,
},
racialAnchor = Gladdy:option({
type = "select",
name = L["Anchor"],
desc = L["This changes the anchor of the racial icon"],
order = 20,
values = {
["trinket"] = L["Trinket"],
["classIcon"] = L["Class Icon"],
["healthBar"] = L["Health Bar"],
["powerBar"] = L["Power Bar"],
},
}),
racialPos = Gladdy:option({
type = "select",
name = L["Position"],
desc = L["This changes position relative to its anchor of the racial icon"],
order = 21,
values = {
["LEFT"] = L["Left"],
["RIGHT"] = L["Right"],
["TOP"] = L["Top"],
["BOTTOM"] = L["Bottom"],
},
}),
racialXOffset = Gladdy:option({
type = "range",
name = L["Horizontal offset"],
order = 23,
min = -400,
max = 400,
step = 0.1,
}),
racialYOffset = Gladdy:option({
type = "range",
name = L["Vertical offset"],
order = 24,
min = -400,
max = 400,
step = 0.1,
}),
},
},
border = {
type = "group",
name = L["Border"],
order = 4,
args = {
header = {
type = "header",
name = L["Border"],
order = 4,
},
racialBorderStyle = Gladdy:option({
type = "select",
name = L["Border style"],
order = 31,
values = Gladdy:GetIconStyles()
}),
racialBorderColor = Gladdy:colorOption({
type = "color",
name = L["Border color"],
desc = L["Color of the border"],
order = 32,
hasAlpha = true,
}),
},
},
},
},
}
end
+32 -39
View File
@@ -1,5 +1,5 @@
local select, pairs, string_lower, tremove, tinsert, format, string_gsub, ipairs = select, pairs, string.lower, tremove, tinsert, format, string.gsub, ipairs
local UnitExists, UnitIsUnit, UnitName = UnitExists, UnitIsUnit, UnitName
local UnitExists, UnitIsUnit, UnitName, UnitIsEnemy = UnitExists, UnitIsUnit, UnitName, UnitIsEnemy
local C_NamePlate = C_NamePlate
local Gladdy = LibStub("Gladdy")
local L = Gladdy.L
@@ -26,7 +26,7 @@ local totemData = {
[string_lower("Disease Cleansing Totem")] = {id = 8170,texture = select(3, GetSpellInfo(8170)), color = {r = 0, g = 0, b = 0, a = 1}, enabled = true, priority = 0}, -- Disease Cleansing Totem
[string_lower("Healing Stream Totem")] = {id = 5394,texture = select(3, GetSpellInfo(5394)), color = {r = 0, g = 0, b = 0, a = 1}, enabled = true, priority = 0}, -- Healing Stream Totem
[string_lower("Mana Tide Totem")] = {id = 16190,texture = select(3, GetSpellInfo(16190)), color = {r = 0.078, g = 0.9, b = 0.16, a = 1}, enabled = true, priority = 3}, -- Mana Tide Totem
[string_lower("Mana Spring Totem")] = {id = 5675,texture = "Interface\\AddOns\\Gladdy\\Images\\Totems\\Spell_Nature_ManaRegenTotem_edit", color = {r = 0, g = 0, b = 0, a = 1}, enabled = true, priority = 1}, -- Mana Spring Totem
[string_lower("Mana Spring Totem")] = {id = 5675,texture = select(3, GetSpellInfo(5675)), color = {r = 0, g = 0, b = 0, a = 1}, enabled = true, priority = 1}, -- Mana Spring Totem
-- Earth
[string_lower("Earthbind Totem")] = {id = 2484,texture = select(3, GetSpellInfo(2484)), color = {r = 0.5, g = 0.5, b = 0.5, a = 1}, enabled = true, priority = 1}, -- Earthbind Totem
[string_lower("Stoneclaw Totem")] = {id = 5730,texture = select(3, GetSpellInfo(5730)), color = {r = 0, g = 0, b = 0, a = 1}, enabled = true, priority = 0}, -- Stoneclaw Totem
@@ -36,13 +36,13 @@ local totemData = {
[string_lower("Tremor Totem")] = {id = 8143,texture = select(3, GetSpellInfo(8143)), color = {r = 1, g = 0.9, b = 0.1, a = 1}, enabled = true, priority = 3}, -- Tremor Totem
-- Air
[string_lower("Grounding Totem")] = {id = 8177,texture = select(3, GetSpellInfo(8177)), color = {r = 0, g = 0.53, b = 0.92, a = 1}, enabled = true, priority = 3}, -- Grounding Totem
[string_lower("Grace of Air Totem")] = {id = 8835,texture = "Interface\\AddOns\\Gladdy\\Images\\Totems\\Spell_Nature_InvisibilityTotem_edit", color = {r = 0, g = 0, b = 0, a = 1}, enabled = true, priority = 0}, -- Grace of Air Totem
[string_lower("Grace of Air Totem")] = {id = 8835,texture = select(3, GetSpellInfo(8835)), color = {r = 0, g = 0, b = 0, a = 1}, enabled = true, priority = 0}, -- Grace of Air Totem
[string_lower("Nature Resistance Totem")] = {id = 10595,texture = select(3, GetSpellInfo(10595)), color = {r = 0, g = 0, b = 0, a = 1}, enabled = true, priority = 0}, -- Nature Resistance Totem
[string_lower("Windfury Totem")] = {id = 8512,texture = "Interface\\AddOns\\Gladdy\\Images\\Totems\\Spell_Nature_Windfury_edit", color = {r = 0.96, g = 0, b = 0.07, a = 1}, enabled = true, priority = 2}, -- Windfury Totem
[string_lower("Sentry Totem")] = {id = 6495, texture = "Interface\\AddOns\\Gladdy\\Images\\Totems\\Spell_Nature_RemoveCurse_edit", color = {r = 0, g = 0, b = 0, a = 1}, enabled = true, priority = 0}, -- Sentry Totem
[string_lower("Windfury Totem")] = {id = 8512,texture = select(3, GetSpellInfo(8512)), color = {r = 0.96, g = 0, b = 0.07, a = 1}, enabled = true, priority = 2}, -- Windfury Totem
[string_lower("Sentry Totem")] = {id = 6495, texture = select(3, GetSpellInfo(6495)), color = {r = 0, g = 0, b = 0, a = 1}, enabled = true, priority = 0}, -- Sentry Totem
[string_lower("Windwall Totem")] = {id = 15107,texture = select(3, GetSpellInfo(15107)), color = {r = 0, g = 0, b = 0, a = 1}, enabled = true, priority = 0}, -- Windwall Totem
[string_lower("Wrath of Air Totem")] = {id = 3738,texture = "Interface\\AddOns\\Gladdy\\Images\\Totems\\Spell_Nature_SlowingTotem_edit", color = {r = 0, g = 0, b = 0, a = 1}, enabled = true, priority = 0}, -- Wrath of Air Totem
[string_lower("Tranquil Air Totem")] = {id = 25908,texture = "Interface\\Icons\\INV_Staff_07", color = {r = 0, g = 0, b = 0, a = 1}, enabled = true, priority = 0}, -- Tranquil Air Totem
[string_lower("Wrath of Air Totem")] = {id = 3738,texture = select(3, GetSpellInfo(3738)), color = {r = 0, g = 0, b = 0, a = 1}, enabled = true, priority = 0}, -- Wrath of Air Totem
[string_lower("Tranquil Air Totem")] = {id = 25908,texture = select(3, GetSpellInfo(25908)), color = {r = 0, g = 0, b = 0, a = 1}, enabled = true, priority = 0}, -- Tranquil Air Totem
}
local localizedTotemData = {
["default"] = {
@@ -77,38 +77,6 @@ local localizedTotemData = {
[string_lower(select(1, GetSpellInfo(3738)))] = totemData[string_lower("Wrath of Air Totem")], -- Wrath of Air Totem
[string_lower(select(1, GetSpellInfo(25908)))] = totemData[string_lower("Tranquil Air Totem")], -- Tranquil Air Totem
},
["frFR"] = {
[string_lower("Totem incendiaire")] = totemData[string_lower("Searing Totem")],
[string_lower("Totem Langue de feu")] = totemData[string_lower("Flametongue Totem")],
[string_lower("Totem de lien terrestre")] = totemData[string_lower("Earthbind Totem")],
[string_lower("Totem de Griffes de pierre")] = totemData[string_lower("Stoneclaw Totem")],
[string_lower("Totem Nova de feu")] = totemData[string_lower("Fire Nova Totem")],
[string_lower("Totem de Magma")] = totemData[string_lower("Magma Totem")],
[string_lower("Totem de courroux")] = totemData[string_lower("Totem of Wrath")],
[string_lower("Totem d'\195\169lementaire de feu")] = totemData[string_lower("Fire Elemental Totem")],
[string_lower("Totem d'\195\169l\195\169mentaire de feu")] = totemData[string_lower("Fire Elemental Totem")],
[string_lower("Totem de Peau de pierre")] = totemData[string_lower("Stoneskin Totem")],
[string_lower("Totem d'\195\169lementaire de terre")] = totemData[string_lower("Earth Elemental Totem")],
[string_lower("Totem d'\195\169l\195\169mentaire de terre")] = totemData[string_lower("Earth Elemental Totem")],
[string_lower("Totem de Force de la Terre")] = totemData[string_lower("Strength of Earth Totem")],
[string_lower("Totem de r\195\169sistance au Givre")] = totemData[string_lower("Frost Resistance Totem")],
[string_lower("Totem de r\195\169sistance au Feu")] = totemData[string_lower("Fire Resistance Totem")],
[string_lower("Totem de Gl\195\168be")] = totemData[string_lower("Grounding Totem")],
[string_lower("Totem de Gr\195\162ce a\195\169rienne")] = totemData[string_lower("Grace of Air Totem")],
[string_lower("Totem de R\195\169sistance \195\160 la Nature")] = totemData[string_lower("Nature Resistance Totem")],
[string_lower("Totem Furie-des-vents")] = totemData[string_lower("Windfury Totem")],
[string_lower("Totem Sentinelle")] = totemData[string_lower("Sentry Totem")],
[string_lower("Totem de Mur des vents")] = totemData[string_lower("Windwall Totem")],
[string_lower("Totem de courroux de l'air")] = totemData[string_lower("Wrath of Air Totem")],
[string_lower("Totem de S\195\169isme")] = totemData[string_lower("Tremor Totem")],
[string_lower("Totem gu\195\169risseur")] = totemData[string_lower("Healing Stream Totem")],
[string_lower("Totem de Purification du poison")] = totemData[string_lower("Poison Cleansing Totem")],
[string_lower("Totem Fontaine de mana")] = totemData[string_lower("Mana Spring Totem")],
[string_lower("Totem de Purification des maladies")] = totemData[string_lower("Disease Cleansing Totem")],
[string_lower("Totem de purification")] = totemData[string_lower("Disease Cleansing Totem")],
[string_lower("Totem de Vague de mana")] = totemData[string_lower("Mana Tide Totem")],
[string_lower("Totem de Tranquillit\195\169 de l'air")] = totemData[string_lower("Tranquil Air Totem")],
}
}
local function GetTotemColorDefaultOptions()
@@ -222,6 +190,8 @@ end
local TotemPlates = Gladdy:NewModule("TotemPlates", nil, {
npTotems = true,
npTotemsShowFriendly = true,
npTotemsShowEnemy = true,
npTotemPlatesBorderStyle = "Interface\\AddOns\\Gladdy\\Images\\Border_rounded_blp",
npTotemPlatesSize = 40,
npTotemPlatesWidthFactor = 1,
@@ -303,6 +273,13 @@ end
function TotemPlates:NAME_PLATE_UNIT_ADDED(...)
local unitID = ...
local isEnemy = UnitIsEnemy("player", unitID)
if not Gladdy.db.npTotemsShowEnemy and isEnemy then
return
end
if not Gladdy.db.npTotemsShowFriendly and not isEnemy then
return
end
local nameplateName = UnitName(unitID)
local totemName = string_gsub(nameplateName, "^%s+", "") --trim
totemName = string_gsub(totemName, "%s+$", "") --trim
@@ -320,6 +297,7 @@ function TotemPlates:NAME_PLATE_UNIT_ADDED(...)
nameplate.gladdyTotemFrame:SetWidth(Gladdy.db.npTotemPlatesSize * Gladdy.db.npTotemPlatesWidthFactor)
nameplate.gladdyTotemFrame:SetHeight(Gladdy.db.npTotemPlatesSize)
nameplate.gladdyTotemFrame.totemIcon = nameplate.gladdyTotemFrame:CreateTexture(nil, "BACKGROUND")
nameplate.gladdyTotemFrame.totemIcon:SetMask("Interface\\AddOns\\Gladdy\\Images\\mask")
nameplate.gladdyTotemFrame.totemIcon:ClearAllPoints()
nameplate.gladdyTotemFrame.totemIcon:SetPoint("TOPLEFT", nameplate.gladdyTotemFrame, "TOPLEFT")
nameplate.gladdyTotemFrame.totemIcon:SetPoint("BOTTOMRIGHT", nameplate.gladdyTotemFrame, "BOTTOMRIGHT")
@@ -414,6 +392,21 @@ function TotemPlates:GetOptions()
name = L["Totem icons on/off"],
desc = L["Turns totem icons instead of nameplates on or off. (Requires reload)"],
order = 3,
width = 0.9,
}),
npTotemsShowFriendly = Gladdy:option({
type = "toggle",
name = L["Show friendly"],
desc = L["Turns totem icons instead of nameplates on or off. (Requires reload)"],
order = 4,
width = 0.65,
}),
npTotemsShowEnemy = Gladdy:option({
type = "toggle",
name = L["Show enemy"],
desc = L["Turns totem icons instead of nameplates on or off. (Requires reload)"],
order = 5,
width = 0.6,
}),
group = {
type = "group",
+49 -46
View File
@@ -1,4 +1,5 @@
local ceil, floor, string_format, tonumber = ceil, floor, string.format, tonumber
local C_PvP = C_PvP
local CreateFrame = CreateFrame
local GetTime = GetTime
@@ -25,11 +26,56 @@ function Trinket:Initialize()
self:RegisterMessage("JOINED_ARENA")
end
local function iconTimer(self, elapsed)
if (self.active) then
if (self.timeLeft <= 0) then
self.active = false
self.cooldown:Clear()
Gladdy:SendMessage("TRINKET_READY", self.unit)
else
self.timeLeft = self.timeLeft - elapsed
end
local timeLeft = ceil(self.timeLeft)
if timeLeft >= 60 then
-- more than 1 minute
self.cooldownFont:SetTextColor(1, 1, 0)
self.cooldownFont:SetText(floor(timeLeft / 60) .. ":" .. string_format("%02.f", floor(timeLeft - floor(timeLeft / 60) * 60)))
self.cooldownFont:SetFont(Gladdy.LSM:Fetch("font", Gladdy.db.trinketFont), (self:GetWidth()/2 - 0.15*self:GetWidth()) * Gladdy.db.trinketFontScale, "OUTLINE")
elseif timeLeft < 60 and timeLeft >= 21 then
-- between 60s and 21s (green)
self.cooldownFont:SetTextColor(0.7, 1, 0)
self.cooldownFont:SetText(timeLeft)
self.cooldownFont:SetFont(Gladdy.LSM:Fetch("font", Gladdy.db.trinketFont), (self:GetWidth()/2 - 1) * Gladdy.db.trinketFontScale, "OUTLINE")
elseif timeLeft < 20.9 and timeLeft >= 11 then
-- between 20s and 11s (green)
self.cooldownFont:SetTextColor(0, 1, 0)
self.cooldownFont:SetText(timeLeft)
self.cooldownFont:SetFont(Gladdy.LSM:Fetch("font", Gladdy.db.trinketFont), (self:GetWidth()/2 - 1) * Gladdy.db.trinketFontScale, "OUTLINE")
elseif timeLeft <= 10 and timeLeft >= 5 then
-- between 10s and 5s (orange)
self.cooldownFont:SetTextColor(1, 0.7, 0)
self.cooldownFont:SetFormattedText("%.1f", timeLeft)
self.cooldownFont:SetFont(Gladdy.LSM:Fetch("font", Gladdy.db.trinketFont), (self:GetWidth()/2 - 1) * Gladdy.db.trinketFontScale, "OUTLINE")
elseif timeLeft < 5 and timeLeft > 0 then
-- between 5s and 1s (red)
self.cooldownFont:SetTextColor(1, 0, 0)
self.cooldownFont:SetFormattedText("%.1f", timeLeft >= 0.0 and timeLeft or 0.0)
self.cooldownFont:SetFont(Gladdy.LSM:Fetch("font", Gladdy.db.trinketFont), (self:GetWidth()/2 - 1) * Gladdy.db.trinketFontScale, "OUTLINE")
else
self.cooldownFont:SetText("")
end
end
end
function Trinket:CreateFrame(unit)
local trinket = CreateFrame("Button", "GladdyTrinketButton" .. unit, Gladdy.buttons[unit])
trinket:EnableMouse(false)
trinket.texture = trinket:CreateTexture(nil, "BACKGROUND")
trinket.texture:SetAllPoints(trinket)
trinket.texture:SetTexture("Interface\\Icons\\INV_Jewelry_TrinketPVP_02")
trinket.texture:SetMask("Interface\\AddOns\\Gladdy\\Images\\mask")
trinket.cooldown = CreateFrame("Cooldown", nil, trinket, "CooldownFrameTemplate")
trinket.cooldown.noCooldownCount = true --Gladdy.db.trinketDisableOmniCC
@@ -52,55 +98,12 @@ function Trinket:CreateFrame(unit)
trinket.texture.overlay:SetAllPoints(trinket)
trinket.texture.overlay:SetTexture(Gladdy.db.trinketBorderStyle)
local function formatTimer(num, numDecimalPlaces)
return tonumber(string_format("%." .. (numDecimalPlaces or 0) .. "f", num))
end
trinket.unit = unit
trinket:SetScript("OnUpdate", function(self, elapsed)
if (self.active) then
if (self.timeLeft <= 0) then
self.active = false
self.cooldown:Clear()
Gladdy:SendMessage("TRINKET_READY", unit)
else
self.timeLeft = self.timeLeft - elapsed
end
local timeLeft = ceil(self.timeLeft)
local timeLeftMilliSec = formatTimer(self.timeLeft, 1)
if timeLeft >= 60 then
-- more than 1 minute
self.cooldownFont:SetTextColor(1, 1, 0)
self.cooldownFont:SetText(floor(timeLeft / 60) .. ":" .. string_format("%02.f", floor(timeLeft - floor(timeLeft / 60) * 60)))
self.cooldownFont:SetFont(Gladdy.LSM:Fetch("font", Gladdy.db.trinketFont), (trinket:GetWidth()/2 - 0.15*trinket:GetWidth()) * Gladdy.db.trinketFontScale, "OUTLINE")
elseif timeLeft < 60 and timeLeft >= 21 then
-- between 60s and 21s (green)
self.cooldownFont:SetTextColor(0.7, 1, 0)
self.cooldownFont:SetText(timeLeft)
self.cooldownFont:SetFont(Gladdy.LSM:Fetch("font", Gladdy.db.trinketFont), (trinket:GetWidth()/2 - 1) * Gladdy.db.trinketFontScale, "OUTLINE")
elseif timeLeft < 20.9 and timeLeft >= 11 then
-- between 20s and 11s (green)
self.cooldownFont:SetTextColor(0, 1, 0)
self.cooldownFont:SetText(timeLeft)
self.cooldownFont:SetFont(Gladdy.LSM:Fetch("font", Gladdy.db.trinketFont), (trinket:GetWidth()/2 - 1) * Gladdy.db.trinketFontScale, "OUTLINE")
elseif timeLeftMilliSec <= 10 and timeLeftMilliSec >= 5 then
-- between 10s and 5s (orange)
self.cooldownFont:SetTextColor(1, 0.7, 0)
self.cooldownFont:SetFormattedText("%.1f", timeLeftMilliSec)
self.cooldownFont:SetFont(Gladdy.LSM:Fetch("font", Gladdy.db.trinketFont), (trinket:GetWidth()/2 - 1) * Gladdy.db.trinketFontScale, "OUTLINE")
elseif timeLeftMilliSec < 5 and timeLeftMilliSec > 0 then
-- between 5s and 1s (red)
self.cooldownFont:SetTextColor(1, 0, 0)
self.cooldownFont:SetFormattedText("%.1f", timeLeftMilliSec)
self.cooldownFont:SetFont(Gladdy.LSM:Fetch("font", Gladdy.db.trinketFont), (trinket:GetWidth()/2 - 1) * Gladdy.db.trinketFontScale, "OUTLINE")
else
self.cooldownFont:SetText("")
end
end
end)
trinket:SetScript("OnUpdate", iconTimer)
self.frames[unit] = trinket
Gladdy.buttons[unit].trinket = trinket
end
function Trinket:UpdateFrame(unit)
+7 -4
View File
@@ -1,3 +1,5 @@
local str_match, tonumber, tostring = string.match, tonumber, tostring
local UnitName = UnitName
local Gladdy = LibStub("Gladdy")
@@ -24,19 +26,20 @@ end
function VersionCheck:Test(unit)
if unit == "arena1" then
self:RegisterComm("GladdyVCheck", VersionCheck.OnCommReceived)
self:SendCommMessage("GladdyVCheck", Gladdy.version, "RAID", self.playerName)
self:SendCommMessage("GladdyVCheck", tostring(Gladdy.version_num), "RAID", self.playerName)
end
end
function VersionCheck.OnCommReceived(prefix, message, distribution, sender)
if sender ~= VersionCheck.playerName then
local addonVersion = Gladdy.version
if (message == addonVersion) then
local addonVersion = Gladdy.version_num
message = tonumber(message)
if message and message <= Gladdy.version_num then
--Gladdy:Print("Version", "\"".. addonVersion.."\"", "is up to date")
else
Gladdy:Warn("Current version", "\"".. addonVersion.."\"", "is outdated. Most recent version is", "\"".. message.."\"")
Gladdy:Warn("Please download the latest Gladdy version at:")
Gladdy:Warn("https://github.com/XiconQoo/Gladdy")
Gladdy:Warn("https://github.com/XiconQoo/Gladdy-TBC")
end
end
end
+27 -218
View File
@@ -5,224 +5,33 @@ local XiconProfiles = Gladdy:NewModule("XiconProfiles", nil, {
})
function XiconProfiles:ApplyKlimp()
Gladdy.db.castBarXOffset = -7
Gladdy.db.powerActual = false
Gladdy.db.npCastbarsBorderSize = 4
Gladdy.db.healthBarTexture = "Minimalist"
Gladdy.db.highlight = false
Gladdy.db.healthMax = false
Gladdy.db.castBarYOffset = -24
Gladdy.db.castBarFont = "Friz Quadrata TT"
Gladdy.db.drXOffset = -7
Gladdy.db.classIconBorderColor.a = 0.6200000047683716
Gladdy.db.auraBorderStyle = "Interface\\AddOns\\Gladdy\\Images\\Border_squared_blp"
Gladdy.db.powerBarHeight = 7
Gladdy.db.powerBarFontSize = 8
Gladdy.db.announcements.dest = "party"
Gladdy.db.powerMax = false
Gladdy.db.healthBarFontSize = 17
Gladdy.db.healthBarBorderSize = 5
Gladdy.db.npCastbarsWidth = 85
Gladdy.db.npCastbarsTexture = "Minimalist"
Gladdy.db.cooldown = false
Gladdy.db.barWidth = 190
Gladdy.db.healthBarBgColor.a = 0.6700000166893005
Gladdy.db.drCooldownPos = "LEFT"
Gladdy.db.npCastbarsFont = "Friz Quadrata TT"
Gladdy.db.trinketSize = 40
Gladdy.db.y = 501.7654729182068
Gladdy.db.x = 1048.626941536808
Gladdy.db.bottomMargin = 2
Gladdy.db.npCastbarsIconSize = 14
Gladdy.db.castBarTexture = "Minimalist"
Gladdy.db.drFont = "Friz Quadrata TT"
Gladdy.db.highlightBorderSize = 1
Gladdy.db.healthBarFont = "Friz Quadrata TT"
Gladdy.db.padding = 0
Gladdy.db.castBarBorderSize = 5
Gladdy.db.powerBarFontColor.a = 0
Gladdy.db.classIconSize = 40
Gladdy.db.npCastbarsHeight = 14
Gladdy.db.castBarIconColor.a = 0.6200000047683716
Gladdy.db.trinketFontScale = 1.3
Gladdy.db.trinketBorderColor.a = 0.6200000047683716
Gladdy.db.leaderBorder = false
Gladdy.db.powerPercentage = true
Gladdy.db.drYOffset = 33
Gladdy.db.healthBarHeight = 40
Gladdy.db.powerBarTexture = "Minimalist"
Gladdy.db.cooldownFont = "Friz Quadrata TT"
Gladdy.db.powerBarFont = "Friz Quadrata TT"
Gladdy.db.auraFont = "Friz Quadrata TT"
Gladdy.db.powerBarBorderSize = 3
Gladdy.db.trinketFont = "Friz Quadrata TT"
Gladdy.db.castBarIconSize = 20
Gladdy.db.cooldownYOffset = 15.10000000000002
Gladdy.db.cooldownXOffset = 5
Gladdy.db.cooldownMaxIconsPerLine = 4
Gladdy.db.cooldownBorderStyle = "Interface\\AddOns\\Gladdy\\Images\\Border_squared_blp"
Gladdy.db.cooldownYPos = "RIGHT"
Gladdy.db.cooldownCooldownAlpha = 0.6000000000000001
Gladdy.db.cooldownSize = 25.25495910644531
Gladdy.db.cooldownFontScale = 0.6
Gladdy.db.cooldownBorderColor = {
b = 0.3019607843137255,
g = 0.3019607843137255,
r = 0.3019607843137255,
}
Gladdy.db.locked = true
Gladdy.db.classIconWidthFactor = 1
Gladdy.db.buffsFontScale = 0.8
Gladdy.db.buffsIconSize = 24
Gladdy.db.buffsCooldownAlpha = 0.8
Gladdy.db.trinketWidthFactor = 1
Gladdy.db.frameScale = 1
Gladdy.db.drWidthFactor = 1.3
Gladdy:UpdateFrame()
local deserialized = Gladdy.modules["ExportImport"]:Decode(Gladdy:GetKlimpProfile())
if deserialized then
Gladdy.modules["ExportImport"]:ApplyImport(deserialized, Gladdy.db)
end
Gladdy:Reset()
Gladdy:HideFrame()
Gladdy:ToggleFrame(3)
end
function XiconProfiles:ApplyKnall()
Gladdy.db["cooldownCooldownAlpha"] = 0.6000000000000001
Gladdy.db["buffsIconPadding"] = 1.5
Gladdy.db["powerBarBorderSize"] = 5.5
Gladdy.db["trinketSize"] = 66
Gladdy.db["cooldownFontScale"] = 0.8
Gladdy.db["healthBarHeight"] = 54
Gladdy.db["drYOffset"] = -14
Gladdy.db["classIconSize"] = 70
Gladdy.db["padding"] = 0
Gladdy.db["buffsFontScale"] = 0.8
Gladdy.db["healthBarFontColor"]["a"] = 0
Gladdy.db["buffsCooldownGrowDirection"] = "LEFT"
Gladdy.db["cooldownXOffset"] = 1
Gladdy.db["castBarIconSize"] = 26
Gladdy.db["bottomMargin"] = -35
Gladdy.db["y"] = 457.111085058903
Gladdy.db["x"] = 993.110763706718
Gladdy.db["locked"] = true
Gladdy.db["drCooldownPos"] = "LEFT"
Gladdy.db["castBarWidth"] = 162
Gladdy.db["healthBarBorderSize"] = 8.5
Gladdy.db["buffsYOffset"] = -47
Gladdy.db["frameScale"] = 0.9
Gladdy.db["announcements"]["dest"] = "fct"
Gladdy.db["powerBarFontSize"] = 8.576186180114746
Gladdy.db["powerBarHeight"] = 11
Gladdy.db["drIconPadding"] = 2
Gladdy.db["buffsXOffset"] = -245.7
Gladdy.db["castBarYOffset"] = -13.59999999999997
Gladdy.db["drFontScale"] = 0.8
Gladdy.db["castBarHeight"] = 26
Gladdy.db["castBarHeight"] = 26
Gladdy.db["buffsCooldownAlpha"] = 0.8
Gladdy.db["drCooldownAlpha"] = 0.7000000000000001
Gladdy.db["buffsIconSize"] = 35
Gladdy:UpdateFrame()
local deserialized = Gladdy.modules["ExportImport"]:Decode(Gladdy:GetKnallProfile())
if deserialized then
Gladdy.modules["ExportImport"]:ApplyImport(deserialized, Gladdy.db)
end
Gladdy:Reset()
Gladdy:HideFrame()
Gladdy:ToggleFrame(3)
end
function XiconProfiles:ApplyClassic()
Gladdy.db["buffsIconSize"] = 29
Gladdy.db["drCooldownAlpha"] = 0.8
Gladdy.db["castBarBgColor"] = {
["a"] = 0.4000000357627869,
["b"] = 0.7372549019607844,
["g"] = 0.7372549019607844,
["r"] = 0.7372549019607844,
}
Gladdy.db["npCastbarsBorderSize"] = 4
Gladdy.db["healthBarTexture"] = "Minimalist"
Gladdy.db["drFontScale"] = 0.9
Gladdy.db["highlight"] = false
Gladdy.db["buffsCooldownPos"] = "LEFT"
Gladdy.db["castBarYOffset"] = -67
Gladdy.db["castBarFont"] = "Friz Quadrata TT"
Gladdy.db["buffsXOffset"] = -1
Gladdy.db["drXOffset"] = -1
Gladdy.db["classIconBorderColor"]["a"] = 0
Gladdy.db["cooldownYOffset"] = 10
Gladdy.db["auraBorderStyle"] = "Interface\\AddOns\\Gladdy\\Images\\Border_squared_blp"
Gladdy.db["powerBarHeight"] = 16
Gladdy.db["powerBarFontSize"] = 10.21056747436523
Gladdy.db["announcements"]["dest"] = "party"
Gladdy.db["healthBarFontSize"] = 13.42293167114258
Gladdy.db["buffsYOffset"] = -2.099999999999966
Gladdy.db["healthBarBorderSize"] = 4
Gladdy.db["healthBarBorderStyle"] = "Gladdy Tooltip squared"
Gladdy.db["barWidth"] = 190
Gladdy.db["castBarWidth"] = 265
Gladdy.db["cooldownMaxIconsPerLine"] = 4
Gladdy.db["drCooldownPos"] = "LEFT"
Gladdy.db["locked"] = true
Gladdy.db["npCastbarsFont"] = "Friz Quadrata TT"
Gladdy.db["cooldownFontScale"] = 0.6
Gladdy.db["auraFont"] = "Friz Quadrata TT"
Gladdy.db["y"] = 511.0100769632991
Gladdy.db["x"] = 912.8048284050892
Gladdy.db["bottomMargin"] = 20
Gladdy.db["trinketFont"] = "Friz Quadrata TT"
Gladdy.db["npCastbarsIconSize"] = 14
Gladdy.db["trinketFontScale"] = 1.3
Gladdy.db["cooldownBorderStyle"] = "Interface\\AddOns\\Gladdy\\Images\\Border_squared_blp"
Gladdy.db["castBarTexture"] = "Minimalist"
Gladdy.db["classIconWidthFactor"] = 1
Gladdy.db["cooldownYPos"] = "RIGHT"
Gladdy.db["castBarIconSize"] = 20
Gladdy.db["drFont"] = "Friz Quadrata TT"
Gladdy.db["buffsCooldownAlpha"] = 0.8
Gladdy.db["cooldownXOffset"] = 1
Gladdy.db["buffsCooldownGrowDirection"] = "LEFT"
Gladdy.db["highlightBorderSize"] = 1
Gladdy.db["drIconSize"] = 34
Gladdy.db["powerBarBgColor"] = {
["a"] = 0.3500000238418579,
["r"] = 0.8,
["g"] = 0.8,
["b"] = 0.8,
}
Gladdy.db["castBarXOffset"] = 287
Gladdy.db["healthBarFont"] = "Friz Quadrata TT"
Gladdy.db["buffsFontScale"] = 0.8
Gladdy.db["castBarIconStyle"] = "Interface\\AddOns\\Gladdy\\Images\\Border_squared_blp"
Gladdy.db["padding"] = 0
Gladdy.db["powerBarBorderStyle"] = "Gladdy Tooltip squared"
Gladdy.db["castBarBorderSize"] = 4
Gladdy.db["classIconSize"] = 48
Gladdy.db["castBarColor"]["g"] = 0.8274509803921568
Gladdy.db["castBarColor"]["b"] = 0
Gladdy.db["castBarIconColor"]["a"] = 0.6200000047683716
Gladdy.db["leaderBorder"] = false
Gladdy.db["castBarBorderStyle"] = "Gladdy Tooltip squared"
Gladdy.db["drYOffset"] = -3
Gladdy.db["cooldownCooldownAlpha"] = 0.6000000000000001
Gladdy.db["healthBarHeight"] = 30
Gladdy.db["healthBarBgColor"] = {
["a"] = 0.3600000143051148,
["r"] = 0.7294117647058823,
["g"] = 0.7294117647058823,
["b"] = 0.7294117647058823,
}
Gladdy.db["powerBarTexture"] = "Minimalist"
Gladdy.db["healthBarBorderColor"] = {
["r"] = 0.4313725490196079,
["g"] = 0.4313725490196079,
["b"] = 0.4313725490196079,
["a"] = 1,
}
Gladdy.db["powerBarFont"] = "Friz Quadrata TT"
Gladdy.db["cooldownFont"] = "Friz Quadrata TT"
Gladdy.db["cooldownBorderColor"] = {
["r"] = 0.3019607843137255,
["g"] = 0.3019607843137255,
["b"] = 0.3019607843137255,
["a"] = 1,
}
Gladdy.db["trinketWidthFactor"] = 1
Gladdy.db["powerBarBorderSize"] = 4
Gladdy.db["trinketSize"] = 47
Gladdy.db["cooldownSize"] = 25.25495910644531
Gladdy.db["trinketBorderColor"]["a"] = 0
Gladdy.db["npCastbarsTexture"] = "Minimalist"
Gladdy:UpdateFrame()
local deserialized = Gladdy.modules["ExportImport"]:Decode(Gladdy:GetClassicProfile())
if deserialized then
Gladdy.modules["ExportImport"]:ApplyImport(deserialized, Gladdy.db)
end
Gladdy:Reset()
Gladdy:HideFrame()
Gladdy:ToggleFrame(3)
end
function XiconProfiles:GetOptions()
@@ -241,8 +50,8 @@ function XiconProfiles:GetOptions()
name = " ",
desc = "Classic Profile",
image = "Interface\\AddOns\\Gladdy\\Images\\BasicProfiles\\Classic1.blp",
imageWidth = 256,
imageHeight = 128,
imageWidth = 350,
imageHeight = 175,
width = "full",
order = 3,
},
@@ -260,8 +69,8 @@ function XiconProfiles:GetOptions()
name = " ",
desc = "Knall's Profile",
image = "Interface\\AddOns\\Gladdy\\Images\\BasicProfiles\\Knall1.blp",
imageWidth = 256,
imageHeight = 128,
imageWidth = 350,
imageHeight = 175,
width = "full",
order = 5,
},
@@ -277,8 +86,8 @@ function XiconProfiles:GetOptions()
XiconProfiles:ApplyKlimp()
end,
image = "Interface\\AddOns\\Gladdy\\Images\\BasicProfiles\\Klimp1.blp",
imageWidth = 256,
imageHeight = 128,
imageWidth = 350,
imageHeight = 175,
name = " ",
desc = "Klimp's Profile",
width = "full",
+144 -61
View File
@@ -1,9 +1,10 @@
local type, pairs, tinsert, tsort = type, pairs, table.insert, table.sort
local type, pairs, tinsert, tsort, tostring, str_match, tonumber = type, pairs, table.insert, table.sort, tostring, string.match, tonumber
local InterfaceOptionsFrame_OpenToFrame = InterfaceOptionsFrame_OpenToFrame
local GetSpellInfo = GetSpellInfo
local LOCALIZED_CLASS_NAMES_MALE = LOCALIZED_CLASS_NAMES_MALE
local CLASS_ICON_TCOORDS = CLASS_ICON_TCOORDS
local AURA_TYPE_DEBUFF, AURA_TYPE_BUFF = AURA_TYPE_DEBUFF, AURA_TYPE_BUFF
local Gladdy = LibStub("Gladdy")
local LibClassAuras = LibStub("LibClassAuras-1.0")
@@ -19,21 +20,19 @@ Gladdy.defaults = {
padding = 3,
barWidth = 180,
bottomMargin = 10,
statusbarBorderOffset = 7,
statusbarBorderOffset = 6,
},
}
SLASH_GLADDY1 = "/gladdy"
SlashCmdList["GLADDY"] = function(msg)
if (msg == "test2") then
Gladdy:ToggleFrame(2)
elseif (msg == "test5") then
Gladdy:ToggleFrame(5)
elseif (msg:find("test")) then
if (str_match(msg, "test[1-5]")) then
local _, num = str_match(msg, "(test)([1-5])")
Gladdy:ToggleFrame(tonumber(num))
elseif (msg == "test") then
Gladdy:ToggleFrame(3)
elseif (msg == "ui" or msg == "options" or msg == "config") then
LibStub("AceConfigDialog-3.0"):Open("Gladdy")
--Gladdy:ShowOptions()
elseif (msg == "reset") then
Gladdy.dbi:ResetProfile()
elseif (msg == "hide") then
@@ -42,7 +41,8 @@ SlashCmdList["GLADDY"] = function(msg)
else
Gladdy:Print(L["Valid slash commands are:"])
Gladdy:Print("/gladdy ui")
Gladdy:Print("/gladdy test2-5")
Gladdy:Print("/gladdy test")
Gladdy:Print("/gladdy test1-5")
Gladdy:Print("/gladdy hide")
Gladdy:Print("/gladdy reset")
end
@@ -267,7 +267,8 @@ function Gladdy:SetupOptions()
local c = Gladdy.db.trinketDisableCircle
local d = Gladdy.db.drDisableCircle
local e = Gladdy.db.buffsDisableCircle
if (a == b and a == c and a == d and a == e) then
local f = Gladdy.db.racialDisableCircle
if (a == b and a == c and a == d and a == e and a == f) then
return a
else
return ""
@@ -279,6 +280,7 @@ function Gladdy:SetupOptions()
Gladdy.db.trinketDisableCircle = value
Gladdy.db.drDisableCircle = value
Gladdy.db.buffsDisableCircle = value
Gladdy.db.racialDisableCircle = value
Gladdy:UpdateFrame()
end,
width= "full",
@@ -296,7 +298,8 @@ function Gladdy:SetupOptions()
local c = Gladdy.db.auraCooldownAlpha
local d = Gladdy.db.trinketCooldownAlpha
local e = Gladdy.db.buffsCooldownAlpha
if (a == b and a == c and a == d and a == e) then
local f = Gladdy.db.racialCooldownAlpha
if (a == b and a == c and a == d and a == e and a == f) then
return a
else
return ""
@@ -308,6 +311,7 @@ function Gladdy:SetupOptions()
Gladdy.db.auraCooldownAlpha = value
Gladdy.db.trinketCooldownAlpha = value
Gladdy.db.buffsCooldownAlpha = value
Gladdy.db.racialCooldownAlpha = value
Gladdy:UpdateFrame()
end
},
@@ -331,33 +335,42 @@ function Gladdy:SetupOptions()
dialogControl = "LSM30_Font",
values = AceGUIWidgetLSMlists.font,
get = function(info)
local a = Gladdy.db.castBarFont
local b = Gladdy.db.healthBarFont
local c = Gladdy.db.powerBarFont
local a = Gladdy.db.auraFont
local b = Gladdy.db.buffsFont
local c = Gladdy.db.castBarFont
local d = Gladdy.db.cooldownFont
local e = Gladdy.db.drFont
local f = Gladdy.db.auraFont
local g = Gladdy.db.buffsFont
if (a == b and a == c and a == d and a == e and a == f and a == g) then
local f = Gladdy.db.healthBarFont
local g = Gladdy.db.petHealthBarFont
local h = Gladdy.db.powerBarFont
local i = Gladdy.db.racialFont
local j = Gladdy.db.npTremorFont
local k = Gladdy.db.trinketFont
if (a == b and a == c and a == d and a == e and a == f
and a == g and a == h and a == i and a == j and a == k) then
return a
else
return ""
end
end,
set = function(info, value)
Gladdy.db.castBarFont = value
Gladdy.db.healthBarFont = value
Gladdy.db.powerBarFont = value
Gladdy.db.cooldownFont = value
Gladdy.db.drFont = value
Gladdy.db.auraFont = value
Gladdy.db.buffsFont = value
Gladdy.db.castBarFont = value
Gladdy.db.cooldownFont = value
Gladdy.db.drFont = value
Gladdy.db.healthBarFont = value
Gladdy.db.petHealthBarFont = value
Gladdy.db.powerBarFont = value
Gladdy.db.racialFont = value
Gladdy.db.npTremorFont = value
Gladdy.db.trinketFont = value
Gladdy:UpdateFrame()
end,
},
fontColor = {
type = "color",
name = L["Font color"],
name = L["Font color text"],
desc = L["Color of the text"],
order = 12,
hasAlpha = true,
@@ -365,8 +378,10 @@ function Gladdy:SetupOptions()
local a = Gladdy.db.healthBarFontColor
local b = Gladdy.db.powerBarFontColor
local c = Gladdy.db.castBarFontColor
local d = Gladdy.db.petHealthBarFontColor
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) then
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) then
return a.r, a.g, a.b, a.a
else
return { r = 0, g = 0, b = 0, a = 0 }
@@ -377,6 +392,35 @@ function Gladdy:SetupOptions()
Gladdy.db.healthBarFontColor = rgb
Gladdy.db.powerBarFontColor = rgb
Gladdy.db.castBarFontColor = rgb
Gladdy.db.petHealthBarFontColor = rgb
Gladdy:UpdateFrame()
end,
},
fontColorCD = {
type = "color",
name = L["Font color timer"],
desc = L["Color of the timers"],
order = 12,
hasAlpha = true,
get = function(info)
local a = Gladdy.db.auraFontColor
local b = Gladdy.db.buffsFontColor
local c = Gladdy.db.cooldownFontColor
local d = Gladdy.db.drFontColor
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) then
return a.r, a.g, a.b, a.a
else
return { r = 0, g = 0, b = 0, a = 0 }
end
end,
set = function(info, r, g, b, a)
local rgb = {r = r, g = g, b = b, a = a}
Gladdy.db.auraFontColor = rgb
Gladdy.db.buffsFontColor = rgb
Gladdy.db.cooldownFontColor = rgb
Gladdy.db.drFontColor = rgb
Gladdy:UpdateFrame()
end,
},
@@ -399,27 +443,34 @@ function Gladdy:SetupOptions()
order = 14,
values = Gladdy:GetIconStyles(),
get = function(info)
if (Gladdy.db.classIconBorderStyle == Gladdy.db.trinketBorderStyle
and Gladdy.db.classIconBorderStyle == Gladdy.db.castBarIconStyle
and Gladdy.db.classIconBorderStyle == Gladdy.db.auraBorderStyle
and Gladdy.db.classIconBorderStyle == Gladdy.db.cooldownBorderStyle
and Gladdy.db.classIconBorderStyle == Gladdy.db.buffsBorderStyle
and Gladdy.db.classIconBorderStyle == Gladdy.db.drBorderStyle
and Gladdy.db.classIconBorderStyle == Gladdy.db.npTotemPlatesBorderStyle) then
return Gladdy.db.classIconBorderStyle
if (Gladdy.db.auraBorderStyle == Gladdy.db.buffsBorderStyle
and Gladdy.db.auraBorderStyle == Gladdy.db.castBarIconStyle
and Gladdy.db.auraBorderStyle == Gladdy.db.classIconBorderStyle
and Gladdy.db.auraBorderStyle == Gladdy.db.cooldownBorderStyle
and Gladdy.db.auraBorderStyle == Gladdy.db.ciBorderStyle
and Gladdy.db.auraBorderStyle == Gladdy.db.cooldownBorderStyle
and Gladdy.db.auraBorderStyle == Gladdy.db.drBorderStyle
and Gladdy.db.auraBorderStyle == Gladdy.db.racialBorderStyle
and Gladdy.db.auraBorderStyle == Gladdy.db.npTotemPlatesBorderStyle
and Gladdy.db.auraBorderStyle == Gladdy.db.petPortraitBorderStyle
and Gladdy.db.auraBorderStyle == Gladdy.db.trinketBorderStyle) then
return Gladdy.db.auraBorderStyle
else
return ""
end
end,
set = function(info, value)
Gladdy.db.classIconBorderStyle = value
Gladdy.db.trinketBorderStyle = value
Gladdy.db.castBarIconStyle = value
Gladdy.db.auraBorderStyle = value
Gladdy.db.npTotemPlatesBorderStyle = value
Gladdy.db.cooldownBorderStyle = value
Gladdy.db.buffsBorderStyle = value
Gladdy.db.castBarIconStyle = value
Gladdy.db.classIconBorderStyle = value
Gladdy.db.ciBorderStyle = value
Gladdy.db.cooldownBorderStyle = value
Gladdy.db.drBorderStyle = value
Gladdy.db.racialBorderStyle = value
Gladdy.db.npTotemPlatesBorderStyle = value
Gladdy.db.petPortraitBorderStyle = value
Gladdy.db.trinketBorderStyle = value
Gladdy:UpdateFrame()
end,
},
@@ -430,11 +481,23 @@ function Gladdy:SetupOptions()
order = 15,
hasAlpha = true,
get = function(info)
local a = Gladdy.db.classIconBorderColor
local b = Gladdy.db.trinketBorderColor
local c = Gladdy.db.castBarIconColor
local a = Gladdy.db.auraBuffBorderColor
local b = Gladdy.db.auraDebuffBorderColor
local c = Gladdy.db.buffsBorderColor
local d = Gladdy.db.castBarIconColor
local e = Gladdy.db.classIconBorderColor
local f = Gladdy.db.ciBorderColor
local g = Gladdy.db.cooldownBorderColor
local h = Gladdy.db.drBorderColor
local i = Gladdy.db.trinketBorderColor
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) then
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
and a.r == e.r and a.g == e.g and a.b == e.b and a.a == e.a
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
return a.r, a.g, a.b, a.a
else
return { r = 0, g = 0, b = 0, a = 0 }
@@ -442,13 +505,15 @@ function Gladdy:SetupOptions()
end,
set = function(info, r, g, b, a)
local rgb = {r = r, g = g, b = b, a = a}
Gladdy.db.classIconBorderColor = rgb
Gladdy.db.trinketBorderColor = rgb
Gladdy.db.castBarIconColor = rgb
Gladdy.db.npTotemPlatesBorderColor = rgb
Gladdy.db.drBorderColor = rgb
Gladdy.db.cooldownBorderColor = rgb
Gladdy.db.auraBuffBorderColor = rgb
Gladdy.db.auraDebuffBorderColor = rgb
Gladdy.db.buffsBorderColor = rgb
Gladdy.db.castBarIconColor = rgb
Gladdy.db.classIconBorderColor = rgb
Gladdy.db.ciBorderColor = rgb
Gladdy.db.cooldownBorderColor = rgb
Gladdy.db.drBorderColor = rgb
Gladdy.db.trinketBorderColor = rgb
Gladdy:UpdateFrame()
end,
},
@@ -475,7 +540,8 @@ function Gladdy:SetupOptions()
local a = Gladdy.db.healthBarTexture
local b = Gladdy.db.powerBarTexture
local c = Gladdy.db.castBarTexture
if (a == b and a == c) then
local d = Gladdy.db.petHealthBarTexture
if (a == b and a == c and a == d) then
return a
else
return ""
@@ -485,6 +551,7 @@ function Gladdy:SetupOptions()
Gladdy.db.healthBarTexture = value
Gladdy.db.powerBarTexture = value
Gladdy.db.castBarTexture = value
Gladdy.db.petHealthBarTexture = value
Gladdy:UpdateFrame()
end,
width= "full",
@@ -500,7 +567,8 @@ function Gladdy:SetupOptions()
local a = Gladdy.db.healthBarBorderStyle
local b = Gladdy.db.powerBarBorderStyle
local c = Gladdy.db.castBarBorderStyle
if (a == b and a == c) then
local d = Gladdy.db.petHealthBarBorderStyle
if (a == b and a == c and a == d) then
return a
else
return ""
@@ -510,6 +578,7 @@ function Gladdy:SetupOptions()
Gladdy.db.healthBarBorderStyle = value
Gladdy.db.powerBarBorderStyle = value
Gladdy.db.castBarBorderStyle = value
Gladdy.db.petHealthBarBorderStyle = value
Gladdy:UpdateFrame()
end,
},
@@ -531,8 +600,10 @@ function Gladdy:SetupOptions()
local a = Gladdy.db.castBarBorderColor
local b = Gladdy.db.healthBarBorderColor
local c = Gladdy.db.powerBarBorderColor
local d = Gladdy.db.petHealthBarBorderColor
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) then
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) then
return a.r, a.g, a.b, a.a
else
return { r = 0, g = 0, b = 0, a = 0 }
@@ -543,6 +614,7 @@ function Gladdy:SetupOptions()
Gladdy.db.castBarBorderColor = rgb
Gladdy.db.healthBarBorderColor = rgb
Gladdy.db.powerBarBorderColor = rgb
Gladdy.db.petHealthBarBorderColor = rgb
Gladdy:UpdateFrame()
end,
},
@@ -597,8 +669,14 @@ function Gladdy:GetAuras(auraType)
name = "Check All",
type = "execute",
func = function(info)
for k,v in pairs(Gladdy.dbi.profile.trackedDebuffs) do
Gladdy.dbi.profile.trackedDebuffs[k] = true
if auraType == AURA_TYPE_DEBUFF then
for k,v in pairs(Gladdy.defaults.profile.trackedDebuffs) do
Gladdy.dbi.profile.trackedDebuffs[k] = true
end
else
for k,v in pairs(Gladdy.defaults.profile.trackedBuffs) do
Gladdy.dbi.profile.trackedBuffs[k] = true
end
end
end,
},
@@ -608,8 +686,14 @@ function Gladdy:GetAuras(auraType)
name = "Uncheck All",
type = "execute",
func = function(info)
for k,v in pairs(Gladdy.dbi.profile.trackedDebuffs) do
Gladdy.dbi.profile.trackedDebuffs[k] = false
if auraType == AURA_TYPE_DEBUFF then
for k,v in pairs(Gladdy.defaults.profile.trackedDebuffs) do
Gladdy.dbi.profile.trackedDebuffs[k] = false
end
else
for k,v in pairs(Gladdy.defaults.profile.trackedBuffs) do
Gladdy.dbi.profile.trackedBuffs[k] = false
end
end
end,
},
@@ -689,25 +773,24 @@ function Gladdy:GetAuras(auraType)
local defaultDebuffs = {}
local assignForClass = function(class)
local args = {}
local classSpells = auraType == "debuff" and LibClassAuras.GetClassDebuffs(class) or LibClassAuras.GetClassBuffs(class)
local classSpells = auraType == AURA_TYPE_DEBUFF and LibClassAuras.GetClassDebuffs(class) or LibClassAuras.GetClassBuffs(class)
table.sort(classSpells, function(a, b)
return a.name:upper() < b.name:upper()
end)
for i=1, #classSpells do
local spellName, _, texture = GetSpellInfo(classSpells[i].id[#classSpells[i].id])
--spellName = (classSpells[i].id[#classSpells[i].id] == 31117 or classSpells[i].id[#classSpells[i].id] == 43523) and "Unstable Affliction Silence" or spellName
local _, _, texture = GetSpellInfo(classSpells[i].id[#classSpells[i].id])
if classSpells[i].texture then
texture = classSpells[i].texture
end
args[classSpells[i].name] = {
args[tostring(classSpells[i].id[1])] = {
order = i,
name = classSpells[i].name,
type = "toggle",
image = texture,
width = "2",
arg = classSpells[i].name
width = "full",
arg = tostring(classSpells[i].id[1])
}
defaultDebuffs[classSpells[i].name] = true
defaultDebuffs[tostring(classSpells[i].id[1])] = true
end
return args
end
+41 -1
View File
@@ -1,7 +1,7 @@
# Gladdy - TBC
### The most powerful arena addon for WoW TBC 2.5.1
## [v1.0.3-Beta Download Here](https://github.com/XiconQoo/Gladdy-TBC/releases/download/v1.0.3-Beta/Gladdy_TBC-Classic_v1.0.3-Beta.zip)
## [v1.07-Beta Download Here](https://github.com/XiconQoo/Gladdy-TBC/releases/download/v1.07-Beta/Gladdy_TBC-Classic_v1.07-Beta.zip)
###### <a target="_blank" rel="noopener noreferrer" href="https://www.paypal.me/xiconqoo/10"><img src="https://raw.githubusercontent.com/XiconQoo/Gladdy/readme-media/Paypal-Donate.png" height="30" style="margin-top:-30px;position:relative;top:20px;"></a> Please consider donating if you like my work
@@ -17,11 +17,15 @@ The goal is to make Gladdy highly configurable in it's appearance. Everything ca
- Announcement (drink, trinket usage, spec detection ...)
- ArenaCountDown
- Auras (show important (de)buffs in the class icon)
- BuffsDebuffs (show buffs and debuffs on arena frames - can be filtered)
- ClassIcon (or specicon, once detected)
- CombatIndicator
- Cooldown (tracks important cooldowns)
- Diminishing (tracks DRs)
- ExportImport (share your profile with your friends in the form of a string, which can be imported)
- Highlight (highlights focus and target)
- Pets (show arena pets)
- Racial Spells
- TotemPlates (show totem icons instead of normal nameplates)
- Trinket (tracks trinket usage)
- VersionCheck (checks if you use an older version that your teammate)
@@ -35,5 +39,41 @@ The goal is to make Gladdy highly configurable in it's appearance. Everything ca
### Changes
#### v1.07-Beta
- CombatIndicator module added
- spec icon option added to Classicon module
- arena1-5 for name option added
- add a couple buffs to LibClassAuras
- add blessing of sacrifice and intervene to auras
- general options updated to apply font/borders/etc for all frames
- XiconProfiles updated
- /gladdy test1-5 now possible
- fix PowerBar text updates
- click through frames exept health/power bar
- add mask texture for icons
#### v1.06-Beta
- fixed BuffsDebuff module
- fix racial texture reset
- minor bugfixes
#### v1.0.5-Beta
- fixed Aura-Module
- Racial module added to EventListener and Version check updated
- constants for auras/cooldowns/racials updated
- anchoring for modules rewritten
- fix Aura module options (localization independent for profile export)
- Power-/HealthBar customize texts added and UNIT_DESTROYED added
- Racial module added and trinket modified
- XiconProfiles import strings
- Pets position extended
- delete unused saved variables
- ExportImport, VersionCheck & XiconProfiles fix
- TotemPlates add option to show friendly/enemy icons
#### v1.0.4-Beta
- XiconProfiles fixed
#### v1.0.0-Beta
- port form 2.4.3