Compare commits
76 Commits
v1.0.3-Bet
...
classic-pr
Author | SHA1 | Date | |
---|---|---|---|
c5f2ee1eff | |||
4eda8cea8f | |||
fb953530b6 | |||
9d26713dc1 | |||
db1e3da6fc | |||
4721324a2a | |||
51e484eadd | |||
46f379c1e4 | |||
5e42a9b51f | |||
df58544f6e | |||
43518055f0 | |||
9ef174e290 | |||
a60119caa2 | |||
1546e3db6e | |||
82a9a014e4 | |||
a9a1a77dd3 | |||
084fad0074 | |||
2b9e219839 | |||
ba8ea87863 | |||
f498a0dde1 | |||
673dc72b3b | |||
6da33b6c68 | |||
0c6cae0b04 | |||
ded321e772 | |||
7015bb989e | |||
eaeccf5595 | |||
c7d07c62ee | |||
cf804546c2 | |||
467b459898 | |||
0d9cbc8f45 | |||
2c858e1c84 | |||
ffc5d32b80 | |||
1956b3a568 | |||
84f542b3b8 | |||
ccf7d08832 | |||
2e093950e2 | |||
2f9356f8de | |||
8c4a70fd04 | |||
cac0124f1a | |||
cef9de3819 | |||
a84178edbf | |||
c05fab9454 | |||
be54619576 | |||
c70560e66a | |||
de4adaec16 | |||
01d748f37e | |||
ad130af188 | |||
67edecf8d1 | |||
e01b86e1e6 | |||
8b69f5ef93 | |||
4f774b1ddb | |||
3a846add3b | |||
9dfec29f16 | |||
28d33d2f9a | |||
2d53df2b5f | |||
cddea2e094 | |||
ee1a78000e | |||
57036a77c1 | |||
fb46b97e73 | |||
35d49b61ee | |||
f2bfbe3211 | |||
8a27f88014 | |||
2db3db21ec | |||
eaf8129143 | |||
1fb3fce980 | |||
a152cb6045 | |||
267d37b32e | |||
7bdc417b30 | |||
af6eb61c56 | |||
fd5183cf5d | |||
edb5608a38 | |||
f640f6fa6a | |||
cf8b961a1b | |||
03d127fd39 | |||
4722bbc9bd | |||
ea44a9d5f2 |
38
Bindings.xml
38
Bindings.xml
@ -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>
|
306
Constants.lua
306
Constants.lua
@ -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
|
||||
@ -608,3 +633,282 @@ function Gladdy:GetImportantAuras()
|
||||
},
|
||||
}
|
||||
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
|
@ -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
|
||||
@ -170,7 +177,7 @@ function EventListener:ARENA_OPPONENT_UPDATE(unit, updateReason)
|
||||
end
|
||||
end
|
||||
|
||||
local exceptionNames = {
|
||||
local exceptionNames = { -- TODO MOVE ME TO CLASSBUFFS LIB
|
||||
[31117] = GetSpellInfo(30405) .. " Silence", -- Unstable Affliction Silence
|
||||
[43523] = GetSpellInfo(30405) .. " Silence",
|
||||
[24131] = select(1, GetSpellInfo(19386)) .. " Dot", -- Wyvern Sting Dot
|
||||
|
155
Frame.lua
155
Frame.lua
@ -30,9 +30,12 @@ Gladdy.BUTTON_DEFAULTS = {
|
||||
|
||||
function Gladdy:CreateFrame()
|
||||
self.frame = CreateFrame("Frame", "GladdyFrame", UIParent)
|
||||
--self.frame.texture = self.frame:CreateTexture(nil, "OVERLAY")
|
||||
--self.frame.texture:SetAllPoints(self.frame)
|
||||
--self.frame.texture:SetTexture("Interface\\AddOns\\Gladdy\\Images\\Border_rounded_blp")
|
||||
|
||||
self.frame:SetClampedToScreen(true)
|
||||
self.frame:EnableMouse(true)
|
||||
self.frame:EnableMouse(false)
|
||||
self.frame:SetMovable(true)
|
||||
self.frame:RegisterForDrag("LeftButton")
|
||||
|
||||
@ -109,48 +112,69 @@ function Gladdy:UpdateFrame()
|
||||
end
|
||||
local teamSize = self.curBracket or 0
|
||||
|
||||
local iconSize = self.db.healthBarHeight
|
||||
local margin = 0
|
||||
local width = self.db.barWidth + self.db.padding * 2 + 5
|
||||
local height = self.db.healthBarHeight * teamSize + margin * (teamSize - 1) + self.db.padding * 2 + 5
|
||||
local extraBarWidth = 0
|
||||
local extraBarHeight = 0
|
||||
local highlightBorderSize = (self.db.highlightInset and 0 or self.db.highlightBorderSize * 2)
|
||||
local leftSize = 0
|
||||
local rightSize = 0
|
||||
--Trinket + Racial
|
||||
if self.db.trinketEnabled and self.db.trinketPos == "LEFT" then
|
||||
leftSize = leftSize + self.db.trinketSize * self.db.trinketWidthFactor + self.db.padding
|
||||
if self.db.racialEnabled and self.db.racialAnchor == "trinket" and self.db.racialPos == "LEFT" then
|
||||
leftSize = leftSize + self.db.racialSize * self.db.racialWidthFactor + self.db.padding
|
||||
end
|
||||
end
|
||||
if self.db.trinketEnabled and self.db.trinketPos == "RIGHT" then
|
||||
rightSize = rightSize + self.db.trinketSize * self.db.trinketWidthFactor + self.db.padding
|
||||
if self.db.racialEnabled and self.db.racialAnchor == "trinket" and self.db.racialPos == "RIGHT" then
|
||||
rightSize = rightSize + self.db.racialSize * self.db.racialWidthFactor + self.db.padding
|
||||
end
|
||||
end
|
||||
--ClassIcon
|
||||
if self.db.classIconPos == "LEFT" then
|
||||
leftSize = leftSize + self.db.classIconSize * self.db.classIconWidthFactor + self.db.padding
|
||||
else
|
||||
rightSize = rightSize + self.db.classIconSize * self.db.classIconWidthFactor + self.db.padding
|
||||
end
|
||||
--Highlight
|
||||
if not self.db.highlightInset then
|
||||
leftSize = leftSize + self.db.highlightBorderSize
|
||||
rightSize = rightSize + self.db.highlightBorderSize
|
||||
end
|
||||
|
||||
-- Powerbar
|
||||
iconSize = iconSize + self.db.powerBarHeight
|
||||
margin = margin + self.db.powerBarHeight
|
||||
height = height + self.db.powerBarHeight * teamSize
|
||||
extraBarHeight = extraBarHeight + self.db.powerBarHeight
|
||||
local margin = self.db.powerBarHeight + 1
|
||||
local width = self.db.barWidth + leftSize + rightSize
|
||||
local height = (self.db.healthBarHeight + self.db.powerBarHeight + 1) * teamSize
|
||||
+ (self.db.highlightInset and 0 or self.db.highlightBorderSize * 2 * teamSize)
|
||||
+ self.db.bottomMargin * (teamSize - 1)
|
||||
|
||||
-- Cooldown
|
||||
margin = margin + 1 + self.db.highlightBorderSize * 2 + 1 -- + 1 space between health and power bar
|
||||
height = height + self.db.highlightBorderSize * teamSize
|
||||
-- Highlight
|
||||
margin = margin + highlightBorderSize
|
||||
|
||||
if (self.db.cooldownYPos == "TOP" or self.db.cooldownYPos == "BOTTOM") and self.db.cooldown then
|
||||
margin = margin + self.db.cooldownSize
|
||||
height = height + self.db.cooldownSize * teamSize
|
||||
height = height + self.db.cooldownSize * (teamSize - 1)
|
||||
end
|
||||
if (self.db.buffsCooldownPos == "TOP" or self.db.buffsCooldownPos == "BOTTOM") and self.db.buffsEnabled then
|
||||
margin = margin + self.db.buffsIconSize
|
||||
height = height + self.db.buffsIconSize * teamSize
|
||||
height = height + self.db.buffsIconSize * (teamSize - 1)
|
||||
end
|
||||
if (self.db.buffsBuffsCooldownPos == "TOP" or self.db.buffsBuffsCooldownPos == "BOTTOM") and self.db.buffsEnabled then
|
||||
margin = margin + self.db.buffsBuffsIconSize
|
||||
height = height + self.db.buffsBuffsIconSize * teamSize
|
||||
height = height + self.db.buffsBuffsIconSize * (teamSize - 1)
|
||||
end
|
||||
if self.db.buffsCooldownPos == "TOP" and self.db.cooldownYPos == "TOP" and self.db.cooldown and self.db.buffsEnabled then
|
||||
margin = margin + 1
|
||||
height = height + (teamSize - 1)
|
||||
end
|
||||
if self.db.buffsCooldownPos == "BOTTOM" and self.db.cooldownYPos == "BOTTOM" and self.db.cooldown and self.db.buffsEnabled then
|
||||
margin = margin + 1
|
||||
height = height + (teamSize - 1)
|
||||
end
|
||||
|
||||
-- Classicon
|
||||
width = width + iconSize
|
||||
extraBarWidth = extraBarWidth + iconSize
|
||||
|
||||
-- Trinket
|
||||
width = width + iconSize
|
||||
-- GrowDirection
|
||||
if (self.db.growDirection == "LEFT" or self.db.growDirection == "RIGHT") then
|
||||
width = self.db.barWidth * teamSize + (leftSize + rightSize) * teamSize + self.db.bottomMargin * (teamSize - 1)
|
||||
height = self.db.healthBarHeight + self.db.powerBarHeight + 1
|
||||
end
|
||||
|
||||
self.frame:SetScale(self.db.frameScale)
|
||||
self.frame:SetWidth(width)
|
||||
@ -161,61 +185,79 @@ function Gladdy:UpdateFrame()
|
||||
self.frame:SetPoint("CENTER")
|
||||
else
|
||||
local scale = self.frame:GetEffectiveScale()
|
||||
if (self.db.growUp) then
|
||||
if (self.db.growDirection == "TOP") then
|
||||
self.frame:SetPoint("BOTTOMLEFT", UIParent, "BOTTOMLEFT", self.db.x / scale, self.db.y / scale)
|
||||
else
|
||||
self.frame:SetPoint("TOPLEFT", UIParent, "BOTTOMLEFT", self.db.x / scale, self.db.y / scale)
|
||||
end
|
||||
end
|
||||
|
||||
--Anchor
|
||||
self.anchor:SetWidth(width)
|
||||
self.anchor:ClearAllPoints()
|
||||
if (self.db.growUp) then
|
||||
if (self.db.growDirection == "TOP") then
|
||||
self.anchor:SetPoint("TOPLEFT", self.frame, "BOTTOMLEFT")
|
||||
else
|
||||
elseif self.growDirection == "BOTTOM" or self.growDirection == "RIGHT" then
|
||||
self.anchor:SetPoint("BOTTOMLEFT", self.frame, "TOPLEFT")
|
||||
else
|
||||
self.anchor:SetPoint("BOTTOMRIGHT", self.frame, "TOPRIGHT")
|
||||
end
|
||||
|
||||
if (self.db.locked) then
|
||||
self.anchor:Hide()
|
||||
self.anchor:Hide()
|
||||
else
|
||||
self.anchor:Show()
|
||||
end
|
||||
|
||||
for i = 1, teamSize do
|
||||
local button = self.buttons["arena" .. i]
|
||||
button:SetWidth(self.db.barWidth + extraBarWidth)
|
||||
button:SetWidth(self.db.barWidth)
|
||||
button:SetHeight(self.db.healthBarHeight)
|
||||
button.secure:SetWidth(self.db.barWidth + extraBarWidth)
|
||||
button.secure:SetHeight(self.db.healthBarHeight + extraBarHeight)
|
||||
button.secure:SetWidth(self.db.barWidth)
|
||||
button.secure:SetHeight(self.db.healthBarHeight + self.db.powerBarHeight + 1)
|
||||
|
||||
button:ClearAllPoints()
|
||||
button.secure:ClearAllPoints()
|
||||
if (self.db.growUp) then
|
||||
if (self.db.growDirection == "TOP") then
|
||||
if (i == 1) then
|
||||
button:SetPoint("BOTTOMLEFT", self.frame, "BOTTOMLEFT", self.db.padding + 2, 0)
|
||||
button.secure:SetPoint("BOTTOMLEFT", self.frame, "BOTTOMLEFT", self.db.padding + 2, 0)
|
||||
button:SetPoint("BOTTOMLEFT", self.frame, "BOTTOMLEFT", leftSize, self.db.powerBarHeight + 1)
|
||||
button.secure:SetPoint("TOPLEFT", button.powerBar, "TOPLEFT")
|
||||
else
|
||||
button:SetPoint("BOTTOMLEFT", self.buttons["arena" .. (i - 1)], "TOPLEFT", 0, margin + self.db.bottomMargin)
|
||||
button.secure:SetPoint("BOTTOMLEFT", self.buttons["arena" .. (i - 1)], "TOPLEFT", 0, margin + self.db.bottomMargin)
|
||||
button.secure:SetPoint("TOPLEFT", button.powerBar, "TOPLEFT")
|
||||
end
|
||||
else
|
||||
elseif (self.db.growDirection == "BOTTOM") then
|
||||
if (i == 1) then
|
||||
button:SetPoint("TOPLEFT", self.frame, "TOPLEFT", self.db.padding + 2, 0)
|
||||
button.secure:SetPoint("TOPLEFT", self.frame, "TOPLEFT", self.db.padding + 2, 0)
|
||||
button:SetPoint("TOPLEFT", self.frame, "TOPLEFT", leftSize, 0)
|
||||
button.secure:SetPoint("TOPLEFT", button.healthBar, "TOPLEFT")
|
||||
else
|
||||
button:SetPoint("TOPLEFT", self.buttons["arena" .. (i - 1)], "BOTTOMLEFT", 0, -margin - self.db.bottomMargin)
|
||||
button.secure:SetPoint("TOPLEFT", self.buttons["arena" .. (i - 1)], "BOTTOMLEFT", 0, -margin - self.db.bottomMargin)
|
||||
button.secure:SetPoint("TOPLEFT", button.healthBar, "TOPLEFT")
|
||||
end
|
||||
elseif (self.db.growDirection == "LEFT") then
|
||||
if (i == 1) then
|
||||
button:SetPoint("TOPRIGHT", self.frame, "TOPRIGHT", -rightSize, 0)
|
||||
button.secure:SetPoint("TOPLEFT", button.healthBar, "TOPLEFT")
|
||||
else
|
||||
button:SetPoint("TOPRIGHT", self.buttons["arena" .. (i - 1)], "TOPLEFT", -rightSize - leftSize - self.db.bottomMargin, 0)
|
||||
button.secure:SetPoint("TOPLEFT", button.healthBar, "TOPLEFT")
|
||||
end
|
||||
elseif (self.db.growDirection == "RIGHT") then
|
||||
if (i == 1) then
|
||||
button:SetPoint("TOPLEFT", self.frame, "TOPLEFT", leftSize, 0)
|
||||
button.secure:SetPoint("TOPLEFT", button.healthBar, "TOPLEFT")
|
||||
else
|
||||
button:SetPoint("TOPLEFT", self.buttons["arena" .. (i - 1)], "TOPRIGHT", leftSize + rightSize + self.db.bottomMargin, 0)
|
||||
button.secure:SetPoint("TOPLEFT", button.healthBar, "TOPLEFT")
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
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,7 +299,11 @@ function Gladdy:CreateButton(i)
|
||||
end
|
||||
|
||||
local button = CreateFrame("Frame", "GladdyButtonFrame" .. i, self.frame)
|
||||
button:SetAlpha(0)
|
||||
button:EnableMouse(false)
|
||||
--button:SetAlpha(0)
|
||||
--button.texture = button:CreateTexture(nil, "OVERLAY")
|
||||
--button.texture:SetAllPoints(button)
|
||||
--button.texture:SetTexture("Interface\\AddOns\\Gladdy\\Images\\Border_rounded_blp")
|
||||
|
||||
local secure = CreateFrame("Button", "GladdyButton" .. i, button, "SecureActionButtonTemplate")
|
||||
secure:RegisterForClicks("AnyUp")
|
||||
@ -265,12 +311,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 +324,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
|
33
Gladdy.lua
33
Gladdy.lua
@ -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.12
|
||||
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)
|
||||
|
@ -1,6 +1,6 @@
|
||||
## Interface: 20501
|
||||
## Title: Gladdy - TBC
|
||||
## Version: 1.0.3-Beta
|
||||
## Version: 1.12-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
|
||||
|
BIN
Images/BasicProfiles/Blizz1.blp
Normal file
BIN
Images/BasicProfiles/Blizz1.blp
Normal file
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.
Binary file not shown.
Binary file not shown.
BIN
Images/mask.blp
Normal file
BIN
Images/mask.blp
Normal file
Binary file not shown.
17
ImportStrings.lua
Normal file
17
ImportStrings.lua
Normal file
File diff suppressed because one or more lines are too long
593
Lang.lua
593
Lang.lua
@ -1,33 +1,34 @@
|
||||
local setmetatable = setmetatable
|
||||
local C_CreatureInfo = C_CreatureInfo
|
||||
|
||||
local GetLocale = GetLocale
|
||||
|
||||
local L = {}
|
||||
|
||||
-- Classes
|
||||
L["Druid"] = C_CreatureInfo.GetClassInfo(11).className
|
||||
L["Hunter"] = C_CreatureInfo.GetClassInfo(3).className
|
||||
L["Mage"] = C_CreatureInfo.GetClassInfo(8).className
|
||||
L["Paladin"] = C_CreatureInfo.GetClassInfo(2).className
|
||||
L["Priest"] = C_CreatureInfo.GetClassInfo(5).className
|
||||
L["Rogue"] = C_CreatureInfo.GetClassInfo(4).className
|
||||
L["Shaman"] = C_CreatureInfo.GetClassInfo(7).className
|
||||
L["Warlock"] = C_CreatureInfo.GetClassInfo(9).className
|
||||
L["Warrior"] = C_CreatureInfo.GetClassInfo(1).className
|
||||
|
||||
-- Races
|
||||
L["Human"] = C_CreatureInfo.GetRaceInfo(1).raceName
|
||||
L["Orc"] = C_CreatureInfo.GetRaceInfo(2).raceName
|
||||
L["Dwarf"] = C_CreatureInfo.GetRaceInfo(3).raceName
|
||||
L["Night Elf"] = C_CreatureInfo.GetRaceInfo(4).raceName
|
||||
L["Undead"] = C_CreatureInfo.GetRaceInfo(5).raceName
|
||||
L["Tauren"] = C_CreatureInfo.GetRaceInfo(6).raceName
|
||||
L["Gnome"] = C_CreatureInfo.GetRaceInfo(7).raceName
|
||||
L["Troll"] = C_CreatureInfo.GetRaceInfo(8).raceName
|
||||
L["Blood Elf"] = C_CreatureInfo.GetRaceInfo(10).raceName
|
||||
L["Draenei"] = C_CreatureInfo.GetRaceInfo(11).raceName
|
||||
|
||||
if (GetLocale() == "ruRU") then
|
||||
-- Races
|
||||
L["Human"] = "Человек"
|
||||
L["Dwarf"] = "Дворф"
|
||||
L["Night Elf"] = "Ночной эльф"
|
||||
L["Gnome"] = "Гном"
|
||||
L["Draenei"] = "Дреней"
|
||||
L["Orc"] = "Орк"
|
||||
L["Undead"] = "Нежить"
|
||||
L["Tauren"] = "Таурен"
|
||||
L["Troll"] = "Тролль"
|
||||
L["Blood Elf"] = "Эльф крови"
|
||||
|
||||
-- Classes
|
||||
L["Druid"] = "Друид"
|
||||
L["Hunter"] = "Охотник"
|
||||
L["Mage"] = "Маг"
|
||||
L["Paladin"] = "Паладин"
|
||||
L["Priest"] = "Жрец"
|
||||
L["Rogue"] = "Разбойник"
|
||||
L["Shaman"] = "Шаман"
|
||||
L["Warlock"] = "Чернокнижник"
|
||||
L["Warrior"] = "Воин"
|
||||
|
||||
-- Specs
|
||||
L["Balance"] = "Баланс"
|
||||
L["Feral"] = "Сила зверя"
|
||||
@ -157,40 +158,7 @@ if (GetLocale() == "ruRU") then
|
||||
L["Color of the cast bar"] = "Цвет полосы применений"
|
||||
L["Background color"] = "Цвет фона полосы"
|
||||
L["Color of the cast bar background"] = "Цвет фона полосы применений"
|
||||
L["Icon position"] "Расположение значка трансляции"
|
||||
|
||||
-- Clicks.lua
|
||||
L["Action #%d"] = "Действие #%d"
|
||||
L["Left Click Enemy 1"] = "Левый клик по цели 1"
|
||||
L["Left Click Enemy 2"] = "Левый клик по цели 2"
|
||||
L["Left Click Enemy 3"] = "Левый клик по цели 3"
|
||||
L["Left Click Enemy 4"] = "Левый клик по цели 4"
|
||||
L["Left Click Enemy 5"] = "Левый клик по цели 5"
|
||||
L["Right Click Enemy 1"] = "Правый клик по цели 1"
|
||||
L["Right Click Enemy 2"] = "Правый клик по цели 2"
|
||||
L["Right Click Enemy 3"] = "Правый клик по цели 3"
|
||||
L["Right Click Enemy 4"] = "Правый клик по цели 4"
|
||||
L["Right Click Enemy 5"] = "Правый клик по цели 5"
|
||||
L["Left button"] = "Левая кнопка"
|
||||
L["Right button"] = "Правая кнопка"
|
||||
L["Middle button"] = "Средняя кнопка"
|
||||
L["Button 4"] = "Кнопка 4"
|
||||
L["Button 5"] = "Кнопка 5"
|
||||
L["None"] = "Не назначено"
|
||||
L["CTRL"] = "CTRL"
|
||||
L["SHIFT"] = "SHIFT"
|
||||
L["ALT"] = "ALT"
|
||||
L["Cast Spell"] = "Применить заклинание"
|
||||
L["Name"] = "Название"
|
||||
L["Select the name of the click option"] = "Выбрать название опции клика"
|
||||
L["Button"] = "Кнопка"
|
||||
L["Select which mouse button to use"] = "Выбрать кнопку мыши для использования"
|
||||
L["Modifier"] = "Модификатор"
|
||||
L["Select which modifier to use"] = "Выбрать модификатор для использования"
|
||||
L["Action"] = "Действите"
|
||||
L["Select what action this mouse button does"] = "Выбрать действие, производимое данной кнопкой мыши"
|
||||
L["Spell name / Macro text"] = "Название заклинания / Текст макроса"
|
||||
L["Use *name* as unit's name. Like a '/rofl *name*'"] = "Используйте *name* в качестве имени игрока. Например, '/rofl *name*'"
|
||||
L["Icon position"] = "Расположение значка трансляции"
|
||||
|
||||
-- Diminishings.lua
|
||||
L["DR Cooldown position"] = "Позиция ДР таймеров"
|
||||
@ -237,31 +205,146 @@ if (GetLocale() == "ruRU") then
|
||||
-- Trinket.lua
|
||||
L["No cooldown count (OmniCC)"] = "Не показывать кулдаун (OmniCC)"
|
||||
L["Disable cooldown timers by addons (reload UI to take effect)"] = "Отключить таймер кулдаунов для аддонов (необходима перезагрузка интерфейса)"
|
||||
elseif (GetLocale() == "deDE") then
|
||||
-- Races
|
||||
L["Human"] = "Mensch"
|
||||
L["Dwarf"] = "Zwerg"
|
||||
L["Night Elf"] = "Nachtelf"
|
||||
L["Gnome"] = "Gnom"
|
||||
L["Draenei"] = "Draenei"
|
||||
L["Orc"] = "Ork"
|
||||
L["Undead"] = "Untoter"
|
||||
L["Tauren"] = "Taure"
|
||||
L["Troll"] = "Тroll"
|
||||
L["Blood Elf"] = "Blutelf"
|
||||
elseif GetLocale() == "deDE" then
|
||||
-- Announcements.lua
|
||||
L["Announcements"] = "Meldungen"
|
||||
L["RESURRECTING: %s (%s)"] = "Wiederbeleben: %s (%s) "
|
||||
L["SPEC DETECTED: %s - %s (%s)"] = "Talenspezalisierung entdeckt: %s - %s (%s)"
|
||||
L["LOW HEALTH: %s (%s)"] = "Niedriges Leben: %s (%s)"
|
||||
L["TRINKET USED: %s (%s)"] = "Insiginie benutzt: %s (%s)"
|
||||
L["TRINKET READY: %s (%s)"] = "Insignie bereit: %s (%s)"
|
||||
L["DRINKING: %s (%s)"] = "Trinken: %s (%s)"
|
||||
L["Self"] = "Selbst"
|
||||
L["Party"] = "Gruppe"
|
||||
L["Raid Warning"] = "Schlachtzugwarnung"
|
||||
L["Blizzard's Floating Combat Text"] = "Blizzard Kampftext"
|
||||
L["Trinket used"] = "Insignie benutzt"
|
||||
L["Announce when an enemy's trinket is used"] = "Warnt, wenn ein Gegner seine Insignie benutzt"
|
||||
L["Trinket ready"] = "Insignie bereit"
|
||||
L["Announce when an enemy's trinket is ready again"] = "Warnt wenn die Insignie eines Gegner wieder bereit ist"
|
||||
L["Drinking"] = "Trinken"
|
||||
L["Announces when enemies sit down to drink"] = "Warnt wenn Gegner sich zum Trinken hinsetzen"
|
||||
L["Resurrection"] = "Wiederbelebung"
|
||||
L["Announces when an enemy tries to resurrect a teammate"] = "Warnt wenn Gegner versuchen Teammitglieder wiederzubeleben"
|
||||
L["New enemies"] = "Neue Gegner"
|
||||
L["Announces when new enemies are discovered"] = "Gibt an, wenn neue Gegner entdeckt wurden"
|
||||
L["Spec Detection"] = "Talent Entdeckung"
|
||||
L["Announces when the spec of an enemy was detected"] = "Gibt an, wenn Talente eines Gegners entdeckt wurden"
|
||||
L["Low health"] = "Wenig Leben"
|
||||
L["Announces when an enemy drops below a certain health threshold"] = "Warnt, wenn das Leben eines Gegners unter einen bestimmten Prozentwert fällt"
|
||||
L["Low health threshold"] = "Prozentwert: Wenig Leben"
|
||||
L["Choose how low an enemy must be before low health is announced"] = "Bestimme wie wenig Leben ein Gegner haben muss, damit vor wenig Leben gewarnt wird"
|
||||
L["Destination"] = "Ziel"
|
||||
L["Choose how your announcements are displayed"] = "Bestimme wo Warnungen dargestellt werden"
|
||||
|
||||
-- Classes
|
||||
L["Druid"] = "Druide"
|
||||
L["Hunter"] = "Jäger"
|
||||
L["Mage"] = "Magier"
|
||||
L["Paladin"] = "Paladin"
|
||||
L["Priest"] = "Priester"
|
||||
L["Rogue"] = "Schurke"
|
||||
L["Shaman"] = "Schamane"
|
||||
L["Warlock"] = "Hexenmeister"
|
||||
L["Warrior"] = "Krieger"
|
||||
-- ArenaCountDown.lua
|
||||
L["Arena Countdown"] = "Arena Countdown"
|
||||
L["Turns countdown before the start of an arena match on/off."] = ""
|
||||
L["Size"] = "Größe"
|
||||
|
||||
-- Specs
|
||||
-- Auras.lua
|
||||
L["Auras"] = "Auren"
|
||||
L["Frame"] = "Frame"
|
||||
L["Cooldown"] = "Abklingzeit"
|
||||
L["No Cooldown Circle"] = "Verstecke Abklingzeitzirkel"
|
||||
L["Cooldown circle alpha"] = "Abklingzeitzirkel Alpha"
|
||||
L["Font"] = "Schrift"
|
||||
L["Font of the cooldown"] = "Schrift der Abklingzeit"
|
||||
L["Font scale"] = "Schriftskalierung"
|
||||
L["Scale of the text"] = "Skalierungfaktor des Texts"
|
||||
L["Font color"] = "Schriftfarbe"
|
||||
L["Color of the text"] = "Farbe des Texts"
|
||||
L["Border"] = "Rahmen"
|
||||
L["Border style"] = "Rahmen Stil"
|
||||
L["Buff color"] = "Buff Farbe"
|
||||
L["Debuff color"] = "Debuff Farbe"
|
||||
L["Check All"] = "Alle auswählen"
|
||||
L["Uncheck All"] = "Alle abwählen"
|
||||
L["Enabled"] = "Eingeschaltet"
|
||||
L["Priority"] = "Priorität"
|
||||
|
||||
-- BuffsDebuffs.lua
|
||||
L["Buffs and Debuffs"] = "Buffs und Debuffs"
|
||||
L["Enabled Buffs and Debuffs module"] = "Buffs und Debuffs Modul einschalten"
|
||||
L["Show CC"] = "Zeige Crowdcontrol"
|
||||
L["Shows all debuffs, which are displayed on the ClassIcon as well"] = "Zeigt alle Buffs & Debuffs, die auch auf dem Klassensymbol dargestellt werden"
|
||||
L["Buffs"] = "Buffs"
|
||||
L["Size & Padding"] = "Größe und Abstand"
|
||||
L["Icon Size"] = "Symbol Größe"
|
||||
L["Size of the DR Icons"] = "Größe der DR Symbole"
|
||||
L["Icon Width Factor"] = "Symbol Breitenfaktor"
|
||||
L["Stretches the icon"] = "Streckt das Symbol"
|
||||
L["Icon Padding"] = "Symbol Abstand"
|
||||
L["Space between Icons"] = "Abstand zwischen den Symbolen"
|
||||
L["Position"] = "Position"
|
||||
L["Aura Position"] = "Aura Position"
|
||||
L["Position of the aura icons"] = "Position der Aura Symbole"
|
||||
L["Top"] = "Oben"
|
||||
L["Bottom"] = "Unten"
|
||||
L["Left"] = "Links"
|
||||
L["Right"] = "Rechts"
|
||||
L["Grow Direction"] = "Richtung"
|
||||
L["Grow Direction of the aura icons"] = "In welche Richtung die Symbole wachsen"
|
||||
L["Horizontal offset"] = "Horizontaler Offset"
|
||||
L["Vertical offset"] = "Vertikaler Offset"
|
||||
L["Alpha"] = "Alpha"
|
||||
L["Debuffs"] = "Debuffs"
|
||||
L["Dynamic Timer Color"] = "Dynamische Textfarbe"
|
||||
L["Show dynamic color on cooldown numbers"] = "Verändert die Farbe des Textes dynamisch"
|
||||
L["Color of the cooldown timer and stacks"] = "Farbe der Abklingzeit und Stapel"
|
||||
L["Spell School Colors"] = "Zauberart Farbe"
|
||||
L["Spell School Colors Enabled"] = "Zauberart Farbe Eingeschaltet"
|
||||
L["Show border colors by spell school"] = "Färbt den Rahmen entspechend der Zauberart"
|
||||
L["Curse"] = "Fluch"
|
||||
L["Color of the border"] = "Farbe des Rahmens"
|
||||
L["Magic"] = "Magie"
|
||||
L["Poison"] = "Gift"
|
||||
L["Physical"] = "Physisch"
|
||||
L["Immune"] = "Immun"
|
||||
L["Disease"] = "Erkrankung"
|
||||
L["Aura"] = "Aura"
|
||||
L["Form"] = "Form"
|
||||
|
||||
-- Castbar.lua
|
||||
L["Cast Bar"] = "Zauberleiste"
|
||||
L["Bar"] = "Balken"
|
||||
L["Bar Size"] = "Balken Größe"
|
||||
L["Bar height"] = "Balken Höhe"
|
||||
L["Height of the bar"] = "Höhe des Balken"
|
||||
L["Bar width"] = "Balken Weite"
|
||||
L["Width of the bars"] = "Weite des Balken"
|
||||
L["Texture"] = "Textur"
|
||||
L["Bar texture"] = "Balken Textur"
|
||||
L["Texture of the bar"] = "Textur des Balken"
|
||||
L["Bar color"] = "Balken Farbe"
|
||||
L["Color of the cast bar"] = "Farbe des Balken"
|
||||
L["Background color"] = "Hintergrundfarbe"
|
||||
L["Color of the cast bar background"] = "Hinergrundfarbe des Zauberbalkens"
|
||||
L["Border size"] = "Rahmen Größe"
|
||||
L["Status Bar border"] = "Balken Rahmen"
|
||||
L["Status Bar border color"] = "Balken Rahmen Farbe"
|
||||
L["Icon"] = "Symbol"
|
||||
L["Icon size"] = "Symbolgröße"
|
||||
L["Icon border"] = "Symbolrahmen"
|
||||
L["Icon border color"] = "Farbe Symbolrahmen"
|
||||
L["Spark"] = "Funke"
|
||||
L["Spark enabled"] = "Funke eingeschaltet"
|
||||
L["Spark color"] = "Funkenfarbe"
|
||||
L["Color of the cast bar spark"] = "Farbe des Zauberleisten Funke"
|
||||
L["Font of the castbar"] = "Schriftart der Zauberleiste"
|
||||
L["Font size"] = "Schriftgröße"
|
||||
L["Size of the text"] = "Schriftgröße"
|
||||
L["Format"] = "Darstellung"
|
||||
L["Timer Format"] = "Zeitdarstellung"
|
||||
L["Remaining"] = "Verbleibend"
|
||||
L["Total"] = "Total"
|
||||
L["Both"] = "Beides"
|
||||
L["Castbar position"] = "Zauberleistenposition"
|
||||
L["Icon position"] = "Symbolposition"
|
||||
L["Offsets"] = "Offsets"
|
||||
|
||||
-- Classicon.lua
|
||||
L["Class Icon"] = "Klassensymbol"
|
||||
L["Balance"] = "Gleichgewicht"
|
||||
L["Feral"] = "Wilder Kampf"
|
||||
L["Restoration"] = "Wiederherstellung"
|
||||
@ -286,6 +369,145 @@ elseif (GetLocale() == "deDE") then
|
||||
L["Destruction"] = "Zerstörung"
|
||||
L["Arms"] = "Waffen"
|
||||
L["Fury"] = "Furor"
|
||||
L["Show Spec Icon"] = "Zeige Spezialisierungssymbol"
|
||||
L["Shows Spec Icon once spec is detected"] = "Zeigt das Talentspezialisierungs Symbol sobald die Spezialisierung erkannt wurde"
|
||||
L["Icon width factor"] = "Symbol Breitenfaktor"
|
||||
L["This changes positions with trinket"] = "Das tauscht die Position mit dem Trinket, wenn auf der gleichen Seite."
|
||||
L["Border color"] = "Rahmenfarbe"
|
||||
|
||||
--CombatIndicator.lua
|
||||
L["Combat Indicator"] = "Kampfindikator"
|
||||
L["Enable Combat Indicator icon"] = "Schalte Kampfindikator ein"
|
||||
L["Anchor"] = "Anker"
|
||||
L["This changes the anchor of the ci icon"] = "Dies ändert den Anker des Kampfindikatorsymbols"
|
||||
L["This changes position relative to its anchor of the ci icon"] = "Dies ändert die Position relativ zum Anker"
|
||||
|
||||
-- Cooldowns.lua
|
||||
L["Cooldowns"] = "Abklingzeiten"
|
||||
L["Enabled cooldown module"] = ""
|
||||
L["Cooldown size"] = "Abklingzeit Größe"
|
||||
L["Size of each cd icon"] = "Größe eines einzelnen Symbols"
|
||||
L["Max Icons per row"] = "Maximale Anzahl an Symbolen pro Reihe"
|
||||
L["Scale of the font"] = "Skalierung der Schrift"
|
||||
L["Anchor of the cooldown icons"] = "Anker der Abklingzeiten Symbole"
|
||||
L["Grow Direction of the cooldown icons"] = "Richtung der Abklingzeiten Symbole"
|
||||
L["Offset"] = "Offset"
|
||||
|
||||
-- Diminishings.lua
|
||||
L["Diminishings"] = "DR"
|
||||
L["Enabled DR module"] = "DR einschalten"
|
||||
L["DR Cooldown position"] = "DR Position"
|
||||
L["Position of the cooldown icons"] = "Position der Symbole"
|
||||
L["DR Border Colors"] = "DR Rahmen Farbe"
|
||||
L["Dr Border Colors Enabled"] = "DR Rahmen Farben eingeschaltet"
|
||||
L["Colors borders of DRs in respective DR-color below"] = "Färbt die Rahmen der DR Symbole je nach Stärke der Verminderung"
|
||||
L["Half"] = "Hälfte"
|
||||
L["Quarter"] = "Viertel"
|
||||
L["Categories"] = "Kategorien"
|
||||
L["Force Icon"] = "Erzwinge Symbol"
|
||||
L["Icon of the DR"] = "Symbol des DR"
|
||||
|
||||
-- ExportImport.lua
|
||||
L["Export Import"] = "Exportieren Importieren"
|
||||
L["Profile Export Import"] = "Profile Exportieren Importieren"
|
||||
|
||||
-- Healthbar.lua
|
||||
L["Health Bar"] = "Lebensbalken"
|
||||
L["DEAD"] = "TOT"
|
||||
L["LEAVE"] = "VERLASSEN"
|
||||
L["General"] = "Allgemein"
|
||||
L["Color of the status bar background"] = "Farbe des Balkenhintergrunds"
|
||||
L["Font of the bar"] = "Schriftart des Balken"
|
||||
L["Name font size"] = "Schriftgröße des Namen"
|
||||
L["Size of the name text"] = "Schriftgröße des Namen"
|
||||
L["Health font size"] = "Schriftgröße der Gesundheit"
|
||||
L["Size of the health text"] = "Schriftgröße der Gesundheit"
|
||||
L["Size of the border"] = "Rahmengröße"
|
||||
L["Health Bar Text"] = "Lebensbalken Text"
|
||||
L["Show name text"] = "Namen zeigen"
|
||||
L["Show the units name"] = "Zeige den Namen des Gegners"
|
||||
L["Show ArenaX"] = "ArenaX zeigen"
|
||||
L["Show Arena1-5 as name instead"] = "Zeigt Arena1-5 anstatt des Namens"
|
||||
L["Show the actual health"] = "Zeige die momentane Gesundheit"
|
||||
L["Show the actual health on the health bar"] = "Zeigt die momentane Gesundheit"
|
||||
L["Show max health"] = "Zeige maximale Gesundheit"
|
||||
L["Show max health on the health bar"] = "Zeige maximale Gesundheit"
|
||||
L["Show health percentage"] = "Zeige Prozentwert"
|
||||
L["Show health percentage on the health bar"] = "Zeige Prozentwert der Gesundheit"
|
||||
|
||||
-- Highlight.lua
|
||||
L["Highlight"] = "Hervorhebung"
|
||||
L["Show Inside"] = "Zeige innen"
|
||||
L["Show Highlight border inside of frame"] = "Zeige die Hervorhebung innerhalb des Frames"
|
||||
L["Colors"] = "Farben"
|
||||
L["Target border color"] = "Rahmenfarbe deines Ziels"
|
||||
L["Color of the selected targets border"] = "Rahmenfarbe deines momentanen Ziels"
|
||||
L["Focus border color"] = "Rahmenfarbe deines Fokus"
|
||||
L["Color of the focus border"] = "Rahmenfarbe deines momentanen Fokus"
|
||||
L["Highlight target"] = "Hervorhebung des Ziels"
|
||||
L["Toggle if the selected target should be highlighted"] = "Ziel hervorheben ein/ausschalten"
|
||||
L["Show border around target"] = "Zeige Rahmen um dein Ziel"
|
||||
L["Toggle if a border should be shown around the selected target"] = "Zeigt Rahmen um dein momentanes Ziel"
|
||||
L["Show border around focus"] = "Zeige Rahmen um dein Fokus"
|
||||
L["Toggle of a border should be shown around the current focus"] = "Zeigt Rahmen um dein Fokusziel"
|
||||
|
||||
-- Pets.lua
|
||||
L["Pets"] = "Begleiter"
|
||||
L["Enables Pets module"] = "Schaltet das Begleiter Modul ein"
|
||||
L["Width of the bar"] = "Breite des Balkens"
|
||||
L["Health color"] = "Gesundheitsfarbe"
|
||||
L["Color of the status bar"] = "Farbe des Balkens"
|
||||
L["Portrait"] = "Portrait"
|
||||
L["Health Values"] = "Gesundheitswerte"
|
||||
|
||||
-- Powerbar.lua
|
||||
L["Power Bar"] = "Mana/Energie Balken"
|
||||
L["Power Bar Text"] = "Mana/Energie Balken Text"
|
||||
L["Power Texts"] = "Mana/Energie Balken Texte"
|
||||
L["Show race"] = "Rasse zeigen"
|
||||
L["Show spec"] = "Spezialisierung zeigen"
|
||||
L["Show the actual power"] = "Zeige das momentane Mana"
|
||||
L["Show the actual power on the power bar"] = "Zeige das momentane Mana"
|
||||
L["Show max power"] = "Zeige das maximale Mana"
|
||||
L["Show max power on the power bar"] = "Zeige das maximale Mana"
|
||||
L["Show power percentage"] = "Zeige Prozentwert"
|
||||
L["Show power percentage on the power bar"] = "Zeige Prozentwert"
|
||||
|
||||
-- Racial.lua
|
||||
L["Racial"] = "Rassenfertigkeit"
|
||||
L["Enable racial icon"] = "Rassenfertigkeit einschalten"
|
||||
L["This changes the anchor of the racial icon"] = "Dies ändert den Anker des Rassenfertigkeitssymbols"
|
||||
L["This changes position relative to its anchor of the racial icon"] = "Dies ändert doe Position relativ zu seinem Anker"
|
||||
|
||||
-- TotemPlates.lua
|
||||
L["Totem Plates"] = "Totem Symbole"
|
||||
L["Customize Totems"] = "Individuelle Totemeinstellungen"
|
||||
L["Custom totem name"] = "Individueller Totem Name"
|
||||
L["Totem General"] = "Totems Allgemein"
|
||||
L["Turns totem icons instead of nameplates on or off. (Requires reload)"] = ""
|
||||
L["Show friendly"] = "Zeige für freundliche"
|
||||
L["Show enemy"] = "Zeige für feindliche"
|
||||
L["Totem size"] = "Totem Größe"
|
||||
L["Size of totem icons"] = "Größe der Totemsymbole"
|
||||
L["Font of the custom totem name"] = "Schriftart der benutzerdefinierten Totem Namen"
|
||||
L["Apply alpha when no target"] = "Wende den Alpha-Wert an, wenn kein Ziel anvisiert ist"
|
||||
L["Always applies alpha, even when you don't have a target. Else it is 1."] = "Alpha immer anwenden, auch wenn man kein Ziel anvisiert hat. Sonst ist der Alpha-Wert 1"
|
||||
L["Apply alpha when targeted"] = "Wende den Alpha-Wert an, wenn das Totem als Ziel anvisiert ist"
|
||||
L["Always applies alpha, even when you target the totem. Else it is 1."] = "Alpha immer anwenden, auch wenn das Totem als Ziel anvisiert ist. Sonst ist der Alpha-Wert 1"
|
||||
L["All totem border alphas (configurable per totem)"] = "Alpha aller Totems"
|
||||
L["Totem icon border style"] = "Totem Rahmenstil"
|
||||
L["All totem border color"] = "Rahmenfarbe aller Totems"
|
||||
|
||||
-- Trinket.lua
|
||||
L["Trinket"] = "Insignie"
|
||||
L["Enable trinket icon"] = "Insignie einschalten"
|
||||
L["This changes positions of the trinket"] = "Dies ändert die Position der Insignie"
|
||||
|
||||
-- XiconProfiles.lua
|
||||
L["Profile"] = "Profil"
|
||||
|
||||
-- Frame.lua
|
||||
L["Gladdy - drag to move"] = "Gladdy - ziehe um zu bewegen"
|
||||
|
||||
-- Gladdy.lua
|
||||
L["Welcome to Gladdy!"] = "Willkommen bei Gladdy!"
|
||||
@ -293,185 +515,50 @@ elseif (GetLocale() == "deDE") then
|
||||
L["Valid slash commands are:"] = "Gültige slash Befehle sind:"
|
||||
L["If this is not your first run please lock or move the frame to prevent this from happening."] = "Wenn dies nicht dein erster Start ist, sperre oder bewege das Bild um diese Meldung zu verhindern."
|
||||
|
||||
-- Frame.lua
|
||||
L["Gladdy - drag to move"] = "Gladdy - ziehe um zu bewegen"
|
||||
|
||||
-- Options.lua
|
||||
L["Announcements"] = "Meldungen"
|
||||
L["Announcement settings"] = "Meldungseinstellungen"
|
||||
L["Auras"] = "Auren"
|
||||
L["Auras settings"] = "Aureneinstellungen"
|
||||
L["Castbar"] = "Zauberleiste"
|
||||
L["Castbar settings"] = "Zauberleisteneinstellungen"
|
||||
L["Classicon"] = "Klassensymbol"
|
||||
L["Classicon settings"] = "Klassensymboleinstellungen"
|
||||
L["Clicks"] = "Klicks"
|
||||
L["Clicks settings"] = "Klickeinstellungen"
|
||||
L["Diminishings"] = "DR"
|
||||
L["Diminishings settings"] = "DR Einstellungen"
|
||||
L["Healthbar"] = "Lebensleiste"
|
||||
L["Healthbar settings"] = "Lebensleisteneinstellungen"
|
||||
L["Highlight"] = "warnung"
|
||||
L["Highlight settings"] = "Warnungseinstellungen"
|
||||
L["Nameplates"] = "Namensplaketten"
|
||||
L["Nameplates settings"] = "Namensplaketteneinstellungen"
|
||||
L["Powerbar"] = "Powerleiste"
|
||||
L["Powerbar settings"] = "Powerleisteneinstellungen"
|
||||
L["Score"] = "Score"
|
||||
L["Score settings"] = "Scoreeinstellungen"
|
||||
L["Trinket"] = "Insignie"
|
||||
L["Trinket settings"] = "Insignieneinstellungen"
|
||||
L["Reset module"] = "Model zurücksetzen"
|
||||
L["Reset module to defaults"] = "Modul auf Standardeinstellungen zurücksetzen"
|
||||
L["settings"] = "Einstellungen"
|
||||
L["Reset module"] = "Modul zurücksetzen"
|
||||
L["Reset module to defaults"] = "Setze das Modul auf seine Standardwerte zurück"
|
||||
L["No settings"] = "Keine Einstellungen"
|
||||
L["Module has no settings"] = "Modul hat keine Einstellungen"
|
||||
L["General"] = "ОAllgemein"
|
||||
L["General settings"] = "Allgemeine Einstellungen"
|
||||
L["Lock frame"] = "Sperre Bild"
|
||||
L["Toggle if frame can be moved"] = "Aktivieren falls das Bild bewegt werden kann"
|
||||
L["Grow frame upwards"] = "Bild von unten nach oben aufbauen"
|
||||
L["If enabled the frame will grow upwards instead of downwards"] = "Falls aktiviert, wird das Bild von unten nach oben aufgebaut"
|
||||
L["Frame scale"] = "Bildskalierung"
|
||||
L["Scale of the frame"] = "Skalierung des Bildes"
|
||||
L["Frame padding"] = "Bild Unterlage"
|
||||
L["Padding of the frame"] = "Unterlage des Bildes"
|
||||
L["Frame color"] = "Bildfarbe"
|
||||
L["Color of the frame"] = "Farbe des Bildes"
|
||||
L["Bar width"] = "Leistenbreite"
|
||||
L["Width of the bars"] = "Breite der Leisten"
|
||||
L["Bottom margin"] = "Unterer Abstand"
|
||||
L["Margin between each button"] = "Abstand zwischen jedem Buttom"
|
||||
|
||||
-- Announcements.lua
|
||||
L["RESURRECTING: %s (%s)"] = "Wiederbeleben: %s (%s) "
|
||||
L["SPEC DETECTED: %s - %s (%s)"] = "Talenspezalisierung entdeckt: %s - %s (%s)"
|
||||
L["LOW HEALTH: %s (%s)"] = "Niedriges Leben: %s (%s)"
|
||||
L["TRINKET USED: %s (%s)"] = "Insiginie benutzt: %s (%s)"
|
||||
L["TRINKET READY: %s (%s)"] = "Insignie bereit: %s (%s)"
|
||||
L["DRINKING: %s (%s)"] = "Trinken: %s (%s)"
|
||||
L["Self"] = "Selbst"
|
||||
L["Party"] = "Gruppe"
|
||||
L["Raid Warning"] = "Schlachtzugwarnung"
|
||||
L["Blizzard's Floating Combat Text"] = "Blizzard Kampftext"
|
||||
L["MikScrollingBattleText"] = "MikScrollingBattleText"
|
||||
L["Scrolling Combat Text"] = "Scrolling Combat Text"
|
||||
L["Parrot"] = "Parrot"
|
||||
L["Drinking"] = "Trinken"
|
||||
L["Announces when enemies sit down to drink"] = "Warnt wenn Gegner sich zum Trinken hinsetzen"
|
||||
L["Resurrection"] = "Wiederbelebung"
|
||||
L["Announces when an enemy tries to resurrect a teammate"] = "Warnt wenn Gegner versuchen Teammitglieder wiederzubeleben"
|
||||
L["New enemies"] = "Neue Gegner"
|
||||
L["Announces when new enemies are discovered"] = "Gibt an, wenn neue Gegner entdeckt wurden"
|
||||
L["Spec Detection"] = "Talent Entdeckung"
|
||||
L["Announces when the spec of an enemy was detected"] = "Gibt an, wenn Talente eines Gegners entdeckt wurden"
|
||||
L["Low health"] = "Wenig Leben"
|
||||
L["Announces when an enemy drops below a certain health threshold"] = "Warnt, wenn das Leben eines Gegners unter einen bestimmten Prozentwert fällt"
|
||||
L["Low health threshold"] = "Prozentwert: Wenig Leben"
|
||||
L["Choose how low an enemy must be before low health is announced"] = "Bestimme wie wenig Leben ein Gegner haben muss, damit vor wenig Leben gewarnt wird"
|
||||
L["Trinket used"] = "Insignie benutzt"
|
||||
L["Announce when an enemy's trinket is used"] = "Warnt, wenn ein Gegner seine Insignie benutzt"
|
||||
L["Trinket ready"] = "Insignie bereit"
|
||||
L["Announce when an enemy's trinket is ready again"] = "Warnt wenn die Insignie eines Gegner wieder bereit ist"
|
||||
L["Destination"] = "Ziel"
|
||||
L["Choose how your announcements are displayed"] = "Bestimme wo Warnungen dargestellt werden"
|
||||
|
||||
-- Auras.lua
|
||||
L["Font color"] = "Schriftfarbe"
|
||||
L["Color of the text"] = "Farbe der Schrift"
|
||||
L["Font size"] = "Schriftgröße"
|
||||
L["Size of the text"] = "Größe der Schrift"
|
||||
|
||||
-- Castbar.lua
|
||||
L["Bar height"] = "Leistenhöhe"
|
||||
L["Height of the bar"] = "Höhe der Leiste"
|
||||
L["Bar texture"] = "Leistentextur"
|
||||
L["Texture of the bar"] = "Textur der Leiste"
|
||||
L["Bar color"] = "Leistenfarbe"
|
||||
L["Color of the cast bar"] = "Farbe der Zauberleiste"
|
||||
L["Background color"] = "Hintergrundfarbe"
|
||||
L["Color of the cast bar background"] = "Hintergrundfarbe der Zauberleiste"
|
||||
L["Icon position"] "Position des Zauberleistensymbols"
|
||||
|
||||
-- Clicks.lua
|
||||
L["Action #%d"] = "Aktion #%d"
|
||||
L["Left Click Enemy 1"] = "Linksklick Gegner 1"
|
||||
L["Left Click Enemy 2"] = "Linksklick Gegner 2"
|
||||
L["Left Click Enemy 3"] = "Linksklick Gegner 3"
|
||||
L["Left Click Enemy 4"] = "Linksklick Gegner 4"
|
||||
L["Left Click Enemy 5"] = "Linksklick Gegner 5"
|
||||
L["Right Click Enemy 1"] = "Rechtsklick Gegner 1"
|
||||
L["Right Click Enemy 2"] = "Rechtsklick Gegner 2"
|
||||
L["Right Click Enemy 3"] = "Rechtsklick Gegner 3"
|
||||
L["Right Click Enemy 4"] = "Rechtsklick Gegner 4"
|
||||
L["Right Click Enemy 5"] = "Rechtsklick Gegner 5"
|
||||
L["Left button"] = "Linke Taste"
|
||||
L["Right button"] = "Rechte Taste"
|
||||
L["Middle button"] = "Mittlere Taste"
|
||||
L["Button 4"] = "Maus 4"
|
||||
L["Button 5"] = "Maus 5"
|
||||
L["None"] = "Keine"
|
||||
L["CTRL"] = "STRG"
|
||||
L["SHIFT"] = "SHIFT"
|
||||
L["ALT"] = "ALT"
|
||||
L["Cast Spell"] = "Wirke Zauber"
|
||||
L["Name"] = "Name"
|
||||
L["Select the name of the click option"] = "Wähle einen Namen für die Klickoption"
|
||||
L["Button"] = "Taste"
|
||||
L["Select which mouse button to use"] = "Wähle welche Maustaste genutzt werden soll"
|
||||
L["Modifier"] = "Modifier"
|
||||
L["Select which modifier to use"] = "Wähle welcher Modifier benutzt werdne soll"
|
||||
L["Action"] = "Aktion"
|
||||
L["Select what action this mouse button does"] = "Wähle welche Aktion die Maustaste durchführt"
|
||||
L["Spell name / Macro text"] = "Zaubername / Makrotext"
|
||||
L["Use *name* as unit's name. Like a '/rofl *name*'"] = "Benutzt *name* als Gegnername. Zum Beispiel '/rofl *name*'"
|
||||
|
||||
-- Diminishings.lua
|
||||
L["DR Cooldown position"] = "Position des DR Cooldowns"
|
||||
L["Position of the cooldown icons"] = "Position des DR Cooldowns"
|
||||
L["Left"] = "Links"
|
||||
L["Right"] = "Rechts"
|
||||
L["Icon Size"] = "Symbolgröße"
|
||||
L["Size of the DR Icons"] = "Größe des DR Symbols"
|
||||
|
||||
-- Healthbar.lua
|
||||
L["Show the actual health"] = "Zeige das Leben an"
|
||||
L["Show the actual health on the health bar"] = "Zeige das Leben auf der Lebensanzeige an"
|
||||
L["Show max health"] = "Zeige Maximalleben an"
|
||||
L["Show max health on the health bar"] = "Zeige Maximalleben auf der Lebensanzeige an"
|
||||
L["Show health percentage"] = "Zeige prozentuales Leben"
|
||||
L["Show health percentage on the health bar"] = "Zeige prozentuales Leben auf der Lebensanzeige an"
|
||||
|
||||
-- Highlight.lua
|
||||
L["Border size"] = "Rahmengröße"
|
||||
L["Target border color"] = "Zielrahmenfarbe"
|
||||
L["Color of the selected targets border"] = "Farbe des Rahmens des gewählten Ziels"
|
||||
L["Focus border color"] = "Focusrahmenfarbe"
|
||||
L["Color of the focus border"] = "Farbe des Focusrahmens"
|
||||
L["Raid leader border color"] = "Schlachtzugleiterrahmenfarbe"
|
||||
L["Color of the raid leader border"] = "Farbe des Rahmens für den Schlachtzugleiter"
|
||||
L["Highlight target"] = "Highlight Ziel"
|
||||
L["Toggle if the selected target should be highlighted"] = "Включите, если необходима подсветка цели"
|
||||
L["Show border around target"] = "Zeige Rahmen um das Ziel an"
|
||||
L["Toggle if a border should be shown around the selected target"] = "Auswählen wenn ein Ramhen um das ausgewählte Ziel angezeigt werden soll"
|
||||
L["Show border around focus"] = "Zeige Rahmen um Focus"
|
||||
L["Toggle of a border should be shown around the current focus"] = "Auswählen wenn ein Ramhen um das ausgewählte Focusziel angezeigt werden soll"
|
||||
L["Show border around raid leader"] = "Zeige Rahmen um Schlachtzugleiter"
|
||||
L["Toggle if a border should be shown around the raid leader"] = "Auswählen wenn ein Ramhen um den ausgewählten SChlachtzugleiter angezeigt werden soll"
|
||||
|
||||
-- Powerbar.lua
|
||||
L["Show the actual power"] = "Zeige genaue Power"
|
||||
L["Show the actual power on the power bar"] = "Zeige die genaue Power in der Powerleiste "
|
||||
L["Show max power"] = "Zeige Maximalpower"
|
||||
L["Show max power on the power bar"] = "Zeige Maximalpower in der Powerbau"
|
||||
L["Show power percentage"] = "Zeige prozentuale Power"
|
||||
L["Show power percentage on the power bar"] = "Zeige prozentuale Power in der Powerbau"
|
||||
L["Color of the status bar background"] = "Hintergrundfarbe der Statusleiste"
|
||||
|
||||
-- Trinket.lua
|
||||
L["No cooldown count (OmniCC)"] = "Keine Cooldownanzeige (OmniCC)"
|
||||
L["Disable cooldown timers by addons (reload UI to take effect)"] = "Deaktiviere Cooldownanzeige durch Addons (UI neu laden um zu wirken)"
|
||||
L["Lock frame"] = "Sperre Frame"
|
||||
L["Toggle if frame can be moved"] = "Aktivieren falls das Frame bewegt werden kann"
|
||||
L["Grow frame upwards"] = "Frame von unten nach oben aufbauen"
|
||||
L["If enabled the frame will grow upwards instead of downwards"] = "Falls aktiviert, wird das Frame von unten nach oben aufgebaut"
|
||||
L["Down"] = "Runter"
|
||||
L["Up"] = "Hoch"
|
||||
L["Frame General"] = "Frame Allgemein"
|
||||
L["Frame scale"] = "Frame Skalierung"
|
||||
L["Scale of the frame"] = "Skalierung des Frames"
|
||||
L["Frame padding"] = "Symbolabstand"
|
||||
L["Padding of the frame"] = "Abstand zwischen den Elementen des Frames"
|
||||
L["Frame width"] = "Frame Breite"
|
||||
L["Margin"] = "Frame Abstand"
|
||||
L["Margin between each button"] = "Abstand zwischen den Arena Einheiten"
|
||||
L["Cooldown General"] = "Abklingzeiten Allgemein"
|
||||
L["Font General"] = "Schriftart Allgemein"
|
||||
L["General Font"] = "Allgemeine Schriftart"
|
||||
L["Font color text"] = "Schriftfarbe von text"
|
||||
L["Font color timer"] = "Schriftfarbe von Abklingzeiten"
|
||||
L["Color of the timers"] = "Farbe der Abklingzeiten"
|
||||
L["Icons General"] = "Symbol Allgemein"
|
||||
L["Icon border style"] = "Rahmenstil"
|
||||
L["This changes the border style of all icons"] = "Dies ändert den Rahmenstil aller Symbole"
|
||||
L["This changes the border color of all icons"] = "Dies ändert die Rahmenfarbe aller Symbole"
|
||||
L["Statusbar General"] = "Balken Allgemein"
|
||||
L["Statusbar texture"] = "Balken Textur"
|
||||
L["This changes the texture of all statusbar frames"] = "Dies ändert die Textur aller Balken"
|
||||
L["Statusbar border style"] = "Balken Rahmenstil"
|
||||
L["This changes the border style of all statusbar frames"] = "Dies ändert den Rahmenstil aller Balken"
|
||||
L["Statusbar border offset divider (smaller is higher offset)"] = "Rahmenstil offset Quotient"
|
||||
L["Offset of border to statusbar (in case statusbar shows beyond the border)"] = "Offset des Rahmens zur Statusbar (falls der Balken hinter dem Rahmen erscheint)"
|
||||
L["Statusbar border color"] = "Balken Rahmenfarbe"
|
||||
L["This changes the border color of all statusbar frames"] = "Dies ändert die Rahmenfarbe aller Balken"
|
||||
end
|
||||
|
||||
|
||||
|
||||
-- Superhack allowing use key as value if not present in table
|
||||
LibStub("Gladdy").L = setmetatable(L, {
|
||||
__index = function(t, k)
|
||||
|
@ -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",
|
||||
|
@ -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
|
||||
|
||||
|
||||
-------------
|
||||
|
@ -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 = {}
|
||||
@ -72,3 +73,13 @@ local function getClassBuffs(class)
|
||||
return classSpells
|
||||
end
|
||||
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
|
@ -21,12 +21,12 @@ local Announcements = Gladdy:NewModule("Announcements", nil, {
|
||||
drinks = true,
|
||||
resurrections = true,
|
||||
enemy = false,
|
||||
spec = false,
|
||||
spec = true,
|
||||
health = false,
|
||||
healthThreshold = 20,
|
||||
trinketUsed = true,
|
||||
trinketReady = false,
|
||||
dest = "self",
|
||||
dest = "party",
|
||||
},
|
||||
})
|
||||
|
||||
@ -206,9 +206,6 @@ function Announcements:GetOptions()
|
||||
["party"] = L["Party"],
|
||||
["rw"] = L["Raid Warning"],
|
||||
["fct"] = L["Blizzard's Floating Combat Text"],
|
||||
--["msbt"] = L["MikScrollingBattleText"],
|
||||
--["sct"] = L["Scrolling Combat Text"],
|
||||
--["parrot"] = L["Parrot"],
|
||||
}
|
||||
|
||||
return {
|
||||
|
@ -1,157 +1,160 @@
|
||||
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, pairs = math.floor, string.len, tostring, string.sub, string.find, pairs
|
||||
local CreateFrame = CreateFrame
|
||||
local GetLocale = GetLocale
|
||||
local GetTime = GetTime
|
||||
|
||||
local Gladdy = LibStub("Gladdy")
|
||||
local L = Gladdy.L
|
||||
local ACDFrame = Gladdy:NewModule("Countdown", nil, {
|
||||
local ACDFrame = Gladdy:NewModule("Arena Countdown", nil, {
|
||||
countdown = true,
|
||||
arenaCountdownSize = 256
|
||||
})
|
||||
|
||||
function ACDFrame:OnEvent(event, ...)
|
||||
self[event](self, ...)
|
||||
end
|
||||
|
||||
function ACDFrame:Initialize()
|
||||
if ACDFrame.locales[GetLocale()] then
|
||||
self.locale = ACDFrame.locales[GetLocale()]
|
||||
else
|
||||
self.locale = ACDFrame.locales["default"]
|
||||
end
|
||||
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")
|
||||
self:RegisterMessage("ENEMY_SPOTTED")
|
||||
self:RegisterMessage("UNIT_SPEC")
|
||||
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
|
||||
if (GetTime() > self.endTime) then
|
||||
self:SetScript("OnUpdate", nil)
|
||||
end
|
||||
end
|
||||
|
||||
function ACDFrame:JOINED_ARENA()
|
||||
self:RegisterEvent("CHAT_MSG_BG_SYSTEM_NEUTRAL")
|
||||
self:SetScript("OnEvent", ACDFrame.OnEvent)
|
||||
self.endTime = GetTime() + 70
|
||||
self:SetScript("OnUpdate", ACDFrame.OnUpdate)
|
||||
end
|
||||
|
||||
function ACDFrame:ENEMY_SPOTTED()
|
||||
ACDFrame:Reset()
|
||||
end
|
||||
|
||||
function ACDFrame:UNIT_SPEC()
|
||||
ACDFrame:Reset()
|
||||
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
|
||||
return
|
||||
end
|
||||
if (str_find(msg, "L'ar\195\168ne ouvre ses portes dans 30 secondes !")) then
|
||||
self.countdown = 31
|
||||
return
|
||||
end
|
||||
if (str_find(msg, "L'ar\195\168ne ouvre ses portes dans 15 secondes !")) then
|
||||
self.countdown = 16
|
||||
return
|
||||
end
|
||||
if (str_find(msg, "L'ar\195\168ne ouvre ses portes dans 10 secondes !")) then
|
||||
self.countdown = 11
|
||||
return
|
||||
end
|
||||
if (str_find(msg, "One minute until the Arena battle begins!")) then
|
||||
self.countdown = 61
|
||||
return
|
||||
end
|
||||
if (str_find(msg, "Thirty seconds until the Arena battle begins!")) then
|
||||
self.countdown = 31
|
||||
return
|
||||
end
|
||||
if (str_find(msg, "Fifteen seconds until the Arena battle begins!")) then
|
||||
self.countdown = 16
|
||||
return
|
||||
end
|
||||
if (str_find(msg, "Ten seconds until the Arena battle begins!")) then
|
||||
self.countdown = 10
|
||||
return
|
||||
end
|
||||
if (str_find(msg, "The Arena battle has begun!")) then
|
||||
ACDFrame:SetScript("OnUpdate", nil)
|
||||
return
|
||||
for k,v in pairs(self.locale) do
|
||||
if str_find(msg, v) then
|
||||
if k == 0 then
|
||||
ACDFrame:Reset()
|
||||
else
|
||||
self.countdown = k
|
||||
end
|
||||
end
|
||||
end
|
||||
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.endTime = 0
|
||||
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()
|
||||
@ -163,7 +166,7 @@ function ACDFrame:GetOptions()
|
||||
},
|
||||
countdown = Gladdy:option({
|
||||
type = "toggle",
|
||||
name = L["Turn on/off"],
|
||||
name = L["Enabled"],
|
||||
desc = L["Turns countdown before the start of an arena match on/off."],
|
||||
order = 3,
|
||||
width = "full",
|
||||
@ -178,3 +181,66 @@ function ACDFrame:GetOptions()
|
||||
}),
|
||||
}
|
||||
end
|
||||
|
||||
ACDFrame.locales = {
|
||||
["default"] = {
|
||||
[61] = "One minute until the Arena battle begins!",
|
||||
[31] = "Thirty seconds until the Arena battle begins!",
|
||||
[16] = "Fifteen seconds until the Arena battle begins!",
|
||||
[0] = "The Arena battle has begun!",
|
||||
},
|
||||
["esES"] = {
|
||||
[61] = "¡Un minuto hasta que dé comienzo la batalla en arena!",
|
||||
[31] = "¡Treinta segundos hasta que comience la batalla en arena!",
|
||||
[16] = "¡Quince segundos hasta que comience la batalla en arena!",
|
||||
[0] = "¡La batalla en arena ha comenzado!",
|
||||
},
|
||||
["ptBR"] = {
|
||||
[61] = "Um minuto até a batalha na Arena começar!",
|
||||
[31] = "Trinta segundos até a batalha na Arena começar!",
|
||||
[16] = "Quinze segundos até a batalha na Arena começar!",
|
||||
[0] = "A batalha na Arena começou!",
|
||||
},
|
||||
["deDE"] = {
|
||||
[61] = "Noch eine Minute bis der Arenakampf beginnt!",
|
||||
[31] = "Noch dreißig Sekunden bis der Arenakampf beginnt!",
|
||||
[16] = "Noch fünfzehn Sekunden bis der Arenakampf beginnt!",
|
||||
[0] = "Der Arenakampf hat begonnen!",
|
||||
},
|
||||
["frFR"] = {
|
||||
[60] = "Le combat d'arène commence dans une minute\194\160!",
|
||||
[30] = "Le combat d'arène commence dans trente secondes\194\160!",
|
||||
[15] = "Le combat d'arène commence dans quinze secondes\194\160!",
|
||||
[0] = "Le combat d'arène commence\194\160!",
|
||||
},
|
||||
["ruRU"] = {
|
||||
[61] = "Одна минута до начала боя на арене!",
|
||||
[31] = "Тридцать секунд до начала боя на арене!",
|
||||
[16] = "До начала боя на арене осталось 15 секунд.",
|
||||
[0] = "Бой начался!",
|
||||
},
|
||||
["itIT"] = { -- TODO
|
||||
-- Beta has no itIT version available?
|
||||
},
|
||||
["koKR"] = {
|
||||
[61] = "투기장 전투 시작 1분 전입니다!",
|
||||
[31] = "투기장 전투 시작 30초 전입니다!",
|
||||
[16] = "투기장 전투 시작 15초 전입니다!",
|
||||
[0] = "투기장 전투가 시작되었습니다!",
|
||||
},
|
||||
["zhCN"] = {
|
||||
[61] = "竞技场战斗将在一分钟后开始!",
|
||||
[31] = "竞技场战斗将在三十秒后开始!",
|
||||
[16] = "竞技场战斗将在十五秒后开始!",
|
||||
[0] = "竞技场的战斗开始了!",
|
||||
},
|
||||
["zhTW"] = {
|
||||
[61] = "1分鐘後競技場戰鬥開始!",
|
||||
[31] = "30秒後競技場戰鬥開始!",
|
||||
[16] = "15秒後競技場戰鬥開始!",
|
||||
[0] = "競技場戰鬥開始了!",
|
||||
},
|
||||
}
|
||||
|
||||
ACDFrame.locales["esMX"] = ACDFrame.locales["esES"]
|
||||
ACDFrame.locales["ptPT"] = ACDFrame.locales["ptBR"]
|
||||
|
@ -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,10 @@ 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
|
||||
spells[tostring(v.spellID)].track = v.track
|
||||
end
|
||||
end
|
||||
return spells
|
||||
@ -41,7 +42,8 @@ function Auras:Initialize()
|
||||
end
|
||||
|
||||
function Auras:CreateFrame(unit)
|
||||
local auraFrame = CreateFrame("Frame", nil, Gladdy.modules.Classicon.frames[unit])
|
||||
local auraFrame = CreateFrame("Frame", nil, Gladdy.modules["Class Icon"].frames[unit])
|
||||
auraFrame:EnableMouse(false)
|
||||
auraFrame:SetFrameStrata("MEDIUM")
|
||||
auraFrame:SetFrameLevel(3)
|
||||
|
||||
@ -59,25 +61,16 @@ 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")
|
||||
auraFrame.icon.overlay:SetAllPoints(auraFrame)
|
||||
auraFrame.icon.overlay:SetTexture(Gladdy.db.buttonBorderStyle)
|
||||
|
||||
local classIcon = Gladdy.modules.Classicon.frames[unit]
|
||||
local classIcon = Gladdy.modules["Class Icon"].frames[unit]
|
||||
auraFrame:ClearAllPoints()
|
||||
auraFrame:SetAllPoints(classIcon)
|
||||
auraFrame:SetScript("OnUpdate", function(self, elapsed)
|
||||
if (self.active) then
|
||||
if (self.timeLeft <= 0) then
|
||||
Auras:AURA_FADE(unit)
|
||||
else
|
||||
self.timeLeft = self.timeLeft - elapsed
|
||||
self.text:SetFormattedText("%.1f", self.timeLeft)
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
auraFrame.text = auraFrame.cooldownFrame:CreateFontString(nil, "OVERLAY")
|
||||
auraFrame.text:SetFont(Gladdy.LSM:Fetch("font", Gladdy.db.auraFont), 10, "OUTLINE")
|
||||
@ -88,6 +81,17 @@ function Auras:CreateFrame(unit)
|
||||
auraFrame.text:SetPoint("CENTER")
|
||||
auraFrame.unit = unit
|
||||
|
||||
auraFrame:SetScript("OnUpdate", function(self, elapsed)
|
||||
if (self.active) then
|
||||
if (self.timeLeft <= 0) then
|
||||
Auras:AURA_FADE(self.unit, self.track)
|
||||
else
|
||||
self.timeLeft = self.timeLeft - elapsed
|
||||
self.text:SetFormattedText("%.1f", self.timeLeft >= 0.0 and self.timeLeft or 0.0)
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
self.frames[unit] = auraFrame
|
||||
self:ResetUnit(unit)
|
||||
end
|
||||
@ -102,7 +106,7 @@ function Auras:UpdateFrame(unit)
|
||||
|
||||
auraFrame:SetWidth(width)
|
||||
auraFrame:SetHeight(height)
|
||||
auraFrame:SetAllPoints(Gladdy.modules.Classicon.frames[unit])
|
||||
auraFrame:SetAllPoints(Gladdy.modules["Class Icon"].frames[unit])
|
||||
|
||||
auraFrame.cooldown:SetWidth(width - width/16)
|
||||
auraFrame.cooldown:SetHeight(height - height/16)
|
||||
@ -121,6 +125,7 @@ function Auras:UpdateFrame(unit)
|
||||
else
|
||||
auraFrame.icon.overlay:SetVertexColor(0, 0, 0, 1)
|
||||
end
|
||||
auraFrame.icon.overlay:Hide()
|
||||
if Gladdy.db.auraDisableCircle then
|
||||
auraFrame.cooldown:SetAlpha(0)
|
||||
end
|
||||
@ -128,24 +133,30 @@ end
|
||||
|
||||
function Auras:ResetUnit(unit)
|
||||
self.frames[unit]:UnregisterAllEvents()
|
||||
self:AURA_FADE(unit)
|
||||
self:AURA_FADE(unit, AURA_TYPE_DEBUFF)
|
||||
self:AURA_FADE(unit, AURA_TYPE_BUFF)
|
||||
end
|
||||
|
||||
function Auras:Test(unit)
|
||||
local aura, _, icon
|
||||
local spellName, _, icon
|
||||
|
||||
if (unit == "arena1") then
|
||||
aura, _, icon = GetSpellInfo(12826)
|
||||
elseif (unit == "arena4") then
|
||||
aura, _, icon = GetSpellInfo(6770)
|
||||
spellName, _, icon = GetSpellInfo(12826)
|
||||
self:AURA_FADE(unit, AURA_TYPE_BUFF)
|
||||
self:AURA_FADE(unit, AURA_TYPE_DEBUFF)
|
||||
self:AURA_GAIN(unit,AURA_TYPE_DEBUFF, 12826, spellName, icon, self.auras[spellName].duration, GetTime() + self.auras[spellName].duration)
|
||||
elseif (unit == "arena2") then
|
||||
spellName, _, icon = GetSpellInfo(6770)
|
||||
self:AURA_FADE(unit, AURA_TYPE_BUFF)
|
||||
self:AURA_FADE(unit,AURA_TYPE_DEBUFF)
|
||||
self:AURA_GAIN(unit,AURA_TYPE_DEBUFF, 6770, spellName, icon, self.auras[spellName].duration, GetTime() + self.auras[spellName].duration)
|
||||
elseif (unit == "arena3") then
|
||||
aura, _, icon = GetSpellInfo(31224)
|
||||
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)
|
||||
spellName, _, icon = GetSpellInfo(31224)
|
||||
self:AURA_FADE(unit, AURA_TYPE_BUFF)
|
||||
self:AURA_GAIN(unit,AURA_TYPE_BUFF, 31224, spellName, icon, self.auras[spellName].duration, GetTime() + self.auras[spellName].duration)
|
||||
spellName, _, icon = GetSpellInfo(18425)
|
||||
self:AURA_FADE(unit, AURA_TYPE_DEBUFF)
|
||||
self:AURA_GAIN(unit,AURA_TYPE_DEBUFF, 18425, spellName, icon, self.auras[spellName].duration, GetTime() + self.auras[spellName].duration)
|
||||
end
|
||||
end
|
||||
|
||||
@ -156,31 +167,36 @@ function Auras:JOINED_ARENA()
|
||||
end
|
||||
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
|
||||
function Auras:AURA_GAIN(unit, auraType, spellID, spellName, icon, duration, expirationTime, count, debuffType)
|
||||
local auraFrame = self.frames[unit]
|
||||
if (not auraFrame) then
|
||||
return
|
||||
end
|
||||
|
||||
if (auraFrame.priority and auraFrame.priority > Gladdy.db.auraListDefault[aura].priority) then
|
||||
if not self.auras[spellName] then
|
||||
return
|
||||
end
|
||||
-- don't use spellId from combatlog, in case of different spellrank
|
||||
if not Gladdy.db.auraListDefault[tostring(self.auras[spellName].spellID)] or not Gladdy.db.auraListDefault[tostring(self.auras[spellName].spellID)].enabled then
|
||||
return
|
||||
end
|
||||
|
||||
if (auraFrame.priority and auraFrame.priority > Gladdy.db.auraListDefault[tostring(self.auras[spellName].spellID)].priority) then
|
||||
return
|
||||
end
|
||||
auraFrame.startTime = expirationTime - duration
|
||||
auraFrame.endTime = expirationTime
|
||||
auraFrame.name = aura
|
||||
auraFrame.name = spellName
|
||||
auraFrame.timeLeft = expirationTime - GetTime()
|
||||
auraFrame.priority = Gladdy.db.auraListDefault[aura].priority
|
||||
auraFrame.priority = Gladdy.db.auraListDefault[tostring(self.auras[spellName].spellID)].priority
|
||||
auraFrame.icon:SetTexture(icon)
|
||||
auraFrame.track = self.auras[aura].track
|
||||
auraFrame.track = auraType
|
||||
auraFrame.active = true
|
||||
auraFrame.icon.overlay:SetTexture(Gladdy.db.auraBorderStyle)
|
||||
auraFrame.icon.overlay:Show()
|
||||
auraFrame.cooldownFrame:Show()
|
||||
if auraFrame.track and auraFrame.track == AURA_TYPE_DEBUFF then
|
||||
if auraType == AURA_TYPE_DEBUFF then
|
||||
auraFrame.icon.overlay:SetVertexColor(Gladdy.db.auraDebuffBorderColor.r, Gladdy.db.auraDebuffBorderColor.g, Gladdy.db.auraDebuffBorderColor.b, Gladdy.db.auraDebuffBorderColor.a)
|
||||
elseif auraFrame.track and auraFrame.track == AURA_TYPE_BUFF then
|
||||
elseif auraType == AURA_TYPE_BUFF then
|
||||
auraFrame.icon.overlay:SetVertexColor(Gladdy.db.auraBuffBorderColor.r, Gladdy.db.auraBuffBorderColor.g, Gladdy.db.auraBuffBorderColor.b, Gladdy.db.auraBuffBorderColor.a)
|
||||
else
|
||||
auraFrame.icon.overlay:SetVertexColor(Gladdy.db.frameBorderColor.r, Gladdy.db.frameBorderColor.g, Gladdy.db.frameBorderColor.b, Gladdy.db.frameBorderColor.a)
|
||||
@ -191,9 +207,9 @@ function Auras:AURA_GAIN(unit, auraType, spellID, aura, icon, duration, expirati
|
||||
end
|
||||
end
|
||||
|
||||
function Auras:AURA_FADE(unit)
|
||||
function Auras:AURA_FADE(unit, auraType)
|
||||
local auraFrame = self.frames[unit]
|
||||
if (not auraFrame) then
|
||||
if (not auraFrame or auraFrame.track ~= auraType) then
|
||||
return
|
||||
end
|
||||
if auraFrame.active then
|
||||
@ -208,7 +224,7 @@ function Auras:AURA_FADE(unit)
|
||||
auraFrame.endTime = nil
|
||||
auraFrame.icon:SetTexture("")
|
||||
auraFrame.text:SetText("")
|
||||
auraFrame.icon.overlay:SetTexture("")
|
||||
auraFrame.icon.overlay:Hide()
|
||||
auraFrame.cooldownFrame:Hide()
|
||||
end
|
||||
|
||||
@ -222,12 +238,12 @@ function Auras:GetOptions()
|
||||
group = {
|
||||
type = "group",
|
||||
childGroups = "tree",
|
||||
name = "Frame",
|
||||
name = L["Frame"],
|
||||
order = 3,
|
||||
args = {
|
||||
cooldown = {
|
||||
type = "group",
|
||||
name = "Cooldown",
|
||||
name = L["Cooldown"],
|
||||
order = 1,
|
||||
args = {
|
||||
headerAuras = {
|
||||
@ -249,6 +265,18 @@ function Auras:GetOptions()
|
||||
step = 0.1,
|
||||
order = 4,
|
||||
}),
|
||||
}
|
||||
},
|
||||
font = {
|
||||
type = "group",
|
||||
name = L["Font"],
|
||||
order = 2,
|
||||
args = {
|
||||
headerAuras = {
|
||||
type = "header",
|
||||
name = L["Font"],
|
||||
order = 1,
|
||||
},
|
||||
auraFont = Gladdy:option({
|
||||
type = "select",
|
||||
name = L["Font"],
|
||||
@ -273,12 +301,12 @@ function Auras:GetOptions()
|
||||
order = 7,
|
||||
hasAlpha = true,
|
||||
}),
|
||||
}
|
||||
},
|
||||
},
|
||||
border = {
|
||||
type = "group",
|
||||
name = "Border",
|
||||
order = 2,
|
||||
name = L["Border"],
|
||||
order = 3,
|
||||
args = {
|
||||
headerAuras = {
|
||||
type = "header",
|
||||
@ -333,7 +361,7 @@ function Auras:GetAuraOptions(auraType)
|
||||
ckeckAll = {
|
||||
order = 1,
|
||||
width = "0.7",
|
||||
name = "Check All",
|
||||
name = L["Check All"],
|
||||
type = "execute",
|
||||
func = function(info)
|
||||
for k,v in pairs(defaultSpells(auraType)) do
|
||||
@ -344,7 +372,7 @@ function Auras:GetAuraOptions(auraType)
|
||||
uncheckAll = {
|
||||
order = 2,
|
||||
width = "0.7",
|
||||
name = "Uncheck All",
|
||||
name = L["Uncheck All"],
|
||||
type = "execute",
|
||||
func = function(info)
|
||||
for k,v in pairs(defaultSpells(auraType)) do
|
||||
@ -356,28 +384,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 +417,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,
|
||||
}
|
||||
}
|
||||
|
@ -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,10 +21,11 @@ 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 BuffsDebuffs = Gladdy:NewModule("BuffsDebuffs", nil, {
|
||||
local defaultTrackedDebuffs = select(2, Gladdy:GetAuras(AURA_TYPE_DEBUFF))
|
||||
local defaultTrackedBuffs = select(2, Gladdy:GetAuras(AURA_TYPE_BUFF))
|
||||
local BuffsDebuffs = Gladdy:NewModule("Buffs and Debuffs", nil, {
|
||||
buffsEnabled = true,
|
||||
buffsShowAuraDebuffs = false,
|
||||
buffsAlpha = 1,
|
||||
@ -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
|
||||
@ -208,15 +226,16 @@ end
|
||||
---------------------------
|
||||
|
||||
function BuffsDebuffs:CreateFrame(unit)
|
||||
local verticalMargin = (Gladdy.db.highlightInset and 0 or Gladdy.db.highlightBorderSize) + Gladdy.db.padding
|
||||
local debuffFrame = CreateFrame("Frame", "GladdyDebuffs" .. unit, Gladdy.buttons[unit])
|
||||
debuffFrame:SetHeight(Gladdy.db.buffsIconSize)
|
||||
debuffFrame:SetWidth(1)
|
||||
debuffFrame:SetPoint("BOTTOMLEFT", Gladdy.buttons[unit].healthBar, "TOPLEFT", 0, Gladdy.db.highlightBorderSize + Gladdy.db.padding)
|
||||
debuffFrame:SetPoint("BOTTOMLEFT", Gladdy.buttons[unit].healthBar, "TOPLEFT", 0, verticalMargin)
|
||||
debuffFrame.unit = unit
|
||||
local buffFrame = CreateFrame("Frame", "GladdyBuffs" .. unit, Gladdy.buttons[unit])
|
||||
buffFrame:SetHeight(Gladdy.db.buffsIconSize)
|
||||
buffFrame:SetWidth(1)
|
||||
buffFrame:SetPoint("BOTTOMLEFT", Gladdy.buttons[unit].healthBar, "TOPLEFT", 0, Gladdy.db.highlightBorderSize + Gladdy.db.padding)
|
||||
buffFrame:SetPoint("BOTTOMLEFT", Gladdy.buttons[unit].healthBar, "TOPLEFT", 0, verticalMargin)
|
||||
buffFrame.unit = unit
|
||||
self.frames[unit] = {}
|
||||
self.frames[unit].buffFrame = buffFrame
|
||||
@ -259,7 +278,9 @@ end
|
||||
function BuffsDebuffs:UpdateFrame(unit)
|
||||
self.frames[unit].debuffFrame:SetHeight(Gladdy.db.buffsIconSize)
|
||||
self.frames[unit].debuffFrame:ClearAllPoints()
|
||||
local horizontalMargin = Gladdy.db.highlightBorderSize
|
||||
|
||||
--DEBUFFS
|
||||
local horizontalMargin = (Gladdy.db.highlightInset and 0 or Gladdy.db.highlightBorderSize)
|
||||
local verticalMargin = -(Gladdy.db.powerBarHeight)/2
|
||||
if Gladdy.db.buffsCooldownPos == "TOP" then
|
||||
verticalMargin = horizontalMargin + 1
|
||||
@ -283,59 +304,27 @@ function BuffsDebuffs:UpdateFrame(unit)
|
||||
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
|
||||
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
|
||||
|
||||
--BUFFS
|
||||
self.frames[unit].buffFrame:SetHeight(Gladdy.db.buffsBuffsIconSize)
|
||||
self.frames[unit].buffFrame:ClearAllPoints()
|
||||
horizontalMargin = Gladdy.db.highlightBorderSize
|
||||
horizontalMargin = (Gladdy.db.highlightInset and 0 or Gladdy.db.highlightBorderSize)
|
||||
verticalMargin = -(Gladdy.db.powerBarHeight)/2
|
||||
if Gladdy.db.buffsBuffsCooldownPos == "TOP" then
|
||||
verticalMargin = horizontalMargin + 1
|
||||
@ -381,7 +370,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.highlightInset and 0 or Gladdy.db.highlightBorderSize) - 1 + Gladdy.db.padding
|
||||
if anchor == Gladdy.buttons[unit].healthBar then
|
||||
self.frames[unit].buffFrame:SetPoint("RIGHT", anchor, "LEFT", -horizontalMargin + Gladdy.db.buffsBuffsXOffset, Gladdy.db.buffsBuffsYOffset)
|
||||
else
|
||||
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 +404,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.highlightInset and 0 or Gladdy.db.highlightBorderSize) - 1 + Gladdy.db.padding
|
||||
if anchor == Gladdy.buttons[unit].healthBar then
|
||||
self.frames[unit].buffFrame:SetPoint("LEFT", anchor, "RIGHT", horizontalMargin + Gladdy.db.buffsBuffsXOffset, Gladdy.db.buffsBuffsYOffset)
|
||||
else
|
||||
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 +471,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 +492,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 +510,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)
|
||||
@ -619,7 +623,7 @@ function BuffsDebuffs:GetOptions()
|
||||
},
|
||||
buffsEnabled = Gladdy:option({
|
||||
type = "toggle",
|
||||
name = L["Enable"],
|
||||
name = L["Enabled"],
|
||||
desc = L["Enabled Buffs and Debuffs module"],
|
||||
order = 3,
|
||||
}),
|
||||
@ -632,7 +636,7 @@ function BuffsDebuffs:GetOptions()
|
||||
group = {
|
||||
type = "group",
|
||||
childGroups = "tree",
|
||||
name = "Frame",
|
||||
name = L["Frame"],
|
||||
order = 5,
|
||||
args = {
|
||||
buffs = {
|
||||
@ -642,7 +646,7 @@ function BuffsDebuffs:GetOptions()
|
||||
args = {
|
||||
size = {
|
||||
type = "group",
|
||||
name = "Size & Padding",
|
||||
name = L["Size & Padding"],
|
||||
order = 1,
|
||||
args = {
|
||||
header = {
|
||||
@ -681,7 +685,7 @@ function BuffsDebuffs:GetOptions()
|
||||
},
|
||||
position = {
|
||||
type = "group",
|
||||
name = "Position",
|
||||
name = L["Position"],
|
||||
order = 3,
|
||||
args = {
|
||||
header = {
|
||||
@ -758,7 +762,7 @@ function BuffsDebuffs:GetOptions()
|
||||
args = {
|
||||
size = {
|
||||
type = "group",
|
||||
name = "Size & Padding",
|
||||
name = L["Size & Padding"],
|
||||
order = 1,
|
||||
args = {
|
||||
header = {
|
||||
@ -797,7 +801,7 @@ function BuffsDebuffs:GetOptions()
|
||||
},
|
||||
position = {
|
||||
type = "group",
|
||||
name = "Position",
|
||||
name = L["Position"],
|
||||
order = 3,
|
||||
args = {
|
||||
header = {
|
||||
@ -869,7 +873,7 @@ function BuffsDebuffs:GetOptions()
|
||||
},
|
||||
cooldown = {
|
||||
type = "group",
|
||||
name = "Cooldown",
|
||||
name = L["Cooldown"],
|
||||
order = 3,
|
||||
args = {
|
||||
header = {
|
||||
@ -881,6 +885,7 @@ function BuffsDebuffs:GetOptions()
|
||||
type = "toggle",
|
||||
name = L["No Cooldown Circle"],
|
||||
order = 9,
|
||||
width = "full",
|
||||
}),
|
||||
buffsCooldownAlpha = Gladdy:option({
|
||||
type = "range",
|
||||
@ -1027,7 +1032,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 +1047,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
|
||||
|
@ -18,7 +18,7 @@ local BackdropTemplateMixin = BackdropTemplateMixin
|
||||
local Gladdy = LibStub("Gladdy")
|
||||
local L = Gladdy.L
|
||||
local AceGUIWidgetLSMlists = AceGUIWidgetLSMlists
|
||||
local Castbar = Gladdy:NewModule("Castbar", 70, {
|
||||
local Castbar = Gladdy:NewModule("Cast Bar", 70, {
|
||||
castBarHeight = 20,
|
||||
castBarWidth = 160,
|
||||
castBarIconSize = 22,
|
||||
@ -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)
|
||||
@ -163,53 +165,22 @@ function Castbar:UpdateFrame(unit)
|
||||
end
|
||||
|
||||
castBar:ClearAllPoints()
|
||||
local horizontalMargin = Gladdy.db.highlightBorderSize + Gladdy.db.padding
|
||||
local verticalMargin = -(Gladdy.db.powerBarHeight)/2
|
||||
local horizontalMargin = (Gladdy.db.highlightInset and 0 or Gladdy.db.highlightBorderSize) + Gladdy.db.padding
|
||||
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
|
||||
@ -548,7 +519,7 @@ local function option(params)
|
||||
set = function(info, value)
|
||||
local key = info.arg or info[#info]
|
||||
Gladdy.dbi.profile[key] = value
|
||||
Gladdy.options.args.Castbar.args.group.args.barFrame.args.castBarBorderSize.max = Gladdy.db.castBarHeight/2
|
||||
Gladdy.options.args["Cast Bar"].args.group.args.barFrame.args.castBarBorderSize.max = Gladdy.db.castBarHeight/2
|
||||
if Gladdy.db.castBarBorderSize > Gladdy.db.castBarHeight/2 then
|
||||
Gladdy.db.castBarBorderSize = Gladdy.db.castBarHeight/2
|
||||
end
|
||||
@ -573,12 +544,12 @@ function Castbar:GetOptions()
|
||||
group = {
|
||||
type = "group",
|
||||
childGroups = "tree",
|
||||
name = "Frame",
|
||||
name = L["Frame"],
|
||||
order = 3,
|
||||
args = {
|
||||
barFrame = {
|
||||
type = "group",
|
||||
name = "Bar",
|
||||
name = L["Bar"],
|
||||
order = 1,
|
||||
args = {
|
||||
headerSize = {
|
||||
@ -661,7 +632,7 @@ function Castbar:GetOptions()
|
||||
},
|
||||
icon = {
|
||||
type = "group",
|
||||
name = "Icon",
|
||||
name = L["Icon"],
|
||||
order = 2,
|
||||
args = {
|
||||
headerSize = {
|
||||
@ -698,7 +669,7 @@ function Castbar:GetOptions()
|
||||
},
|
||||
spark = {
|
||||
type = "group",
|
||||
name = "Spark",
|
||||
name = L["Spark"],
|
||||
order = 3,
|
||||
args = {
|
||||
header = {
|
||||
@ -722,7 +693,7 @@ function Castbar:GetOptions()
|
||||
},
|
||||
font = {
|
||||
type = "group",
|
||||
name = "Font",
|
||||
name = L["Font"],
|
||||
order = 4,
|
||||
args = {
|
||||
header = {
|
||||
@ -772,7 +743,7 @@ function Castbar:GetOptions()
|
||||
},
|
||||
position = {
|
||||
type = "group",
|
||||
name = "Position",
|
||||
name = L["Position"],
|
||||
order = 5,
|
||||
args = {
|
||||
header = {
|
||||
|
@ -1,27 +1,96 @@
|
||||
local select = select
|
||||
|
||||
local Gladdy = LibStub("Gladdy")
|
||||
local CreateFrame = CreateFrame
|
||||
local GetSpellInfo = GetSpellInfo
|
||||
local L = Gladdy.L
|
||||
local Classicon = Gladdy:NewModule("Classicon", 80, {
|
||||
local Classicon = Gladdy:NewModule("Class Icon", 80, {
|
||||
classIconPos = "LEFT",
|
||||
classIconSize = 60 + 20 + 1,
|
||||
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)
|
||||
@ -51,7 +120,7 @@ function Classicon:UpdateFrame(unit)
|
||||
classIcon:SetHeight(Gladdy.db.classIconSize)
|
||||
|
||||
classIcon:ClearAllPoints()
|
||||
local margin = Gladdy.db.highlightBorderSize + Gladdy.db.padding
|
||||
local margin = (Gladdy.db.highlightInset and 0 or Gladdy.db.highlightBorderSize) + Gladdy.db.padding
|
||||
if (Gladdy.db.classIconPos == "LEFT") then
|
||||
classIcon:SetPoint("TOPRIGHT", Gladdy.buttons[unit].healthBar, "TOPLEFT", -margin, 0)
|
||||
else
|
||||
@ -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,17 +173,41 @@ 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,
|
||||
name = L["Frame"],
|
||||
order = 4,
|
||||
args = {
|
||||
size = {
|
||||
type = "group",
|
||||
name = L["Icon size"],
|
||||
order = 1,
|
||||
args = {
|
||||
header = {
|
||||
type = "header",
|
||||
name = L["Icon size"],
|
||||
order = 1,
|
||||
},
|
||||
classIconSize = Gladdy:option({
|
||||
type = "range",
|
||||
name = L["Icon size"],
|
||||
@ -165,38 +277,3 @@ 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
|
243
Modules/CombatIndicator.lua
Normal file
243
Modules/CombatIndicator.lua
Normal file
@ -0,0 +1,243 @@
|
||||
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("Combat Indicator", 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:SetTexture(Gladdy.db.ciBorderStyle)
|
||||
ciFrame.border:SetVertexColor(Gladdy.db.ciBorderColor.r, Gladdy.db.ciBorderColor.g, Gladdy.db.ciBorderColor.b, Gladdy.db.ciBorderColor.a)
|
||||
|
||||
ciFrame:ClearAllPoints()
|
||||
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 {
|
||||
header = {
|
||||
type = "header",
|
||||
name = L["Combat Indicator"],
|
||||
order = 2,
|
||||
},
|
||||
ciEnabled = Gladdy:option({
|
||||
type = "toggle",
|
||||
name = L["Enabled"],
|
||||
desc = L["Enable Combat Indicator icon"],
|
||||
order = 3,
|
||||
}),
|
||||
group = {
|
||||
type = "group",
|
||||
childGroups = "tree",
|
||||
name = L["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
|
@ -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")
|
||||
@ -89,69 +135,33 @@ function Cooldowns:UpdateFrame(unit)
|
||||
if (Gladdy.db.cooldown) then
|
||||
button.spellCooldownFrame:ClearAllPoints()
|
||||
local verticalMargin = -(Gladdy.db.powerBarHeight)/2
|
||||
local horizontalMargin = (Gladdy.db.highlightInset and 0 or Gladdy.db.highlightBorderSize)
|
||||
if Gladdy.db.cooldownYPos == "TOP" then
|
||||
if Gladdy.db.cooldownXPos == "RIGHT" then
|
||||
button.spellCooldownFrame:SetPoint("BOTTOMRIGHT", button.healthBar, "TOPRIGHT", Gladdy.db.cooldownXOffset, Gladdy.db.highlightBorderSize + Gladdy.db.cooldownYOffset) -- needs to be properly anchored after trinket
|
||||
button.spellCooldownFrame:SetPoint("BOTTOMRIGHT", button.healthBar, "TOPRIGHT", Gladdy.db.cooldownXOffset, horizontalMargin + Gladdy.db.cooldownYOffset)
|
||||
else
|
||||
button.spellCooldownFrame:SetPoint("BOTTOMLEFT", button.healthBar, "TOPLEFT", Gladdy.db.cooldownXOffset, Gladdy.db.highlightBorderSize + Gladdy.db.cooldownYOffset)
|
||||
button.spellCooldownFrame:SetPoint("BOTTOMLEFT", button.healthBar, "TOPLEFT", Gladdy.db.cooldownXOffset, horizontalMargin + Gladdy.db.cooldownYOffset)
|
||||
end
|
||||
elseif Gladdy.db.cooldownYPos == "BOTTOM" then
|
||||
if Gladdy.db.cooldownXPos == "RIGHT" then
|
||||
button.spellCooldownFrame:SetPoint("TOPRIGHT", button.powerBar, "BOTTOMRIGHT", Gladdy.db.cooldownXOffset, -Gladdy.db.highlightBorderSize + Gladdy.db.cooldownYOffset) -- needs to be properly anchored after trinket
|
||||
button.spellCooldownFrame:SetPoint("TOPRIGHT", button.powerBar, "BOTTOMRIGHT", Gladdy.db.cooldownXOffset, -horizontalMargin + Gladdy.db.cooldownYOffset)
|
||||
else
|
||||
button.spellCooldownFrame:SetPoint("TOPLEFT", button.powerBar, "BOTTOMLEFT", Gladdy.db.cooldownXOffset, -Gladdy.db.highlightBorderSize + Gladdy.db.cooldownYOffset)
|
||||
button.spellCooldownFrame:SetPoint("TOPLEFT", button.powerBar, "BOTTOMLEFT", Gladdy.db.cooldownXOffset, -horizontalMargin + Gladdy.db.cooldownYOffset)
|
||||
end
|
||||
elseif Gladdy.db.cooldownYPos == "LEFT" then
|
||||
local 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", -(horizontalMargin + Gladdy.db.padding) + Gladdy.db.cooldownXOffset, Gladdy.db.cooldownYOffset)
|
||||
else
|
||||
button.spellCooldownFrame:SetPoint("RIGHT", anchor, "LEFT", -Gladdy.db.padding + Gladdy.db.cooldownXOffset, Gladdy.db.cooldownYOffset)
|
||||
end
|
||||
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", horizontalMargin + Gladdy.db.padding + Gladdy.db.cooldownXOffset, Gladdy.db.cooldownYOffset)
|
||||
else
|
||||
button.spellCooldownFrame:SetPoint("LEFT", anchor, "RIGHT", Gladdy.db.padding + Gladdy.db.cooldownXOffset, Gladdy.db.cooldownYOffset)
|
||||
end
|
||||
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 +237,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 +254,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 +353,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 +387,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 +424,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 +436,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 +468,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 +490,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
|
||||
@ -556,14 +576,14 @@ function Cooldowns:GetOptions()
|
||||
},
|
||||
cooldown = Gladdy:option({
|
||||
type = "toggle",
|
||||
name = L["Enable"],
|
||||
name = L["Enabled"],
|
||||
desc = L["Enabled cooldown module"],
|
||||
order = 2,
|
||||
}),
|
||||
group = {
|
||||
type = "group",
|
||||
childGroups = "tree",
|
||||
name = "Frame",
|
||||
name = L["Frame"],
|
||||
order = 3,
|
||||
args = {
|
||||
icon = {
|
||||
@ -582,7 +602,7 @@ function Cooldowns:GetOptions()
|
||||
desc = L["Size of each cd icon"],
|
||||
order = 4,
|
||||
min = 5,
|
||||
max = (Gladdy.db.healthBarHeight + Gladdy.db.castBarHeight + Gladdy.db.powerBarHeight + Gladdy.db.bottomMargin) / 2,
|
||||
max = 50,
|
||||
}),
|
||||
cooldownWidthFactor = Gladdy:option({
|
||||
type = "range",
|
||||
@ -626,6 +646,7 @@ function Cooldowns:GetOptions()
|
||||
type = "toggle",
|
||||
name = L["No Cooldown Circle"],
|
||||
order = 8,
|
||||
width = "full",
|
||||
}),
|
||||
cooldownCooldownAlpha = Gladdy:option({
|
||||
type = "range",
|
||||
@ -755,9 +776,80 @@ function Cooldowns:GetOptions()
|
||||
},
|
||||
},
|
||||
},
|
||||
cooldowns = {
|
||||
type = "group",
|
||||
childGroups = "tree",
|
||||
name = L["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 +861,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
|
||||
},
|
||||
}
|
@ -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
|
||||
@ -160,57 +162,22 @@ function Diminishings:UpdateFrame(unit)
|
||||
end
|
||||
|
||||
drFrame:ClearAllPoints()
|
||||
local horizontalMargin = Gladdy.db.highlightBorderSize + Gladdy.db.padding
|
||||
local verticalMargin = -(Gladdy.db.powerBarHeight)/2
|
||||
local horizontalMargin = (Gladdy.db.highlightInset and 0 or Gladdy.db.highlightBorderSize) + Gladdy.db.padding
|
||||
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 }
|
||||
@ -388,14 +359,14 @@ function Diminishings:GetOptions()
|
||||
},
|
||||
drEnabled = Gladdy:option({
|
||||
type = "toggle",
|
||||
name = L["Enable"],
|
||||
name = L["Enabled"],
|
||||
desc = L["Enabled DR module"],
|
||||
order = 3,
|
||||
}),
|
||||
group = {
|
||||
type = "group",
|
||||
childGroups = "tree",
|
||||
name = "Frame",
|
||||
name = L["Frame"],
|
||||
order = 4,
|
||||
args = {
|
||||
icon = {
|
||||
@ -451,6 +422,7 @@ function Diminishings:GetOptions()
|
||||
type = "toggle",
|
||||
name = L["No Cooldown Circle"],
|
||||
order = 8,
|
||||
width = "full",
|
||||
}),
|
||||
drCooldownAlpha = Gladdy:option({
|
||||
type = "range",
|
||||
|
@ -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 ExportImport = Gladdy:NewModule("Export Import", 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
|
||||
@ -91,26 +85,29 @@ end)
|
||||
import:AddChild(importClearButton)
|
||||
import.clearButton = importClearButton
|
||||
|
||||
local deletedOptions = { --TODO backward compatibility Imports on deleted options
|
||||
growUp = true
|
||||
}
|
||||
|
||||
function ExportImport:CheckDeserializedOptions(tbl, refTbl, str)
|
||||
if str == nil and not tbl.version_major 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 +127,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 +151,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()
|
||||
@ -195,3 +167,53 @@ function ExportImport:GetOptions()
|
||||
},
|
||||
}
|
||||
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
|
@ -8,7 +8,7 @@ local RAID_CLASS_COLORS = RAID_CLASS_COLORS
|
||||
local Gladdy = LibStub("Gladdy")
|
||||
local L = Gladdy.L
|
||||
local AceGUIWidgetLSMlists = AceGUIWidgetLSMlists
|
||||
local Healthbar = Gladdy:NewModule("Healthbar", 100, {
|
||||
local Healthbar = Gladdy:NewModule("Health Bar", 100, {
|
||||
healthBarFont = "DorisPP",
|
||||
healthBarHeight = 60,
|
||||
healthBarTexture = "Smooth",
|
||||
@ -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)
|
||||
@ -92,8 +98,9 @@ function Healthbar.OnEvent(self, event, unit)
|
||||
if event == "UNIT_HEALTH" then
|
||||
local health = UnitHealth(unit)
|
||||
local healthMax = UnitHealthMax(unit)
|
||||
Healthbar:SetHealthText(self, health, healthMax)
|
||||
self.hp:SetMinMaxValues(0, healthMax)
|
||||
self.hp:SetValue(UnitHealth(unit))
|
||||
Healthbar:SetHealthText(self, health, healthMax)
|
||||
elseif event == "UNIT_MAXHEALTH" then
|
||||
local health = UnitHealth(unit)
|
||||
local healthMax = UnitHealthMax(unit)
|
||||
@ -103,7 +110,9 @@ function Healthbar.OnEvent(self, event, unit)
|
||||
elseif event == "UNIT_NAME_UPDATE" then
|
||||
local name = UnitName(unit)
|
||||
Gladdy.buttons[unit].name = name
|
||||
self.nameText:SetText(name)
|
||||
if Gladdy.db.healthName and not Gladdy.db.healthNameToArenaId then
|
||||
self.nameText:SetText(name)
|
||||
end
|
||||
end
|
||||
if not Gladdy.buttons[unit].class then
|
||||
Gladdy:SpotEnemy(unit, true)
|
||||
@ -158,7 +167,7 @@ function Healthbar:UpdateFrame(unit)
|
||||
edgeSize = Gladdy.db.healthBarBorderSize })
|
||||
healthBar:SetBackdropBorderColor(Gladdy.db.healthBarBorderColor.r, Gladdy.db.healthBarBorderColor.g, Gladdy.db.healthBarBorderColor.b, Gladdy.db.healthBarBorderColor.a)
|
||||
healthBar:ClearAllPoints()
|
||||
healthBar:SetPoint("TOPLEFT", Gladdy.buttons[unit], "TOPLEFT", iconSize, 0)
|
||||
healthBar:SetPoint("TOPLEFT", Gladdy.buttons[unit], "TOPLEFT", 0, 0)
|
||||
healthBar:SetPoint("BOTTOMRIGHT", Gladdy.buttons[unit], "BOTTOMRIGHT")
|
||||
|
||||
healthBar.hp:SetStatusBarTexture(Gladdy.LSM:Fetch("statusbar", Gladdy.db.healthBarTexture))
|
||||
@ -166,17 +175,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 +216,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 +244,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 +299,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)
|
||||
@ -279,10 +319,13 @@ local function option(params)
|
||||
set = function(info, value)
|
||||
local key = info.arg or info[#info]
|
||||
Gladdy.dbi.profile[key] = value
|
||||
Gladdy.options.args.Healthbar.args.group.args.border.args.healthBarBorderSize.max = Gladdy.db.healthBarHeight/2
|
||||
Gladdy.options.args["Health Bar"].args.group.args.border.args.healthBarBorderSize.max = Gladdy.db.healthBarHeight/2
|
||||
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,
|
||||
}
|
||||
@ -304,7 +347,7 @@ function Healthbar:GetOptions()
|
||||
group = {
|
||||
type = "group",
|
||||
childGroups = "tree",
|
||||
name = "Frame",
|
||||
name = L["Frame"],
|
||||
order = 3,
|
||||
args = {
|
||||
general = {
|
||||
@ -368,11 +411,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 +468,49 @@ 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,
|
||||
width = "full",
|
||||
}),
|
||||
healthNameToArenaId = option({
|
||||
type = "toggle",
|
||||
name = L["Show ArenaX"],
|
||||
desc = L["Show Arena1-5 as name instead"],
|
||||
order = 3,
|
||||
width = "full",
|
||||
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,
|
||||
width = "full",
|
||||
}),
|
||||
healthMax = option({
|
||||
type = "toggle",
|
||||
name = L["Show max health"],
|
||||
desc = L["Show max health on the health bar"],
|
||||
order = 32,
|
||||
order = 5,
|
||||
width = "full",
|
||||
}),
|
||||
healthPercentage = option({
|
||||
type = "toggle",
|
||||
name = L["Show health percentage"],
|
||||
desc = L["Show health percentage on the health bar"],
|
||||
order = 33,
|
||||
order = 6,
|
||||
width = "full",
|
||||
}),
|
||||
},
|
||||
},
|
||||
|
@ -3,10 +3,12 @@ local CreateFrame, UnitIsUnit = CreateFrame, UnitIsUnit
|
||||
local Gladdy = LibStub("Gladdy")
|
||||
local L = Gladdy.L
|
||||
local Highlight = Gladdy:NewModule("Highlight", nil, {
|
||||
highlightBorderSize = 2,
|
||||
highlightBorderSize = 1,
|
||||
highlightInset = false,
|
||||
targetBorderColor = { r = 1, g = 0.8, b = 0, a = 1 },
|
||||
focusBorderColor = { r = 1, g = 0, b = 0, a = 1 },
|
||||
leaderBorderColor = { r = 0, g = 1, b = 0, a = 1 },
|
||||
highlightBorderStyle = "Square Full White",
|
||||
highlight = true,
|
||||
targetBorder = true,
|
||||
focusBorder = true,
|
||||
@ -50,21 +52,21 @@ function Highlight:CreateFrame(unit)
|
||||
return
|
||||
end
|
||||
|
||||
local healthBar = Gladdy.modules.Healthbar.frames[unit]
|
||||
local healthBar = Gladdy.modules["Health Bar"].frames[unit]
|
||||
|
||||
local targetBorder = CreateFrame("Frame", nil, button, BackdropTemplateMixin and "BackdropTemplate")
|
||||
targetBorder:SetBackdrop({ edgeFile = "Interface\\ChatFrame\\ChatFrameBackground", edgeSize = Gladdy.db.highlightBorderSize })
|
||||
targetBorder:SetFrameStrata("HIGH")
|
||||
targetBorder:SetBackdrop({ edgeFile = Gladdy.LSM:Fetch("border", Gladdy.db.highlightBorderStyle), edgeSize = Gladdy.db.highlightBorderSize })
|
||||
--targetBorder:SetFrameStrata("MEDIUM")
|
||||
targetBorder:Hide()
|
||||
|
||||
local focusBorder = CreateFrame("Frame", nil, button, BackdropTemplateMixin and "BackdropTemplate")
|
||||
focusBorder:SetBackdrop({ edgeFile = "Interface\\ChatFrame\\ChatFrameBackground", edgeSize = Gladdy.db.highlightBorderSize })
|
||||
focusBorder:SetFrameStrata("LOW")
|
||||
focusBorder:SetBackdrop({ edgeFile = Gladdy.LSM:Fetch("border", Gladdy.db.highlightBorderStyle), edgeSize = Gladdy.db.highlightBorderSize })
|
||||
--focusBorder:SetFrameStrata("MEDIUM")
|
||||
focusBorder:Hide()
|
||||
|
||||
local leaderBorder = CreateFrame("Frame", nil, button, BackdropTemplateMixin and "BackdropTemplate")
|
||||
leaderBorder:SetBackdrop({ edgeFile = "Interface\\ChatFrame\\ChatFrameBackground", edgeSize = Gladdy.db.highlightBorderSize })
|
||||
leaderBorder:SetFrameStrata("MEDIUM")
|
||||
leaderBorder:SetBackdrop({ edgeFile = Gladdy.LSM:Fetch("border", Gladdy.db.highlightBorderStyle), edgeSize = Gladdy.db.highlightBorderSize })
|
||||
--leaderBorder:SetFrameStrata("MEDIUM")
|
||||
leaderBorder:Hide()
|
||||
|
||||
local highlight = healthBar:CreateTexture(nil, "OVERLAY")
|
||||
@ -88,29 +90,48 @@ function Highlight:UpdateFrame(unit)
|
||||
end
|
||||
|
||||
local borderSize = Gladdy.db.highlightBorderSize
|
||||
local borderOffset = borderSize
|
||||
local iconSize = Gladdy.db.healthBarHeight + Gladdy.db.powerBarHeight + 1
|
||||
local width = Gladdy.db.barWidth + borderSize * 2
|
||||
local height = iconSize + borderSize * 2
|
||||
local width = Gladdy.db.barWidth + (Gladdy.db.highlightInset and 0 or borderSize * 2)
|
||||
local height = iconSize + (Gladdy.db.highlightInset and 0 or borderSize * 2)
|
||||
|
||||
button.targetBorder:SetWidth(width)
|
||||
button.targetBorder:SetHeight(height)
|
||||
button.targetBorder:ClearAllPoints()
|
||||
button.targetBorder:SetPoint("TOP", button.healthBar, "TOP", 0, borderSize)
|
||||
button.targetBorder:SetBackdrop({ edgeFile = "Interface\\ChatFrame\\ChatFrameBackground", edgeSize = borderSize })
|
||||
if Gladdy.db.highlightInset then
|
||||
button.targetBorder:SetPoint("TOPLEFT", button.healthBar, "TOPLEFT", -(borderOffset/Gladdy.db.statusbarBorderOffset), (borderOffset/Gladdy.db.statusbarBorderOffset))
|
||||
button.targetBorder:SetPoint("BOTTOMRIGHT", button.powerBar, "BOTTOMRIGHT", (borderOffset/Gladdy.db.statusbarBorderOffset), -(borderOffset/Gladdy.db.statusbarBorderOffset))
|
||||
else
|
||||
button.targetBorder:SetPoint("TOP", button.healthBar, "TOP", 0, (Gladdy.db.highlightInset and 0 or borderSize))
|
||||
end
|
||||
|
||||
button.targetBorder:SetBackdrop({ edgeFile = Gladdy.LSM:Fetch("border", Gladdy.db.highlightBorderStyle), edgeSize = borderSize })
|
||||
button.targetBorder:SetBackdropBorderColor(Gladdy.db.targetBorderColor.r, Gladdy.db.targetBorderColor.g, Gladdy.db.targetBorderColor.b, Gladdy.db.targetBorderColor.a)
|
||||
|
||||
button.focusBorder:SetWidth(width)
|
||||
button.focusBorder:SetHeight(height)
|
||||
button.focusBorder:ClearAllPoints()
|
||||
button.focusBorder:SetPoint("TOP", button.healthBar, "TOP", 0, borderSize)
|
||||
button.focusBorder:SetBackdrop({ edgeFile = "Interface\\ChatFrame\\ChatFrameBackground", edgeSize = borderSize })
|
||||
if Gladdy.db.highlightInset then
|
||||
button.focusBorder:SetPoint("TOPLEFT", button.healthBar, "TOPLEFT", -(borderOffset/Gladdy.db.statusbarBorderOffset), (borderOffset/Gladdy.db.statusbarBorderOffset))
|
||||
button.focusBorder:SetPoint("BOTTOMRIGHT", button.powerBar, "BOTTOMRIGHT", (borderOffset/Gladdy.db.statusbarBorderOffset), -(borderOffset/Gladdy.db.statusbarBorderOffset))
|
||||
else
|
||||
button.focusBorder:SetPoint("TOP", button.healthBar, "TOP", 0, (Gladdy.db.highlightInset and 0 or borderSize))
|
||||
end
|
||||
|
||||
button.focusBorder:SetBackdrop({ edgeFile = Gladdy.LSM:Fetch("border", Gladdy.db.highlightBorderStyle), edgeSize = borderSize })
|
||||
button.focusBorder:SetBackdropBorderColor(Gladdy.db.focusBorderColor.r, Gladdy.db.focusBorderColor.g, Gladdy.db.focusBorderColor.b, Gladdy.db.focusBorderColor.a)
|
||||
|
||||
button.leaderBorder:SetWidth(width)
|
||||
button.leaderBorder:SetHeight(height)
|
||||
button.leaderBorder:ClearAllPoints()
|
||||
button.leaderBorder:SetPoint("TOP", button.healthBar, "TOP", 0, borderSize)
|
||||
button.leaderBorder:SetBackdrop({ edgeFile = "Interface\\ChatFrame\\ChatFrameBackground", edgeSize = borderSize })
|
||||
if Gladdy.db.highlightInset then
|
||||
button.leaderBorder:SetPoint("TOPLEFT", button.healthBar, "TOPLEFT", -(borderOffset/Gladdy.db.statusbarBorderOffset), (borderOffset/Gladdy.db.statusbarBorderOffset))
|
||||
button.leaderBorder:SetPoint("BOTTOMRIGHT", button.powerBar, "BOTTOMRIGHT", (borderOffset/Gladdy.db.statusbarBorderOffset), -(borderOffset/Gladdy.db.statusbarBorderOffset))
|
||||
else
|
||||
button.leaderBorder:SetPoint("TOP", button.healthBar, "TOP", 0, (Gladdy.db.highlightInset and 0 or borderSize))
|
||||
end
|
||||
|
||||
button.leaderBorder:SetBackdrop({ edgeFile = Gladdy.LSM:Fetch("border", Gladdy.db.highlightBorderStyle), edgeSize = borderSize })
|
||||
button.leaderBorder:SetBackdropBorderColor(Gladdy.db.leaderBorderColor.r, Gladdy.db.leaderBorderColor.g, Gladdy.db.leaderBorderColor.b, Gladdy.db.leaderBorderColor.a)
|
||||
if Gladdy.frame.testing then
|
||||
Highlight:Test(unit)
|
||||
@ -179,39 +200,50 @@ function Highlight:GetOptions()
|
||||
name = L["Highlight"],
|
||||
order = 2,
|
||||
},
|
||||
highlightBorderSize = {
|
||||
highlightInset = Gladdy:option({
|
||||
type = "toggle",
|
||||
name = L["Show Inside"],
|
||||
desc = L["Show Highlight border inside of frame"],
|
||||
order = 3,
|
||||
}),
|
||||
highlightBorderSize = Gladdy:option({
|
||||
type = "range",
|
||||
name = L["Border size"],
|
||||
desc = L["Border size"],
|
||||
order = 3,
|
||||
order = 4,
|
||||
min = 1,
|
||||
max = 10,
|
||||
max = 20,
|
||||
step = 1,
|
||||
}),
|
||||
highlightBorderStyle = Gladdy:option({
|
||||
type = "select",
|
||||
name = L["Border style"],
|
||||
order = 5,
|
||||
dialogControl = "LSM30_Border",
|
||||
values = AceGUIWidgetLSMlists.border,
|
||||
}),
|
||||
headerColor = {
|
||||
type = "header",
|
||||
name = L["Colors"],
|
||||
order = 6,
|
||||
},
|
||||
targetBorderColor = Gladdy:colorOption({
|
||||
type = "color",
|
||||
name = L["Target border color"],
|
||||
desc = L["Color of the selected targets border"],
|
||||
order = 4,
|
||||
order = 7,
|
||||
hasAlpha = true,
|
||||
}),
|
||||
focusBorderColor = Gladdy:colorOption({
|
||||
type = "color",
|
||||
name = L["Focus border color"],
|
||||
desc = L["Color of the focus border"],
|
||||
order = 5,
|
||||
hasAlpha = true,
|
||||
}),
|
||||
leaderBorderColor = Gladdy:colorOption({
|
||||
type = "color",
|
||||
name = L["Raid leader border color"],
|
||||
desc = L["Color of the raid leader border"],
|
||||
order = 6,
|
||||
order = 8,
|
||||
hasAlpha = true,
|
||||
}),
|
||||
headerEnable = {
|
||||
type = "header",
|
||||
name = L["Enable/Disable"],
|
||||
name = L["Enabled"],
|
||||
order = 10,
|
||||
},
|
||||
highlight = Gladdy:option({
|
||||
@ -219,24 +251,21 @@ function Highlight:GetOptions()
|
||||
name = L["Highlight target"],
|
||||
desc = L["Toggle if the selected target should be highlighted"],
|
||||
order = 11,
|
||||
width = "full",
|
||||
}),
|
||||
targetBorder = Gladdy:option({
|
||||
type = "toggle",
|
||||
name = L["Show border around target"],
|
||||
desc = L["Toggle if a border should be shown around the selected target"],
|
||||
order = 12,
|
||||
width = "full",
|
||||
}),
|
||||
focusBorder = Gladdy:option({
|
||||
type = "toggle",
|
||||
name = L["Show border around focus"],
|
||||
desc = L["Toggle of a border should be shown around the current focus"],
|
||||
order = 13,
|
||||
}),
|
||||
leaderBorder = Gladdy:option({
|
||||
type = "toggle",
|
||||
name = L["Show border around raid leader"],
|
||||
desc = L["Toggle if a border should be shown around the raid leader"],
|
||||
order = 14,
|
||||
width = "full",
|
||||
}),
|
||||
}
|
||||
end
|
@ -1,12 +1,12 @@
|
||||
local string_gsub, floor, pairs = string.gsub, math.floor, pairs
|
||||
local CreateFrame = CreateFrame
|
||||
local CreateFrame, SetPortraitTexture = CreateFrame, SetPortraitTexture
|
||||
local UnitHealthMax, UnitHealth, UnitGUID = UnitHealthMax, UnitHealth, UnitGUID
|
||||
|
||||
local Gladdy = LibStub("Gladdy")
|
||||
local L = Gladdy.L
|
||||
local Pets = Gladdy:NewModule("Pets", nil, {
|
||||
petEnabled = true,
|
||||
petWidth = 100,
|
||||
petWidth = 128,
|
||||
petHeight = 20,
|
||||
petPortraitEnabled = true,
|
||||
petPortraitBorderStyle = "Interface\\AddOns\\Gladdy\\Images\\Border_rounded_blp",
|
||||
@ -21,8 +21,8 @@ local Pets = Gladdy:NewModule("Pets", nil, {
|
||||
petHealthBarFontColor = { r = 1, g = 1, b = 1, a = 1 },
|
||||
petHealthBarFontSize = 12,
|
||||
petHealthPercentage = true,
|
||||
petXOffset = 50,
|
||||
petYOffset = 0,
|
||||
petXOffset = 1,
|
||||
petYOffset = -62,
|
||||
})
|
||||
|
||||
function Pets:Initialize()
|
||||
@ -124,6 +124,7 @@ function Pets:Test(unitId)
|
||||
petFrame.healthBar.hp:SetMinMaxValues(0, 6200)
|
||||
petFrame.healthBar.hp:SetValue(2000)
|
||||
Pets:SetHealthText(petFrame.healthBar, 2000, 6200)
|
||||
SetPortraitTexture(petFrame.healthBar.portrait, "player")
|
||||
end
|
||||
end
|
||||
|
||||
@ -332,21 +333,21 @@ end
|
||||
|
||||
function Pets:GetOptions()
|
||||
return {
|
||||
headerHealthbar = {
|
||||
header = {
|
||||
type = "header",
|
||||
name = L["Health Bar"],
|
||||
name = L["Pets"],
|
||||
order = 2,
|
||||
},
|
||||
petEnabled = Gladdy:option({
|
||||
type = "toggle",
|
||||
name = L["Enable"],
|
||||
desc = L["Enabled Pets module"],
|
||||
name = L["Enabled"],
|
||||
desc = L["Enables Pets module"],
|
||||
order = 3,
|
||||
}),
|
||||
group = {
|
||||
type = "group",
|
||||
childGroups = "tree",
|
||||
name = "Frame",
|
||||
name = L["Frame"],
|
||||
order = 3,
|
||||
args = {
|
||||
general = {
|
||||
@ -374,7 +375,7 @@ function Pets:GetOptions()
|
||||
desc = L["Width of the bar"],
|
||||
order = 4,
|
||||
min = 10,
|
||||
max = 100,
|
||||
max = 300,
|
||||
step = 1,
|
||||
}),
|
||||
petHealthBarTexture = option({
|
||||
@ -500,20 +501,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,
|
||||
}),
|
||||
}
|
||||
|
@ -6,7 +6,7 @@ local CreateFrame, UnitPower, UnitPowerType, UnitPowerMax, UnitExists = CreateFr
|
||||
local Gladdy = LibStub("Gladdy")
|
||||
local L = Gladdy.L
|
||||
local AceGUIWidgetLSMlists = AceGUIWidgetLSMlists
|
||||
local Powerbar = Gladdy:NewModule("Powerbar", 90, {
|
||||
local Powerbar = Gladdy:NewModule("Power Bar", 90, {
|
||||
powerBarFont = "DorisPP",
|
||||
powerBarHeight = 20,
|
||||
powerBarTexture = "Smooth",
|
||||
@ -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)
|
||||
@ -128,7 +132,7 @@ function Powerbar:UpdateFrame(unit)
|
||||
return
|
||||
end
|
||||
|
||||
local healthBar = Gladdy.modules.Healthbar.frames[unit]
|
||||
local healthBar = Gladdy.modules["Health Bar"].frames[unit]
|
||||
|
||||
|
||||
powerBar.bg:SetTexture(Gladdy.LSM:Fetch("statusbar", Gladdy.db.powerBarTexture))
|
||||
@ -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["Power Bar"].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,
|
||||
}
|
||||
@ -297,7 +318,7 @@ function Powerbar:GetOptions()
|
||||
group = {
|
||||
type = "group",
|
||||
childGroups = "tree",
|
||||
name = "Frame",
|
||||
name = L["Frame"],
|
||||
order = 3,
|
||||
args = {
|
||||
general = {
|
||||
@ -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"],
|
||||
|
395
Modules/Racial.lua
Normal file
395
Modules/Racial.lua
Normal file
@ -0,0 +1,395 @@
|
||||
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.highlightInset and 0 or Gladdy.db.highlightBorderSize) + Gladdy.db.padding
|
||||
local parent = Gladdy.buttons[unit][Gladdy.db.racialAnchor]
|
||||
if (Gladdy.db.racialPos == "RIGHT") then
|
||||
racial:SetPoint(ANCHORS[Gladdy.db.racialPos], parent, Gladdy.db.racialPos, Gladdy.db.padding + Gladdy.db.racialXOffset, Gladdy.db.racialYOffset)
|
||||
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 = L["Frame"],
|
||||
order = 4,
|
||||
args = {
|
||||
general = {
|
||||
type = "group",
|
||||
name = L["Size"],
|
||||
order = 1,
|
||||
args = {
|
||||
header = {
|
||||
type = "header",
|
||||
name = L["Size"],
|
||||
order = 1,
|
||||
},
|
||||
racialSize = Gladdy:option({
|
||||
type = "range",
|
||||
name = L["Icon size"],
|
||||
min = 5,
|
||||
max = 100,
|
||||
step = 1,
|
||||
order = 2,
|
||||
}),
|
||||
racialWidthFactor = Gladdy:option({
|
||||
type = "range",
|
||||
name = L["Icon width factor"],
|
||||
min = 0.5,
|
||||
max = 2,
|
||||
step = 0.05,
|
||||
order = 3,
|
||||
}),
|
||||
},
|
||||
},
|
||||
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,
|
||||
width = "full",
|
||||
}),
|
||||
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["Icon 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["Icon 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
|
@ -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"] = {
|
||||
@ -78,36 +78,11 @@ local localizedTotemData = {
|
||||
[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")],
|
||||
[string_lower("Totem d'\195\169lementaire de terre")] = totemData[string_lower("Earth Elemental Totem")], -- Earth Elemental Totem
|
||||
[string_lower("Totem d'\195\169lementaire de feu")] = totemData[string_lower("Fire Elemental Totem")], -- Fire Elemental Totem
|
||||
},
|
||||
["ruRU"] = {
|
||||
[string_lower("")] = totemData[string_lower("Sentry Totem")], -- Sentry Totem
|
||||
}
|
||||
}
|
||||
|
||||
@ -122,7 +97,7 @@ local function GetTotemColorDefaultOptions()
|
||||
return a.name < b.name
|
||||
end)
|
||||
for i=1,#indexedList do
|
||||
defaultDB["totem" .. indexedList[i].id] = {color = indexedList[i].color, enabled = indexedList[i].enabled, alpha = 0.6}
|
||||
defaultDB["totem" .. indexedList[i].id] = {color = indexedList[i].color, enabled = indexedList[i].enabled, alpha = 0.6, customText = ""}
|
||||
options["totem" .. indexedList[i].id] = {
|
||||
order = i+1,
|
||||
name = select(1, GetSpellInfo(indexedList[i].id)),
|
||||
@ -138,7 +113,7 @@ local function GetTotemColorDefaultOptions()
|
||||
},
|
||||
enabled = {
|
||||
order = 2,
|
||||
name = "Enabled",
|
||||
name = L["Enabled"],
|
||||
desc = "Enable " .. format("|T%s:20|t %s", indexedList[i].texture, select(1, GetSpellInfo(indexedList[i].id))),
|
||||
type = "toggle",
|
||||
width = "full",
|
||||
@ -188,12 +163,12 @@ local function GetTotemColorDefaultOptions()
|
||||
end
|
||||
},
|
||||
customText = {
|
||||
type = "input",
|
||||
name = L["Custom totem name"],
|
||||
order = 5,
|
||||
width = "full",
|
||||
get = function(info) return Gladdy.dbi.profile.npTotemColors["totem" .. indexedList[i].id].customText end,
|
||||
set = function(info, value) Gladdy.dbi.profile.npTotemColors["totem" .. indexedList[i].id].customText = value Gladdy:UpdateFrame() end
|
||||
type = "input",
|
||||
name = L["Custom totem name"],
|
||||
order = 5,
|
||||
width = "full",
|
||||
get = function(info) return Gladdy.db.npTotemColors["totem" .. indexedList[i].id].customText end,
|
||||
set = function(info, value) Gladdy.db.npTotemColors["totem" .. indexedList[i].id].customText = value Gladdy:UpdateFrame() end
|
||||
},
|
||||
}
|
||||
}
|
||||
@ -220,8 +195,10 @@ end
|
||||
|
||||
---------------------------------------------------
|
||||
|
||||
local TotemPlates = Gladdy:NewModule("TotemPlates", nil, {
|
||||
local TotemPlates = Gladdy:NewModule("Totem Plates", nil, {
|
||||
npTotems = true,
|
||||
npTotemsShowFriendly = true,
|
||||
npTotemsShowEnemy = true,
|
||||
npTotemPlatesBorderStyle = "Interface\\AddOns\\Gladdy\\Images\\Border_rounded_blp",
|
||||
npTotemPlatesSize = 40,
|
||||
npTotemPlatesWidthFactor = 1,
|
||||
@ -251,6 +228,20 @@ function TotemPlates:Initialize()
|
||||
self:RegisterEvent("NAME_PLATE_UNIT_REMOVED")
|
||||
self:RegisterEvent("PLAYER_TARGET_CHANGED")
|
||||
self:SetScript("OnEvent", TotemPlates.OnEvent)
|
||||
if Gladdy.db.npTotems and Gladdy.db.npTotemsShowEnemy then
|
||||
--GetCVar("nameplateShowEnemyTotems")
|
||||
--SetCVar("nameplateShowEnemyTotems", true);
|
||||
end
|
||||
if Gladdy.db.npTotems and Gladdy.db.npTotemsShowFriendly then
|
||||
--GetCVar("nameplateShowFriendlyTotems")
|
||||
--SetCVar("nameplateShowFriendlyTotems", true);
|
||||
end
|
||||
|
||||
--NeatPlates
|
||||
--ELVUI
|
||||
--Plater
|
||||
--KUI
|
||||
--threatplates
|
||||
end
|
||||
|
||||
function TotemPlates:PLAYER_ENTERING_WORLD()
|
||||
@ -303,13 +294,20 @@ 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
|
||||
totemName = string_gsub(totemName, "%s+[I,V,X]+$", "") --trim rank
|
||||
totemName = string_lower(totemName)
|
||||
local nameplate = C_NamePlate.GetNamePlateForUnit(unitID)
|
||||
local totemDataEntry = localizedTotemData["default"][totemName]
|
||||
local totemDataEntry = localizedTotemData["default"][totemName] or localizedTotemData["frFR"][totemName] or localizedTotemData["ruRU"][totemName]
|
||||
if totemDataEntry and Gladdy.db.npTotemColors["totem" .. totemDataEntry.id].enabled then-- modify this nameplates
|
||||
|
||||
if #self.totemPlateCache > 0 then
|
||||
@ -320,6 +318,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")
|
||||
@ -347,15 +346,14 @@ function TotemPlates:NAME_PLATE_UNIT_ADDED(...)
|
||||
TotemPlates:SetTotemAlpha(nameplate.gladdyTotemFrame, unitID)
|
||||
|
||||
nameplate.UnitFrame:SetAlpha(0)
|
||||
nameplate.UnitFrame.point = select(2, nameplate.UnitFrame.selectionHighlight:GetPoint())
|
||||
nameplate.UnitFrame.selectionHighlight:ClearAllPoints()
|
||||
nameplate.UnitFrame.selectionHighlight:SetPoint("TOPLEFT", nameplate.gladdyTotemFrame, "TOPLEFT", Gladdy.db.npTotemPlatesSize/16, -Gladdy.db.npTotemPlatesSize/16)
|
||||
nameplate.UnitFrame.selectionHighlight:SetPoint("BOTTOMRIGHT", nameplate.gladdyTotemFrame, "BOTTOMRIGHT", -Gladdy.db.npTotemPlatesSize/16, Gladdy.db.npTotemPlatesSize/16)
|
||||
nameplate.UnitFrame:SetScript("OnHide", function(unitFrame)
|
||||
unitFrame:SetAlpha(1)
|
||||
unitFrame.selectionHighlight:ClearAllPoints()
|
||||
unitFrame.selectionHighlight:SetPoint("TOPLEFT", unitFrame.point, "TOPLEFT")
|
||||
unitFrame.selectionHighlight:SetPoint("BOTTOMRIGHT", unitFrame.point, "BOTTOMRIGHT")
|
||||
unitFrame.selectionHighlight:SetPoint("TOPLEFT", unitFrame.healthBar.barTexture, "TOPLEFT")
|
||||
unitFrame.selectionHighlight:SetPoint("BOTTOMRIGHT", unitFrame.healthBar.barTexture, "BOTTOMRIGHT")
|
||||
unitFrame:SetScript("OnHide", nil)
|
||||
end)
|
||||
self.activeTotemNameplates[unitID] = nameplate
|
||||
@ -406,19 +404,34 @@ function TotemPlates:GetOptions()
|
||||
return {
|
||||
headerTotems = {
|
||||
type = "header",
|
||||
name = L["Totem General"],
|
||||
name = L["Totem Plates"],
|
||||
order = 2,
|
||||
},
|
||||
npTotems = Gladdy:option({
|
||||
type = "toggle",
|
||||
name = L["Totem icons on/off"],
|
||||
name = L["Enabled"],
|
||||
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",
|
||||
childGroups = "tree",
|
||||
name = "Frame",
|
||||
name = L["Frame"],
|
||||
order = 4,
|
||||
args = {
|
||||
icon = {
|
||||
@ -439,6 +452,7 @@ function TotemPlates:GetOptions()
|
||||
min = 20,
|
||||
max = 100,
|
||||
step = 1,
|
||||
width = "full",
|
||||
}),
|
||||
npTotemPlatesWidthFactor = Gladdy:option({
|
||||
type = "range",
|
||||
@ -448,6 +462,7 @@ function TotemPlates:GetOptions()
|
||||
min = 0.5,
|
||||
max = 2,
|
||||
step = 0.05,
|
||||
width = "full",
|
||||
}),
|
||||
},
|
||||
},
|
||||
@ -458,7 +473,7 @@ function TotemPlates:GetOptions()
|
||||
args = {
|
||||
header = {
|
||||
type = "header",
|
||||
name = L["Icon"],
|
||||
name = L["Font"],
|
||||
order = 1,
|
||||
},
|
||||
npTremorFont = Gladdy:option({
|
||||
@ -477,6 +492,7 @@ function TotemPlates:GetOptions()
|
||||
min = 1,
|
||||
max = 50,
|
||||
step = 0.1,
|
||||
width = "full",
|
||||
}),
|
||||
npTremorFontXOffset = Gladdy:option({
|
||||
type = "range",
|
||||
@ -486,6 +502,7 @@ function TotemPlates:GetOptions()
|
||||
min = -300,
|
||||
max = 300,
|
||||
step = 1,
|
||||
width = "full",
|
||||
}),
|
||||
npTremorFontYOffset = Gladdy:option({
|
||||
type = "range",
|
||||
@ -495,6 +512,7 @@ function TotemPlates:GetOptions()
|
||||
min = -300,
|
||||
max = 300,
|
||||
step = 1,
|
||||
width = "full",
|
||||
}),
|
||||
},
|
||||
},
|
||||
@ -528,7 +546,7 @@ function TotemPlates:GetOptions()
|
||||
min = 0,
|
||||
max = 1,
|
||||
step = 0.1,
|
||||
width = "double",
|
||||
width = "full",
|
||||
order = 23,
|
||||
get = function(info)
|
||||
local alphas = GetTotemOptions()
|
||||
@ -597,7 +615,7 @@ function TotemPlates:GetOptions()
|
||||
},
|
||||
npTotemColors = {
|
||||
order = 50,
|
||||
name = "Customize Totems",
|
||||
name = L["Customize Totems"],
|
||||
type = "group",
|
||||
childGroups = "tree",
|
||||
args = select(2, Gladdy:GetTotemColors())
|
||||
|
@ -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)
|
||||
@ -127,7 +130,7 @@ function Trinket:UpdateFrame(unit)
|
||||
trinket.texture.overlay:SetVertexColor(Gladdy.db.trinketBorderColor.r, Gladdy.db.trinketBorderColor.g, Gladdy.db.trinketBorderColor.b, Gladdy.db.trinketBorderColor.a)
|
||||
|
||||
trinket:ClearAllPoints()
|
||||
local margin = Gladdy.db.highlightBorderSize + Gladdy.db.padding
|
||||
local margin = (Gladdy.db.highlightInset and 0 or Gladdy.db.highlightBorderSize) + Gladdy.db.padding
|
||||
if (Gladdy.db.classIconPos == "LEFT") then
|
||||
if (Gladdy.db.trinketPos == "RIGHT") then
|
||||
trinket:SetPoint("TOPLEFT", Gladdy.buttons[unit].healthBar, "TOPRIGHT", margin, 0)
|
||||
@ -226,7 +229,7 @@ function Trinket:GetOptions()
|
||||
group = {
|
||||
type = "group",
|
||||
childGroups = "tree",
|
||||
name = "Frame",
|
||||
name = L["Frame"],
|
||||
order = 4,
|
||||
args = {
|
||||
general = {
|
||||
@ -237,11 +240,11 @@ function Trinket:GetOptions()
|
||||
header = {
|
||||
type = "header",
|
||||
name = L["Size"],
|
||||
order = 4,
|
||||
order = 1,
|
||||
},
|
||||
trinketSize = Gladdy:option({
|
||||
type = "range",
|
||||
name = L["Trinket size"],
|
||||
name = L["Size"],
|
||||
min = 5,
|
||||
max = 100,
|
||||
step = 1,
|
||||
@ -271,6 +274,7 @@ function Trinket:GetOptions()
|
||||
type = "toggle",
|
||||
name = L["No Cooldown Circle"],
|
||||
order = 7,
|
||||
width = "full",
|
||||
}),
|
||||
trinketCooldownAlpha = Gladdy:option({
|
||||
type = "range",
|
||||
@ -318,12 +322,12 @@ function Trinket:GetOptions()
|
||||
args = {
|
||||
header = {
|
||||
type = "header",
|
||||
name = L["Position"],
|
||||
name = L["Icon position"],
|
||||
order = 4,
|
||||
},
|
||||
trinketPos = Gladdy:option({
|
||||
type = "select",
|
||||
name = L["Trinket position"],
|
||||
name = L["Icon position"],
|
||||
desc = L["This changes positions of the trinket"],
|
||||
order = 21,
|
||||
values = {
|
||||
|
@ -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
|
||||
|
@ -5,232 +5,70 @@ 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["Export Import"]:Decode(Gladdy:GetKlimpProfile())
|
||||
if deserialized then
|
||||
Gladdy.modules["Export Import"]: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["Export Import"]:Decode(Gladdy:GetKnallProfile())
|
||||
if deserialized then
|
||||
Gladdy.modules["Export Import"]: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["Export Import"]:Decode(Gladdy:GetClassicProfile())
|
||||
if deserialized then
|
||||
Gladdy.modules["Export Import"]:ApplyImport(deserialized, Gladdy.db)
|
||||
end
|
||||
Gladdy:Reset()
|
||||
Gladdy:HideFrame()
|
||||
Gladdy:ToggleFrame(3)
|
||||
end
|
||||
|
||||
function XiconProfiles:ApplyBlizz()
|
||||
local deserialized = Gladdy.modules["Export Import"]:Decode(Gladdy:GetBlizzardProfile())
|
||||
if deserialized then
|
||||
Gladdy.modules["Export Import"]:ApplyImport(deserialized, Gladdy.db)
|
||||
end
|
||||
Gladdy:Reset()
|
||||
Gladdy:HideFrame()
|
||||
Gladdy:ToggleFrame(3)
|
||||
end
|
||||
|
||||
function XiconProfiles:GetOptions()
|
||||
return {
|
||||
headerProfileBlizzard = {
|
||||
type = "header",
|
||||
name = "Blizzard " .. L["Profile"],
|
||||
order = 2,
|
||||
},
|
||||
blizzardProfile = {
|
||||
type = "execute",
|
||||
func = function()
|
||||
Gladdy.dbi:ResetProfile(Gladdy.dbi:GetCurrentProfile())
|
||||
XiconProfiles:ApplyBlizz()
|
||||
end,
|
||||
name = " ",
|
||||
desc = "Blizzard " .. L["Profile"],
|
||||
image = "Interface\\AddOns\\Gladdy\\Images\\BasicProfiles\\Blizz1.blp",
|
||||
imageWidth = 350,
|
||||
imageHeight = 175,
|
||||
width = "full",
|
||||
order = 3,
|
||||
},
|
||||
headerProfileClassic = {
|
||||
type = "header",
|
||||
name = L["Classic Profile"],
|
||||
order = 2,
|
||||
name = "Classic " .. L["Profile"],
|
||||
order = 4,
|
||||
},
|
||||
classicProfile = {
|
||||
type = "execute",
|
||||
@ -239,17 +77,17 @@ function XiconProfiles:GetOptions()
|
||||
XiconProfiles:ApplyClassic()
|
||||
end,
|
||||
name = " ",
|
||||
desc = "Classic Profile",
|
||||
desc = "Classic " .. L["Profile"],
|
||||
image = "Interface\\AddOns\\Gladdy\\Images\\BasicProfiles\\Classic1.blp",
|
||||
imageWidth = 256,
|
||||
imageHeight = 128,
|
||||
imageWidth = 350,
|
||||
imageHeight = 175,
|
||||
width = "full",
|
||||
order = 3,
|
||||
order = 5,
|
||||
},
|
||||
headerProfileKnall = {
|
||||
type = "header",
|
||||
name = L["Knall's Profile"],
|
||||
order = 4,
|
||||
name = "Knall's " .. L["Profile"],
|
||||
order = 6,
|
||||
},
|
||||
knallProfile = {
|
||||
type = "execute",
|
||||
@ -258,17 +96,17 @@ function XiconProfiles:GetOptions()
|
||||
XiconProfiles:ApplyKnall()
|
||||
end,
|
||||
name = " ",
|
||||
desc = "Knall's Profile",
|
||||
desc = "Knall's " .. L["Profile"],
|
||||
image = "Interface\\AddOns\\Gladdy\\Images\\BasicProfiles\\Knall1.blp",
|
||||
imageWidth = 256,
|
||||
imageHeight = 128,
|
||||
imageWidth = 350,
|
||||
imageHeight = 175,
|
||||
width = "full",
|
||||
order = 5,
|
||||
order = 7,
|
||||
},
|
||||
headerProfileKlimp = {
|
||||
type = "header",
|
||||
name = L["Klimp's Profile"],
|
||||
order = 6,
|
||||
name = "Klimp's " .. L["Profile"],
|
||||
order = 8,
|
||||
},
|
||||
klimpProfiles = {
|
||||
type = "execute",
|
||||
@ -277,12 +115,13 @@ 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",
|
||||
desc = "Klimp's " .. L["Profile"],
|
||||
width = "full",
|
||||
order = 7,
|
||||
order = 9,
|
||||
},
|
||||
|
||||
}
|
||||
end
|
238
Options.lua
238
Options.lua
@ -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")
|
||||
@ -15,25 +16,24 @@ Gladdy.defaults = {
|
||||
x = 0,
|
||||
y = 0,
|
||||
growUp = false,
|
||||
growDirection = "BOTTOM",
|
||||
frameScale = 1,
|
||||
padding = 3,
|
||||
padding = 1,
|
||||
barWidth = 180,
|
||||
bottomMargin = 10,
|
||||
statusbarBorderOffset = 7,
|
||||
bottomMargin = 2,
|
||||
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 +42,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
|
||||
@ -113,7 +114,7 @@ function Gladdy:SetupModule(name, module, order)
|
||||
self.options.args[name] = {
|
||||
type = "group",
|
||||
name = L[name],
|
||||
desc = L[name .. " settings"],
|
||||
desc = L[name] .. " " .. L["settings"],
|
||||
childGroups = "tab",
|
||||
order = order,
|
||||
args = {},
|
||||
@ -151,7 +152,7 @@ local function pairsByKeys(t)
|
||||
for k in pairs(t) do
|
||||
tinsert(a, k)
|
||||
end
|
||||
tsort(a)
|
||||
tsort(a, function(a, b) return L[a] < L[b] end)
|
||||
|
||||
local i = 0
|
||||
return function()
|
||||
@ -193,10 +194,21 @@ function Gladdy:SetupOptions()
|
||||
desc = L["If enabled the frame will grow upwards instead of downwards"],
|
||||
order = 2,
|
||||
},
|
||||
growDirection = {
|
||||
type = "select",
|
||||
name = L["Grow Direction"],
|
||||
order = 3,
|
||||
values = {
|
||||
["BOTTOM"] = L["Down"],
|
||||
["TOP"] = L["Up"],
|
||||
["LEFT"] = L["Left"],
|
||||
["RIGHT"] = L["Right"],
|
||||
}
|
||||
},
|
||||
group = {
|
||||
type = "group",
|
||||
name = "General",
|
||||
order = 3,
|
||||
name = L["General"],
|
||||
order = 4,
|
||||
childGroups = "tree",
|
||||
args = {
|
||||
frameGeneral = {
|
||||
@ -238,11 +250,11 @@ function Gladdy:SetupOptions()
|
||||
},
|
||||
bottomMargin = {
|
||||
type = "range",
|
||||
name = L["Bottom margin"],
|
||||
name = L["Margin"],
|
||||
desc = L["Margin between each button"],
|
||||
order = 7,
|
||||
min = -100,
|
||||
max = 100,
|
||||
min = -200,
|
||||
max = 200,
|
||||
step = 1,
|
||||
},
|
||||
}
|
||||
@ -267,7 +279,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 +292,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 +310,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 +323,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 +347,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 +390,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 +404,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 +455,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 +493,25 @@ 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
|
||||
local j = Gladdy.db.racialBorderColor
|
||||
if (a.r == b.r and a.g == b.g and a.b == b.b and a.a == b.a
|
||||
and a.r == c.r and a.g == c.g and a.b == c.b and a.a == c.a) 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
|
||||
and a.r == j.r and a.g == j.g and a.b == j.b and a.a == j.a) then
|
||||
return a.r, a.g, a.b, a.a
|
||||
else
|
||||
return { r = 0, g = 0, b = 0, a = 0 }
|
||||
@ -442,13 +519,16 @@ 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.db.racialBorderColor = rgb
|
||||
Gladdy:UpdateFrame()
|
||||
end,
|
||||
},
|
||||
@ -475,7 +555,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 +566,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 +582,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 +593,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 +615,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 +629,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 +684,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 +701,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 +788,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
|
||||
|
64
README.md
64
README.md
@ -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.12-Beta Download Here](https://github.com/XiconQoo/Gladdy-TBC/releases/download/v1.12-Beta/Gladdy_TBC-Classic_v1.12-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,63 @@ The goal is to make Gladdy highly configurable in it's appearance. Everything ca
|
||||
|
||||
### Changes
|
||||
|
||||
### v1.12-Beta
|
||||
- fix classic profile
|
||||
|
||||
### v1.11-Beta
|
||||
- TotemPlates fix after blizzard update
|
||||
|
||||
### v1.10-Beta
|
||||
- fix german and russian client not working
|
||||
- ArenaCountdown loacalization now working for all languages (except itIT...beta has no option to select italian)
|
||||
- Race and Class localization working for all languages
|
||||
- Localization finished for German
|
||||
|
||||
#### v1.09-Beta
|
||||
- fix Blizzard profile not having all modules preconfigured
|
||||
|
||||
#### v1.08-Beta
|
||||
- fix Buffs not showing on class icon
|
||||
- added option highlight to be inside
|
||||
- added option to grow frames vertically
|
||||
- added new profile to XiconProfile (Blizzard raid style)
|
||||
- minor bugfixes
|
||||
|
||||
#### v1.07-Beta
|
||||
|
||||
- CombatIndicator module added
|
||||
- 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
|
Reference in New Issue
Block a user