Compare commits

..

69 Commits

Author SHA1 Message Date
Sumsebrum 4721324a2a Merge branch 'release/v1.10-Beta' into main 2021-05-24 13:12:12 +02:00
Sumsebrum 51e484eadd minor fixes module names 2021-05-24 13:11:36 +02:00
Sumsebrum 46f379c1e4 bump version v1.10-Beta 2021-05-24 12:54:36 +02:00
Sumsebrum 5e42a9b51f fix ArenaX option being overwritten by unit name 2021-05-24 12:53:33 +02:00
Sumsebrum df58544f6e cleanup 2021-05-24 12:44:23 +02:00
Sumsebrum 43518055f0 Localization 2021-05-24 12:41:21 +02:00
Sumsebrum 9ef174e290 Merge tag 'v1.09-Beta' into develop
v1.09-Beta
2021-05-22 15:02:42 +02:00
Sumsebrum a60119caa2 Merge branch 'release/v1.09-Beta' into main 2021-05-22 15:02:35 +02:00
Sumsebrum 1546e3db6e bump version 2021-05-22 15:02:12 +02:00
Sumsebrum 82a9a014e4 - fix Blizzard Profile 2021-05-22 15:00:35 +02:00
Sumsebrum a9a1a77dd3 Merge tag 'v1.08-Beta' into develop
v1.08-Beta
2021-05-22 14:25:00 +02:00
Sumsebrum 084fad0074 Merge branch 'release/v1.08-Beta' into main 2021-05-22 14:24:51 +02:00
Sumsebrum 2b9e219839 - added blizzard profile
- bump version
2021-05-22 14:24:20 +02:00
Sumsebrum ba8ea87863 klimp profile aura border colors reset to default 2021-05-22 13:52:59 +02:00
Sumsebrum f498a0dde1 TODO 2021-05-22 13:42:55 +02:00
Sumsebrum 673dc72b3b minor bugfixes 2021-05-22 13:42:47 +02:00
Sumsebrum 6da33b6c68 grow direction added 2021-05-22 13:41:42 +02:00
Sumsebrum 0c6cae0b04 highlight inset option added 2021-05-22 13:41:31 +02:00
Sumsebrum ded321e772 fix AuraModule not showing Buffs 2021-05-22 13:29:48 +02:00
Sumsebrum 7015bb989e Announcement default options changed 2021-05-22 13:28:46 +02:00
Sumsebrum eaeccf5595 CombatIndicator set border properly 2021-05-22 13:28:27 +02:00
Sumsebrum c7d07c62ee Merge tag 'v1.07-Beta' into develop
v1.07-Beta
2021-05-20 01:32:45 +02:00
Sumsebrum cf804546c2 Merge branch 'release/v1.07-Beta' into main 2021-05-20 01:32:35 +02:00
Sumsebrum 467b459898 bump version and update readme 2021-05-20 01:32:08 +02:00
Sumsebrum 0d9cbc8f45 DRData cleanup 2021-05-20 01:24:20 +02:00
Sumsebrum 2c858e1c84 XiconProfile image update 2021-05-20 01:23:55 +02:00
Sumsebrum ffc5d32b80 delete Bindings.xml 2021-05-20 01:11:03 +02:00
Sumsebrum 1956b3a568 BuffDebuff options width for icons updated 2021-05-20 01:07:20 +02:00
Sumsebrum 84f542b3b8 add a couple buffs to LibClassAuras 2021-05-20 01:06:42 +02:00
Sumsebrum ccf7d08832 add blessing of sacrifice and intervene to auras 2021-05-20 01:06:03 +02:00
Sumsebrum 2e093950e2 cleanup 2021-05-20 00:16:18 +02:00
Sumsebrum 2f9356f8de classicon warrior slight change 2021-05-20 00:16:09 +02:00
Sumsebrum 8c4a70fd04 general options updated to apply font/borders/etc for all frames 2021-05-20 00:15:50 +02:00
Sumsebrum cac0124f1a XiconProfiles updated 2021-05-20 00:15:06 +02:00
Sumsebrum cef9de3819 cleanup 2021-05-19 19:33:22 +02:00
Sumsebrum a84178edbf /gladdy test1-5 now possible 2021-05-19 19:33:13 +02:00
Sumsebrum c05fab9454 spec icon option added to Classicon module 2021-05-19 19:32:31 +02:00
Sumsebrum be54619576 arena1-5 for name option added 2021-05-19 19:31:13 +02:00
Sumsebrum c70560e66a Highlight remove framestrata 2021-05-19 19:30:54 +02:00
Sumsebrum de4adaec16 fix PowerBar text updates 2021-05-19 19:30:46 +02:00
Sumsebrum 01d748f37e combat indicator fix anchoring 2021-05-19 19:30:40 +02:00
Sumsebrum ad130af188 click through frames health/power bar 2021-05-19 19:30:32 +02:00
Sumsebrum 67edecf8d1 arena countdown refactor 2021-05-19 19:29:59 +02:00
Sumsebrum e01b86e1e6 cleanup Totemplates 2021-05-19 16:35:45 +02:00
Sumsebrum 8b69f5ef93 CombatIndicator module added 2021-05-19 16:35:26 +02:00
Sumsebrum 4f774b1ddb mask applied to icons 2021-05-19 14:57:29 +02:00
Sumsebrum 3a846add3b totem icons removed and mask applied 2021-05-19 14:56:38 +02:00
Sumsebrum 9dfec29f16 add mask texture for icons 2021-05-19 13:55:55 +02:00
Sumsebrum 28d33d2f9a Merge tag 'aura-fix' into develop
v1.06-Beta hotfix
2021-05-18 18:31:33 +02:00
Sumsebrum 2d53df2b5f Merge branch 'hotfix/aura-fix' into main 2021-05-18 18:31:22 +02:00
Sumsebrum cddea2e094 v1.06-Beta hotfix BuffDebuff module 2021-05-18 18:31:03 +02:00
Sumsebrum ee1a78000e Merge tag 'v1.05-Beta' into develop
v1.05-Beta
2021-05-18 16:47:54 +02:00
Sumsebrum 57036a77c1 Merge branch 'release/v1.05-Beta' into main 2021-05-18 16:47:45 +02:00
Sumsebrum fb46b97e73 toc v1.0.5-Beta 2021-05-18 16:45:54 +02:00
Sumsebrum 35d49b61ee toc added ImportStrings and Racial 2021-05-18 16:42:04 +02:00
Sumsebrum f2bfbe3211 Racial module added to Eventlistener and Version check updated 2021-05-18 16:41:25 +02:00
Sumsebrum 8a27f88014 constants for auras/cooldowns/racials updated 2021-05-18 16:40:54 +02:00
Sumsebrum 2db3db21ec anchoring for modules rewritten 2021-05-18 16:39:43 +02:00
Sumsebrum eaf8129143 fix Aura module options (localization independent for profile export) 2021-05-18 16:39:07 +02:00
Sumsebrum 1fb3fce980 Power-/HealthBar customize texts added and UNIT_DESTROYED added 2021-05-18 16:38:17 +02:00
Sumsebrum a152cb6045 Racial module added and trinket modified 2021-05-18 16:37:22 +02:00
Sumsebrum 267d37b32e XiconProfiles import strings 2021-05-18 16:35:20 +02:00
Sumsebrum 7bdc417b30 Pets position extended 2021-05-18 16:35:02 +02:00
Sumsebrum af6eb61c56 delete unused saved variables 2021-05-18 16:34:45 +02:00
Sumsebrum fd5183cf5d ExportImport, VersionCheck & XiconProfiles fix 2021-05-18 16:34:10 +02:00
Sumsebrum edb5608a38 fixed auras 2021-05-18 16:14:11 +02:00
Sumsebrum f640f6fa6a TotemPlates add option to show friendly/enemy icons 2021-05-17 23:22:07 +02:00
Sumsebrum cf8b961a1b Merge tag 'profiles' into develop
xiconprofiles fix
2021-05-17 18:23:08 +02:00
Sumsebrum ea44a9d5f2 Merge tag 'readme-v-fix' into develop
v1.0.3-Beta-readme-fix
2021-05-17 17:11:46 +02:00
43 changed files with 2939 additions and 1469 deletions
-38
View File
@@ -1,38 +0,0 @@
<Bindings>
<Binding name="GLADDYBUTTON1_LEFT" header="GLADDY" category="ADDONS"/>
<Binding name="GLADDYBUTTON2_LEFT" category="ADDONS"/>
<Binding name="GLADDYBUTTON3_LEFT" category="ADDONS"/>
<Binding name="GLADDYBUTTON4_LEFT" category="ADDONS"/>
<Binding name="GLADDYBUTTON5_LEFT" category="ADDONS"/>
<Binding name="GLADDYBUTTON1_RIGHT" category="ADDONS"/>
<Binding name="GLADDYBUTTON2_RIGHT" category="ADDONS"/>
<Binding name="GLADDYBUTTON3_RIGHT" category="ADDONS"/>
<Binding name="GLADDYBUTTON4_RIGHT" category="ADDONS"/>
<Binding name="GLADDYBUTTON5_RIGHT" category="ADDONS"/>
<Binding name="GLADDYBUTTON1_MIDDLE" category="ADDONS"/>
<Binding name="GLADDYBUTTON2_MIDDLE" category="ADDONS"/>
<Binding name="GLADDYBUTTON3_MIDDLE" category="ADDONS"/>
<Binding name="GLADDYBUTTON4_MIDDLE" category="ADDONS"/>
<Binding name="GLADDYBUTTON5_MIDDLE" category="ADDONS"/>
<Binding name="GLADDYBUTTON1_BUTTON4" category="ADDONS"/>
<Binding name="GLADDYBUTTON2_BUTTON4" category="ADDONS"/>
<Binding name="GLADDYBUTTON3_BUTTON4" category="ADDONS"/>
<Binding name="GLADDYBUTTON4_BUTTON4" category="ADDONS"/>
<Binding name="GLADDYBUTTON5_BUTTON4" category="ADDONS"/>
<Binding name="GLADDYBUTTON1_BUTTON5" category="ADDONS"/>
<Binding name="GLADDYBUTTON2_BUTTON5" category="ADDONS"/>
<Binding name="GLADDYBUTTON3_BUTTON5" category="ADDONS"/>
<Binding name="GLADDYBUTTON4_BUTTON5" category="ADDONS"/>
<Binding name="GLADDYBUTTON5_BUTTON5" category="ADDONS"/>
<Binding header="GLADDYTRINKET" name="GLADDYTRINKET1" category="ADDONS"/>
<Binding name="GLADDYTRINKET2" category="ADDONS"/>
<Binding name="GLADDYTRINKET3" category="ADDONS"/>
<Binding name="GLADDYTRINKET4" category="ADDONS"/>
<Binding name="GLADDYTRINKET5" category="ADDONS"/>
</Bindings>
+305 -1
View File
@@ -1,3 +1,5 @@
local tbl_sort, select = table.sort, select
local GetSpellInfo = GetSpellInfo
local Gladdy = LibStub("Gladdy")
@@ -155,7 +157,7 @@ function Gladdy:GetImportantAuras()
priority = 40,
spellID = 33786,
},
-- Hibername
-- Hibernate
[GetSpellInfo(18658)] = {
track = AURA_TYPE_DEBUFF,
duration = 10,
@@ -364,6 +366,13 @@ function Gladdy:GetImportantAuras()
priority = 10,
spellID = 1044,
},
-- Blessing of Sacrifice
[GetSpellInfo(6940)] = {
track = AURA_TYPE_BUFF,
duration = 30,
priority = 12,
spellID = 6940,
},
-- Divine Shield
[GetSpellInfo(642)] = {
track = AURA_TYPE_BUFF,
@@ -581,6 +590,14 @@ function Gladdy:GetImportantAuras()
spellSchool = "magic",
spellID = 18498,
},
-- Death Wish
[GetSpellInfo(12292)] = {
track = AURA_TYPE_BUFF,
duration = 3,
priority = 15,
spellSchool = "magic",
spellID = 12292,
},
-- Grounding Totem Effect
[GetSpellInfo(8178)] = {
@@ -589,6 +606,14 @@ function Gladdy:GetImportantAuras()
priority = 20,
spellID = 8178
},
--Intervene
[GetSpellInfo(3411)] = {
track = AURA_TYPE_BUFF,
duration = 10,
priority = 10,
spellSchool = "physical",
spellID = 3411,
},
-- War Stomp
@@ -607,4 +632,283 @@ function Gladdy:GetImportantAuras()
spellID = 28730,
},
}
end
Gladdy.CLASSES = {"MAGE", "PRIEST", "DRUID", "SHAMAN", "PALADIN", "WARLOCK", "WARRIOR", "HUNTER", "ROGUE"}
tbl_sort(Gladdy.CLASSES)
Gladdy.RACES = {"Scourge", "BloodElf", "Tauren", "Orc", "Troll", "NightElf", "Draenei", "Human", "Gnome", "Dwarf"}
tbl_sort(Gladdy.RACES)
function Gladdy:GetCooldownList()
return {
-- Spell Name Cooldown[, Spec]
-- Mage
["MAGE"] = {
[1953] = 15, -- Blink
--[122] = 22, -- Frost Nova
--[12051] = 480, --Evocation
[2139] = 24, -- Counterspell
[45438] = { cd = 300, [L["Frost"]] = 240, }, -- Ice Block
[12472] = { cd = 180, spec = L["Frost"], }, -- Icy Veins
[31687] = { cd = 180, spec = L["Frost"], }, -- Summon Water Elemental
[12043] = { cd = 180, spec = L["Arcane"], }, -- Presence of Mind
[11129] = { cd = 180, spec = L["Fire"] }, -- Combustion
[120] = { cd = 10,
sharedCD = {
[31661] = true, -- Cone of Cold
}, spec = L["Fire"] }, -- Dragon's Breath
[31661] = { cd = 20,
sharedCD = {
[120] = true, -- Cone of Cold
}, spec = L["Fire"] }, -- Dragon's Breath
[12042] = { cd = 180, spec = L["Arcane"], }, -- Arcane Power
[11958] = { cd = 384, spec = L["Frost"], -- Coldsnap
resetCD = {
[12472] = true,
[45438] = true,
[31687] = true,
},
},
},
-- Priest
["PRIEST"] = {
[10890] = { cd = 27, [L["Shadow"]] = 23, }, -- Psychic Scream
[15487] = { cd = 45, spec = L["Shadow"], }, -- Silence
[10060] = { cd = 180, spec = L["Discipline"], }, -- Power Infusion
[33206] = { cd = 120, spec = L["Discipline"], }, -- Pain Suppression
[34433] = 300, -- Shadowfiend
},
-- Druid
["DRUID"] = {
[22812] = 60, -- Barkskin
[29166] = 360, -- Innervate
[8983] = 60, -- Bash
[16689] = 60, -- Natures Grasp
[17116] = { cd = 180, spec = L["Restoration"], }, -- Natures Swiftness
[33831] = { cd = 180, spec = L["Balance"], }, -- Force of Nature
},
-- Shaman
["SHAMAN"] = {
[8042] = { cd = 6, -- Earth Shock
sharedCD = {
[8056] = true, -- Frost Shock
[8050] = true, -- Flame Shock
},
},
[30823] = { cd = 120, spec = L["Enhancement"], }, -- Shamanistic Rage
[16166] = { cd = 180, spec = L["Elemental"], }, -- Elemental Mastery
[16188] = { cd = 180, spec = L["Restoration"], }, -- Natures Swiftness
[16190] = { cd = 300, spec = L["Restoration"], }, -- Mana Tide Totem
},
-- Paladin
["PALADIN"] = {
[10278] = 180, -- Blessing of Protection
[1044] = 25, -- Blessing of Freedom
[10308] = { cd = 60, [L["Retribution"]] = 40, }, -- Hammer of Justice
[642] = { cd = 300, -- Divine Shield
sharedCD = {
cd = 60, -- no actual shared CD but debuff
[31884] = true,
},
},
[31884] = { cd = 180, spec = L["Retribution"], -- Avenging Wrath
sharedCD = {
cd = 60,
[642] = true,
},
},
[20066] = { cd = 60, spec = L["Retribution"], }, -- Repentance
[31842] = { cd = 180, spec = L["Holy"], }, -- Divine Illumination
[31935] = { cd = 30, spec = L["Protection"], }, -- Avengers Shield
},
-- Warlock
["WARLOCK"] = {
[17928] = 40, -- Howl of Terror
[27223] = 120, -- Death Coil
--[19647] = { cd = 24 }, -- Spell Lock; how will I handle pet spells?
[30414] = { cd = 20, spec = L["Destruction"], }, -- Shadowfury
[17877] = { cd = 15, spec = L["Destruction"], }, -- Shadowburn
[18708] = { cd = 900, spec = L["Demonology"], }, -- Feldom
},
-- Warrior
["WARRIOR"] = {
--[[6552] = { cd = 10, -- Pummel
sharedCD = {
[72] = true,
},
},
[72] = { cd = 12, -- Shield Bash
sharedCD = {
[6552] = true,
},
}, ]]
--[23920] = 10, -- Spell Reflection
[3411] = 30, -- Intervene
[676] = 60, -- Disarm
[5246] = 180, -- Intimidating Shout
--[2565] = 60, -- Shield Block
[12292] = { cd = 180, spec = L["Arms"], }, -- Death Wish
[12975] = { cd = 180, spec = L["Protection"], }, -- Last Stand
[12809] = { cd = 30, spec = L["Protection"], }, -- Concussion Blow
},
-- Hunter
["HUNTER"] = {
[19503] = 30, -- Scatter Shot
[19263] = 300, -- Deterrence; not on BM but can't do 2 specs
[14311] = { cd = 30, -- Freezing Trap
sharedCD = {
[13809] = true, -- Frost Trap
[34600] = true, -- Snake Trap
},
},
[13809] = { cd = 30, -- Frost Trap
sharedCD = {
[14311] = true, -- Freezing Trap
[34600] = true, -- Snake Trap
},
},
[34600] = { cd = 30, -- Snake Trap
sharedCD = {
[14311] = true, -- Freezing Trap
[13809] = true, -- Frost Trap
},
},
[34490] = { cd = 20, spec = L["Marksmanship"], }, -- Silencing Shot
[19386] = { cd = 60, spec = L["Survival"], }, -- Wyvern Sting
[19577] = { cd = 60, spec = L["Beast Mastery"], }, -- Intimidation
[38373] = { cd = 120, spec = L["Beast Mastery"], }, -- The Beast Within
},
-- Rogue
["ROGUE"] = {
[1766] = 10, -- Kick
[8643] = 20, -- Kidney Shot
[31224] = 60, -- Cloak of Shadow
[26889] = { cd = 300, [L["Subtlety"]] = 180, }, -- Vanish
[2094] = { cd = 180, [L["Subtlety"]] = 90, }, -- Blind
[11305] = { cd = 300, [L["Combat"]] = 180, }, -- Sprint
[26669] = { cd = 300, [L["Combat"]] = 180, }, -- Evasion
[14177] = { cd = 180, spec = L["Assassination"], }, -- Cold Blood
[13750] = { cd = 300, spec = L["Combat"], }, -- Adrenaline Rush
[13877] = { cd = 120, spec = L["Combat"], }, -- Blade Flurry
[36554] = { cd = 30, spec = L["Subtlety"], }, -- Shadowstep
[14185] = { cd = 600, spec = L["Subtlety"], -- Preparation
resetCD = {
[26669] = true,
[11305] = true,
[26889] = true,
[14177] = true,
[36554] = true,
},
},
},
["Scourge"] = {
},
["BloodElf"] = {
},
["Tauren"] = {
},
["Orc"] = {
},
["Troll"] = {
},
["NightElf"] = {
[2651] = { cd = 180, spec = L["Discipline"], }, -- Elune's Grace
[10797] = { cd = 30, spec = L["Discipline"], }, -- Star Shards
},
["Draenei"] = {
[32548] = { cd = 300, spec = L["Discipline"], }, -- Hymn of Hope
},
["Human"] = {
[13908] = { cd = 600, spec = L["Discipline"], }, -- Desperate Prayer
},
["Gnome"] = {
},
["Dwarf"] = {
[13908] = { cd = 600, spec = L["Discipline"], }, -- Desperate Prayer
},
}
end
function Gladdy:Racials()
return {
["Scourge"] = {
[7744] = true, -- Will of the Forsaken
duration = 120,
spellName = select(1, GetSpellInfo(7744)),
texture = select(3, GetSpellInfo(7744))
},
["BloodElf"] = {
[28730] = true, -- Arcane Torrent
duration = 120,
spellName = select(1, GetSpellInfo(28730)),
texture = select(3, GetSpellInfo(28730))
},
["Tauren"] = {
[20549] = true, -- War Stomp
duration = 120,
spellName = select(1, GetSpellInfo(20549)),
texture = select(3, GetSpellInfo(20549))
},
["Orc"] = {
[20572] = true,
[33697] = true,
[33702] = true,
duration = 120,
spellName = select(1, GetSpellInfo(20572)),
texture = select(3, GetSpellInfo(20572))
},
["Troll"] = {
[20554] = true,
[26296] = true,
[26297] = true,
duration = 180,
spellName = select(1, GetSpellInfo(20554)),
texture = select(3, GetSpellInfo(20554))
},
["NightElf"] = {
[20580] = true,
duration = 10,
spellName = select(1, GetSpellInfo(20580)),
texture = select(3, GetSpellInfo(20580))
},
["Draenei"] = {
[28880] = true,
duration = 180,
spellName = select(1, GetSpellInfo(28880)),
texture = select(3, GetSpellInfo(28880))
},
["Human"] = {
[20600] = true, -- Perception
duration = 180,
spellName = select(1, GetSpellInfo(20600)),
texture = select(3, GetSpellInfo(20600))
},
["Gnome"] = {
[20589] = true, -- Escape Artist
duration = 105,
spellName = select(1, GetSpellInfo(20589)),
texture = select(3, GetSpellInfo(20589))
},
["Dwarf"] = {
[20594] = true, -- Stoneform
duration = 180,
spellName = select(1, GetSpellInfo(20594)),
texture = select(3, GetSpellInfo(20594))
},
}
end
+16 -9
View File
@@ -1,4 +1,4 @@
local select, string_gsub = select, string.gsub
local select, string_gsub, tostring = select, string.gsub, tostring
local CombatLogGetCurrentEventInfo = CombatLogGetCurrentEventInfo
local RAID_CLASS_COLORS = RAID_CLASS_COLORS
@@ -34,7 +34,7 @@ function EventListener:JOINED_ARENA()
self:RegisterEvent("UNIT_SPELLCAST_CHANNEL_START")
self:RegisterEvent("UNIT_SPELLCAST_SUCCEEDED")
self:SetScript("OnEvent", EventListener.OnEvent)
Gladdy:SendCommMessage("GladdyVCheck", Gladdy.version, "RAID", UnitName("player"))
Gladdy:SendCommMessage("GladdyVCheck", tostring(Gladdy.version_num), "RAID", UnitName("player"))
end
function EventListener:Reset()
@@ -106,17 +106,24 @@ function EventListener:COMBAT_LOG_EVENT_UNFILTERED()
end
end
if srcUnit then
local unitRace = Gladdy.buttons[srcUnit].race
-- cooldown tracker
if Gladdy.db.cooldown and Cooldowns.cooldownSpellIds[spellName] then
local unitClass
local spellId = Cooldowns.cooldownSpellIds[spellName] -- don't use spellId from combatlog, in case of different spellrank
if (Cooldowns.cooldownSpells[Gladdy.buttons[srcUnit].class][spellId]) then
unitClass = Gladdy.buttons[srcUnit].class
else
unitClass = Gladdy.buttons[srcUnit].race
if Gladdy.db.cooldownCooldowns[tostring(spellId)] then
if (Gladdy:GetCooldownList()[Gladdy.buttons[srcUnit].class][spellId]) then
unitClass = Gladdy.buttons[srcUnit].class
else
unitClass = Gladdy.buttons[srcUnit].race
end
Cooldowns:CooldownUsed(srcUnit, unitClass, spellId, spellName)
Gladdy:DetectSpec(srcUnit, Gladdy.specSpells[spellName])
end
Cooldowns:CooldownUsed(srcUnit, unitClass, spellId, spellName)
Gladdy:DetectSpec(srcUnit, Gladdy.specSpells[spellName])
end
if Gladdy.db.racialEnabled and Gladdy:Racials()[unitRace].spellName == spellName and Gladdy:Racials()[unitRace][spellID] then
Gladdy:SendMessage("RACIAL_USED", srcUnit)
end
if not Gladdy.buttons[srcUnit].class then
@@ -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
+106 -49
View File
@@ -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
+30 -3
View File
@@ -11,6 +11,9 @@ local IsAddOnLoaded = IsAddOnLoaded
local IsInInstance = IsInInstance
local GetBattlefieldStatus = GetBattlefieldStatus
local IsActiveBattlefieldArena = IsActiveBattlefieldArena
local RELEASE_TYPES = { alpha = "Alpha", beta = "Beta", release = "Release"}
local PREFIX = "TBC-Classic_v"
local VERSION_REGEX = PREFIX .. "(%d+%.%d+)%-(%a)"
---------------------------
@@ -21,9 +24,12 @@ local IsActiveBattlefieldArena = IsActiveBattlefieldArena
local MAJOR, MINOR = "Gladdy", 4
local Gladdy = LibStub:NewLibrary(MAJOR, MINOR)
local L
Gladdy.version_major = "TBC-Classic_v1"
Gladdy.version_minor = "0.4-Beta"
Gladdy.version = Gladdy.version_major .. "." .. Gladdy.version_minor
Gladdy.version_major_num = 1
Gladdy.version_minor_num = 0.10
Gladdy.version_num = Gladdy.version_major_num + Gladdy.version_minor_num
Gladdy.version_releaseType = RELEASE_TYPES.beta
Gladdy.version = PREFIX .. Gladdy.version_num .. "-" .. Gladdy.version_releaseType
Gladdy.VERSION_REGEX = VERSION_REGEX
LibStub("AceTimer-3.0"):Embed(Gladdy)
LibStub("AceComm-3.0"):Embed(Gladdy)
@@ -160,6 +166,25 @@ end
---------------------------
function Gladdy:DeleteUnknownOptions(tbl, refTbl, str)
if str == nil then
str = "Gladdy.db"
end
for k,v in pairs(tbl) do
if refTbl[k] == nil then
--Gladdy:Print("SavedVariable deleted:", str .. "." .. k, "not found!")
tbl[k] = nil
else
if type(v) ~= type(refTbl[k]) then
--Gladdy:Print("SavedVariable deleted:", str .. "." .. k, "type error!", "Expected", type(refTbl[k]), "but found", type(v))
tbl[k] = nil
elseif type(v) == "table" then
Gladdy:DeleteUnknownOptions(v, refTbl[k], str .. "." .. k)
end
end
end
end
function Gladdy:OnInitialize()
self.dbi = LibStub("AceDB-3.0"):New("GladdyXZ", self.defaults)
self.dbi.RegisterCallback(self, "OnProfileChanged", "OnProfileChanged")
@@ -201,10 +226,12 @@ function Gladdy:OnInitialize()
for k, v in self:IterModules() do
self:Call(v, "Initialize") -- B.E > A.E :D
end
self:DeleteUnknownOptions(self.db, self.defaults.profile)
end
function Gladdy:OnProfileChanged()
self.db = self.dbi.profile
self:DeleteUnknownOptions(self.db, self.defaults.profile)
self:HideFrame()
self:ToggleFrame(3)
+4 -1
View File
@@ -1,6 +1,6 @@
## Interface: 20501
## Title: Gladdy - TBC
## Version: 1.0.4-Beta
## Version: 1.10-Beta
## Notes: The most powerful arena AddOn for WoW 2.5.1
## Author: XiconQoo, DnB_Junkee, Knall
## X-Email: contact me on discord Knall#1751
@@ -14,6 +14,7 @@ Lang.lua
Frame.lua
Options.lua
Constants.lua
ImportStrings.lua
Modules\Announcements.lua
Modules\Healthbar.lua
@@ -25,6 +26,7 @@ Modules\Diminishings.lua
Modules\Highlight.lua
Modules\TotemPlates.lua
Modules\Trinket.lua
Modules\Racial.lua
Modules\Cooldowns.lua
Modules\ArenaCountDown.lua
Modules\BuffsDebuffs.lua
@@ -32,4 +34,5 @@ Modules\VersionCheck.lua
Modules\XiconProfiles.lua
Modules\Pets.lua
Modules\ExportImport.lua
Modules\CombatIndicator.lua
EventListener.lua
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
+17
View File
File diff suppressed because one or more lines are too long
+340 -253
View File
@@ -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)
-38
View File
@@ -6,8 +6,6 @@ assert(LibStub, string.format("%s requires LibStub.", major))
local Data = LibStub:NewLibrary(major, minor)
if( not Data ) then return end
if( IS_WRATH_BUILD == nil ) then IS_WRATH_BUILD = (select(4, GetBuildInfo()) >= 30000) end
-- How long before DR resets
Data.RESET_TIME = 18
@@ -234,42 +232,6 @@ Data.spells = {
[10912] = "charm",
}
-- Add WoTLK spells
if( IS_WRATH_BUILD ) then
-- Death Coil
Data.spells[47859] = "dc"
Data.spells[47860] = "dc"
-- Wyvern Sting
Data.spells[49011] = "sleep"
Data.spells[49012] = "sleep"
-- Entangling Roots
Data.spells[53308] = "root"
-- Frost Nova
Data.spells[42917] = "root"
-- Intercept (Remove all except this one come WoTLK)
Data.spells[20252] = "ctrlstun"
-- Pounce
Data.spells[49803] = "ctrlstun"
-- Polymorph
Data.spells[61305] = "disorient"
Data.spells[61025] = "disorient"
-- Sap
Data.spells[51724] = "disorient"
-- Maim
Data.spells[49802] = "disorient"
-- Hex (Guessing)
Data.spells[51514] = "disorient"
end
-- DR Category names
Data.typeNames = {
["disorient"] = "Disorients",
+77 -11
View File
@@ -59,41 +59,107 @@ Buff({ 33891 }, { buffType = "form"}, "DRUID") -- Tree of Life
Buff({ 16864 }, { buffType = "magic"}, "DRUID") -- Omen of Clarity
Buff({ 16689, 16810, 16811, 16812, 16813, 17329, 27009 }, { buffType = "magic"}, "DRUID") -- Nature's Grasp
Buff({ 45281, 45282, 45283 }, { buffType = "magic"}, "DRUID") -- Natural Perfection
Buff({ 16188 }, { buffType = "magic"}, "DRUID") -- Nature's Swiftness
Buff({ 17116 }, { buffType = "magic"}, "DRUID") -- Nature's Swiftness
Buff({ 17007 }, { buffType = "aura"}, "DRUID") -- Leader of the Pack
-------------
-- WARRIOR
-- WARRIOR -- TODO
-------------
--Buff({ 29703 }, { buffType = "physical"}, "WARRIOR") -- Dazed
Buff({ 29838 }, { buffType = "physical"}, "WARRIOR") -- Second Wind
Buff({ 12292 }, { buffType = "physical"}, "WARRIOR") -- Death Wish
Buff({ 6673 }, { buffType = "physical"}, "WARRIOR") -- Battle Shout
Buff({ 469 }, { buffType = "physical"}, "WARRIOR") -- Commanding Shout
Buff({ 12328 }, { buffType = "physical"}, "WARRIOR") -- Sweeping Strikes
Buff({ 30032 }, { buffType = "physical"}, "WARRIOR") -- Rampage
Buff({ 2687 }, { buffType = "physical"}, "WARRIOR") -- Blood Rage
Buff({ 20230 }, { buffType = "physical"}, "WARRIOR") -- Retaliation
Buff({ 871 }, { buffType = "physical"}, "WARRIOR") -- Shield Wall
Buff({ 18499 }, { buffType = "physical"}, "WARRIOR") -- Berserker Rage
Buff({ 23885 }, { buffType = "physical"}, "WARRIOR") -- Bloodthirst
Buff({ 3411 }, { buffType = "physical"}, "WARRIOR") -- Intervene
--------------
-- ROGUE
-- ROGUE -- TODO
--------------
Buff({ 2983 }, { buffType = "physical" }, "ROGUE") -- Sprint
Buff({ 5277 }, { buffType = "physical" }, "ROGUE") -- Evasion
Buff({ 31224 }, { buffType = "physical" }, "ROGUE") -- Cloak of Shadows
Buff({ 14278 }, { buffType = "physical" }, "ROGUE") -- Ghostly Strike
------------
-- WARLOCK
-- WARLOCK --TODO
------------
Buff({ 19028 }, { buffType = "immune"}, "WARLOCK") -- Soul Link
Buff({ 23759 }, { buffType = "immune"}, "WARLOCK") -- Master Demonologist
Buff({ 19028 }, { buffType = "aura"}, "WARLOCK") -- Soul Link
Buff({ 696 }, { buffType = "aura"}, "WARLOCK") -- Demon Skin
Buff({ 706 }, { buffType = "aura"}, "WARLOCK") -- Demon Armor
Buff({ 28176 }, { buffType = "aura"}, "WARLOCK") -- Fel Armor
Buff({ 23759 }, { buffType = "aura"}, "WARLOCK") -- Master Demonologist
Buff({ 34936 }, { buffType = "magic"}, "WARLOCK") -- Backlash
Buff({ 5697 }, { buffType = "magic"}, "WARLOCK") -- Unending Breath
Buff({ 132 }, { buffType = "magic"}, "WARLOCK") -- Detect Invisibility
Buff({ 1949 }, { buffType = "aura"}, "WARLOCK") -- Hellfire
Buff({ 6229 }, { buffType = "magic"}, "WARLOCK") -- Shadow Ward
Buff({ 19480 }, { buffType = "magic"}, "WARLOCK") -- Paranoia
Buff({ 7812 }, { buffType = "magic"}, "WARLOCK") -- Sacrifice
Buff({ 2947 }, { buffType = "magic"}, "WARLOCK") -- Fire Shield
---------------
-- SHAMAN
---------------
Buff({ 8178 } ,{ buffType = "magic" }, "SHAMAN") -- Grounding Totem Effect
Buff({ 30823 } ,{ buffType = "magic" }, "SHAMAN") -- Shamanistic Rage
Buff({ 32182 } ,{ buffType = "magic" }, "SHAMAN") -- Heroism
Buff({ 2825 } ,{ buffType = "magic" }, "SHAMAN") -- Bloodlust
Buff({ 974 } ,{ buffType = "magic" }, "SHAMAN") -- Earth Shield
Buff({ 24398 } ,{ buffType = "magic" }, "SHAMAN") -- Water Shield
Buff({ 324 } ,{ buffType = "magic" }, "SHAMAN") -- Lightning Shield
Buff({ 16188 } ,{ buffType = "magic" }, "SHAMAN") -- Nature's Swiftness
Buff({ 16166 } ,{ buffType = "magic" }, "SHAMAN") -- Elemental Mastery
--------------
-- PALADIN
-- PALADIN --TODO
--------------
--Buff( { 25771 }, { buffType = "immune"}, "PALADIN") -- Forbearance
--Blessings
Buff( { 1022, 5599, 10278 }, { buffType = "magic"}, "PALADIN") -- Blessing of Protection
Buff( { 6940 }, { buffType = "magic"}, "PALADIN") -- Blessing of Sacrifice
Buff( { 1044 }, { buffType = "magic"}, "PALADIN") -- Blessing of Freedom
Buff( { 19740, 19834, 19835, 19836, 19837, 19838, 25291, 27140 }, { buffType = "magic"}, "PALADIN") -- Blessing of Might
Buff( { 19742 }, { buffType = "magic"}, "PALADIN") -- Blessing of Wisdom
Buff( { 20217 }, { buffType = "magic"}, "PALADIN") -- Blessing of Kings
Buff( { 19977 }, { buffType = "magic"}, "PALADIN") -- Blessing of Light
Buff( { 1038 }, { buffType = "magic"}, "PALADIN") -- Blessing of Salvation
Buff( { 20911 }, { buffType = "magic"}, "PALADIN") -- Blessing of Sanctuary
Buff( { 25898 }, { buffType = "magic"}, "PALADIN") -- Greater Blessing of Kings
Buff( { 25890 }, { buffType = "magic"}, "PALADIN") -- Greater Blessing of Light
Buff( { 25782 }, { buffType = "magic"}, "PALADIN") -- Greater Blessing of Might
Buff( { 25895 }, { buffType = "magic"}, "PALADIN") -- Greater Blessing of Salvation
Buff( { 25899 }, { buffType = "magic"}, "PALADIN") -- Greater Blessing of Sanctuary
Buff( { 25894 }, { buffType = "magic"}, "PALADIN") -- Greater Blessing of Wisdom
Buff( { 642 }, { buffType = "magic"}, "PALADIN") -- Divine Shield
--Auras
Buff( { 465, 10290, 643, 10291, 1032, 10292, 10293, 27149 }, { buffType = "aura"}, "PALADIN") -- Devotion Aura
Buff( { 7294 }, { buffType = "aura"}, "PALADIN") -- Retribution Aura
Buff( { 19746 }, { buffType = "aura"}, "PALADIN") -- Concentration Aura
Buff( { 19876 }, { buffType = "aura"}, "PALADIN") -- Shadow Resistance Aura
Buff( { 20218 }, { buffType = "aura"}, "PALADIN") -- Sanctity Aura
Buff( { 19888 }, { buffType = "aura"}, "PALADIN") -- Frost Resistance Aura
Buff( { 19891 }, { buffType = "aura"}, "PALADIN") -- Fire Resistance Aura
Buff( { 32223 }, { buffType = "aura"}, "PALADIN") -- Crusader Aura
--Seals
Buff( { 20154, 20287, 20288, 20289, 20290, 20291, 20292, 20293, 27155 }, { buffType = "magic"}, "PALADIN") -- Seal of Righteousness
Buff( { 31892 }, { buffType = "magic"}, "PALADIN") -- Seal of Blood
Buff( { 20375 }, { buffType = "magic"}, "PALADIN") -- Seal of Command
Buff( { 20164 }, { buffType = "magic"}, "PALADIN") -- Seal of Justice
Buff( { 20165 }, { buffType = "magic"}, "PALADIN") -- Seal of Light
Buff( { 15277 }, { buffType = "magic"}, "PALADIN") -- Seal of Reckoning
Buff( { 31801 }, { buffType = "magic"}, "PALADIN") -- Seal of Vengeance
Buff( { 20166 }, { buffType = "magic"}, "PALADIN") -- Seal of Wisdom
Buff( { 21082 }, { buffType = "magic"}, "PALADIN") -- Seal of the Crusade
-------------
+12 -1
View File
@@ -1,5 +1,6 @@
local type, ipairs, pairs, tinsert = type, ipairs, pairs, tinsert
local GetSpellInfo = GetSpellInfo
local AURA_TYPE_DEBUFF, AURA_TYPE_BUFF = AURA_TYPE_DEBUFF, AURA_TYPE_BUFF
local LibClassAuras = LibStub:NewLibrary("LibClassAuras-1.0", 1)
LibClassAuras.debuffs = {}
@@ -71,4 +72,14 @@ local function getClassBuffs(class)
end
return classSpells
end
LibClassAuras.GetClassBuffs = getClassBuffs
LibClassAuras.GetClassBuffs = getClassBuffs
local function getSpellNameToId(auraType)
if auraType == AURA_TYPE_DEBUFF then
return LibClassAuras.debuffToId
else
return LibClassAuras.buffToId
end
end
LibClassAuras.GetSpellNameToId = getSpellNameToId
+2 -5
View File
@@ -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 {
+185 -119
View File
@@ -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"]
+87 -59
View File
@@ -1,4 +1,4 @@
local pairs, ipairs, select, tinsert, tbl_sort = pairs, ipairs, select, tinsert, table.sort
local pairs, ipairs, select, tinsert, tbl_sort, tostring = pairs, ipairs, select, tinsert, table.sort, tostring
local GetSpellInfo = GetSpellInfo
local CreateFrame, GetTime = CreateFrame, GetTime
@@ -10,9 +10,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,
}
}
+86 -81
View File
@@ -1,7 +1,7 @@
local GetSpellInfo = GetSpellInfo
local CreateFrame = CreateFrame
local GetTime = GetTime
local select, lower, ceil, tremove, tinsert, pairs, ipairs = select, string.lower, ceil, tremove, tinsert, pairs, ipairs
local select, lower, ceil, tremove, tinsert, pairs, ipairs, tostring = select, string.lower, ceil, tremove, tinsert, pairs, ipairs, tostring
local auraTypeColor = { }
local AURA_TYPE_DEBUFF, AURA_TYPE_BUFF = AURA_TYPE_DEBUFF, AURA_TYPE_BUFF
local auraTypes = {AURA_TYPE_BUFF, AURA_TYPE_DEBUFF}
@@ -21,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
+22 -51
View File
@@ -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 = {
+116 -39
View File
@@ -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"],
@@ -164,39 +276,4 @@ function Classicon:GetOptions()
},
},
}
end
local function getClassIcon(class)
-- see https://wow.gamepedia.com/Class_icon
local classIcon = "Interface\\Addons\\Gladdy\\Images\\Classes\\"
if class == "DRUID" then
return classIcon .. "inv_misc_monsterclaw_04"
elseif class == "HUNTER" then
return classIcon .. "inv_weapon_bow_07"
elseif class == "MAGE" then
return classIcon .. "inv_staff_13"
elseif class == "PALADIN" then
return classIcon .. "inv_hammer_01"
elseif class == "PRIEST" then
return classIcon .. "inv_staff_30"
elseif class == "ROGUE" then
return classIcon .. "inv_throwingknife_04"
elseif class == "SHAMAN" then
return classIcon .. "inv_jewelry_talisman_04"
elseif class == "WARLOCK" then
return classIcon .. "spell_nature_drowsy"
elseif class == "WARRIOR" then
return classIcon .. "inv_sword_27"
end
end
function Classicon:ENEMY_SPOTTED(unit)
local classIcon = self.frames[unit]
if (not classIcon) then
return
end
classIcon.texture:SetTexture(getClassIcon(Gladdy.buttons[unit].class))
--classIcon.texture:SetTexCoord(unpack(CLASS_BUTTONS[Gladdy.buttons[unit].class]))
classIcon.texture:SetAllPoints(classIcon)
end
+243
View 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
+229 -343
View File
@@ -1,12 +1,54 @@
local type, pairs, ceil, tonumber, mod = type, pairs, ceil, tonumber, mod
local type, pairs, ceil, tonumber, mod, tostring, upper, select = type, pairs, ceil, tonumber, mod, tostring, string.upper, select
local GetTime = GetTime
local CreateFrame = CreateFrame
local RACE_ICON_TCOORDS = {
["HUMAN_MALE"] = {0, 0.125, 0, 0.25},
["DWARF_MALE"] = {0.125, 0.25, 0, 0.25},
["GNOME_MALE"] = {0.25, 0.375, 0, 0.25},
["NIGHTELF_MALE"] = {0.375, 0.5, 0, 0.25},
["TAUREN_MALE"] = {0, 0.125, 0.25, 0.5},
["SCOURGE_MALE"] = {0.125, 0.25, 0.25, 0.5},
["TROLL_MALE"] = {0.25, 0.375, 0.25, 0.5},
["ORC_MALE"] = {0.375, 0.5, 0.25, 0.5},
["HUMAN_FEMALE"] = {0, 0.125, 0.5, 0.75},
["DWARF_FEMALE"] = {0.125, 0.25, 0.5, 0.75},
["GNOME_FEMALE"] = {0.25, 0.375, 0.5, 0.75},
["NIGHTELF_FEMALE"] = {0.375, 0.5, 0.5, 0.75},
["TAUREN_FEMALE"] = {0, 0.125, 0.75, 1.0},
["SCOURGE_FEMALE"] = {0.125, 0.25, 0.75, 1.0},
["TROLL_FEMALE"] = {0.25, 0.375, 0.75, 1.0},
["ORC_FEMALE"] = {0.375, 0.5, 0.75, 1.0},
["BLOODELF_MALE"] = {0.5, 0.625, 0.25, 0.5},
["BLOODELF_FEMALE"] = {0.5, 0.625, 0.75, 1.0},
["DRAENEI_MALE"] = {0.5, 0.625, 0, 0.25},
["DRAENEI_FEMALE"] = {0.5, 0.625, 0.5, 0.75},
}
local GetSpellInfo = GetSpellInfo
local Gladdy = LibStub("Gladdy")
local L = Gladdy.L
local function getDefaultCooldown()
local cooldowns = {}
for class, t in pairs(Gladdy:GetCooldownList()) do
for spellId, v in pairs(t) do
local spellName, _, texture = GetSpellInfo(spellId)
if spellName then
cooldowns[tostring(spellId)] = true
else
Gladdy:Print("spellid does not exist " .. spellId)
end
end
end
return cooldowns
end
local Cooldowns = Gladdy:NewModule("Cooldowns", nil, {
cooldownFont = "DorisPP",
cooldownFontScale = 1,
@@ -23,13 +65,14 @@ local Cooldowns = Gladdy:NewModule("Cooldowns", nil, {
cooldownBorderStyle = "Interface\\AddOns\\Gladdy\\Images\\Border_Gloss",
cooldownBorderColor = { r = 1, g = 1, b = 1, a = 1 },
cooldownDisableCircle = false,
cooldownCooldownAlpha = 1
cooldownCooldownAlpha = 1,
cooldownCooldowns = getDefaultCooldown()
})
function Cooldowns:Initialize()
self.cooldownSpellIds = {}
self.spellTextures = {}
for class, t in pairs(self.cooldownSpells) do
for class, t in pairs(Gladdy:GetCooldownList()) do
for k, v in pairs(t) do
local spellName, _, texture = GetSpellInfo(k)
if spellName then
@@ -43,17 +86,20 @@ function Cooldowns:Initialize()
self:RegisterMessage("ENEMY_SPOTTED")
self:RegisterMessage("SPEC_DETECTED")
self:RegisterMessage("UNIT_DEATH")
self:RegisterMessage("UNIT_DESTROYED")
end
function Cooldowns:CreateFrame(unit)
local button = Gladdy.buttons[unit]
-- Cooldown frame
local spellCooldownFrame = CreateFrame("Frame", nil, button)
spellCooldownFrame:EnableMouse(false)
for x = 1, 14 do
local icon = CreateFrame("Frame", nil, spellCooldownFrame)
icon:EnableMouse(false)
icon:SetFrameLevel(3)
icon.texture = icon:CreateTexture(nil, "BACKGROUND")
icon.texture:SetMask("Interface\\AddOns\\Gladdy\\Images\\mask")
icon.texture:SetAllPoints(icon)
icon.cooldown = CreateFrame("Cooldown", nil, icon, "CooldownFrameTemplate")
@@ -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
},
}
end
+25 -53
View File
@@ -62,11 +62,12 @@ end
function Diminishings:Initialize()
self.frames = {}
self:RegisterMessage("UNIT_DEATH", "ResetUnit", "AURA_FADE")
self:RegisterMessage("UNIT_DEATH", "ResetUnit", "AURA_FADE", "UNIT_DESTROYED")
end
function Diminishings:CreateFrame(unit)
local drFrame = CreateFrame("Frame", nil, Gladdy.buttons[unit])
drFrame:EnableMouse(false)
for i = 1, 16 do
local icon = CreateFrame("Frame", "GladdyDr" .. unit .. "Icon" .. i, drFrame)
@@ -74,6 +75,7 @@ function Diminishings:CreateFrame(unit)
icon:EnableMouse(false)
icon:SetFrameLevel(3)
icon.texture = icon:CreateTexture(nil, "BACKGROUND")
icon.texture:SetMask("Interface\\AddOns\\Gladdy\\Images\\mask")
icon.texture:SetAllPoints(icon)
icon:SetScript("OnUpdate", function(self, elapsed)
if (self.active) then
@@ -94,7 +96,7 @@ function Diminishings:CreateFrame(unit)
if self.timeLeft >=5 then
self.timeText:SetFormattedText("%d", self.timeLeft)
else
self.timeText:SetFormattedText("%.1f", self.timeLeft)
self.timeText:SetFormattedText("%.1f", self.timeLeft >= 0.0 and self.timeLeft or 0.0)
end
end
end
@@ -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",
+24 -22
View File
@@ -18,7 +18,7 @@ local function table_copy(t)
return t2;
end
local ExportImport = Gladdy:NewModule("ExportImport", nil, {
local ExportImport = Gladdy:NewModule("Export Import", nil, {
})
@@ -64,9 +64,11 @@ importButton:SetText("Import\n(this will overwrite your current profile!)")
importButton:SetWidth(200)
importButton:SetHeight(50)
importButton:SetCallback("OnClick", function(widget)
ExportImport: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
@@ -83,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
@@ -122,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)
@@ -164,14 +169,11 @@ function ExportImport:GetOptions()
end
function ExportImport:ApplyImport(t, table)
if table == nil then
table = Gladdy.dbi.profile
end
for k,v in pairs(t) do
if type(v) == "table" then
ExportImport:ApplyImport(v, table[k])
else
table[k] = v;
table[k] = v
end
end
end
@@ -204,7 +206,7 @@ function ExportImport:Decode(str, showError)
end
return nil
end
local statusOption, error = ExportImport:CheckDeserializedOptions(deserialized, Gladdy.db)
local statusOption, error = ExportImport:CheckDeserializedOptions(deserialized, Gladdy.defaults.profile)
if not statusOption then
if showError then
import.statustext:SetTextColor(1,0,0)
+98 -27
View File
@@ -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",
}),
},
},
+64 -35
View File
@@ -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
+20 -14
View File
@@ -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,
}),
}
+43 -9
View File
@@ -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
View 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
+45 -45
View File
@@ -1,5 +1,5 @@
local select, pairs, string_lower, tremove, tinsert, format, string_gsub, ipairs = select, pairs, string.lower, tremove, tinsert, format, string.gsub, ipairs
local UnitExists, UnitIsUnit, UnitName = UnitExists, UnitIsUnit, UnitName
local UnitExists, UnitIsUnit, UnitName, UnitIsEnemy = UnitExists, UnitIsUnit, UnitName, UnitIsEnemy
local C_NamePlate = C_NamePlate
local Gladdy = LibStub("Gladdy")
local L = Gladdy.L
@@ -26,7 +26,7 @@ local totemData = {
[string_lower("Disease Cleansing Totem")] = {id = 8170,texture = select(3, GetSpellInfo(8170)), color = {r = 0, g = 0, b = 0, a = 1}, enabled = true, priority = 0}, -- Disease Cleansing Totem
[string_lower("Healing Stream Totem")] = {id = 5394,texture = select(3, GetSpellInfo(5394)), color = {r = 0, g = 0, b = 0, a = 1}, enabled = true, priority = 0}, -- Healing Stream Totem
[string_lower("Mana Tide Totem")] = {id = 16190,texture = select(3, GetSpellInfo(16190)), color = {r = 0.078, g = 0.9, b = 0.16, a = 1}, enabled = true, priority = 3}, -- Mana Tide Totem
[string_lower("Mana Spring Totem")] = {id = 5675,texture = "Interface\\AddOns\\Gladdy\\Images\\Totems\\Spell_Nature_ManaRegenTotem_edit", color = {r = 0, g = 0, b = 0, a = 1}, enabled = true, priority = 1}, -- Mana Spring Totem
[string_lower("Mana Spring Totem")] = {id = 5675,texture = select(3, GetSpellInfo(5675)), color = {r = 0, g = 0, b = 0, a = 1}, enabled = true, priority = 1}, -- Mana Spring Totem
-- Earth
[string_lower("Earthbind Totem")] = {id = 2484,texture = select(3, GetSpellInfo(2484)), color = {r = 0.5, g = 0.5, b = 0.5, a = 1}, enabled = true, priority = 1}, -- Earthbind Totem
[string_lower("Stoneclaw Totem")] = {id = 5730,texture = select(3, GetSpellInfo(5730)), color = {r = 0, g = 0, b = 0, a = 1}, enabled = true, priority = 0}, -- Stoneclaw Totem
@@ -36,13 +36,13 @@ local totemData = {
[string_lower("Tremor Totem")] = {id = 8143,texture = select(3, GetSpellInfo(8143)), color = {r = 1, g = 0.9, b = 0.1, a = 1}, enabled = true, priority = 3}, -- Tremor Totem
-- Air
[string_lower("Grounding Totem")] = {id = 8177,texture = select(3, GetSpellInfo(8177)), color = {r = 0, g = 0.53, b = 0.92, a = 1}, enabled = true, priority = 3}, -- Grounding Totem
[string_lower("Grace of Air Totem")] = {id = 8835,texture = "Interface\\AddOns\\Gladdy\\Images\\Totems\\Spell_Nature_InvisibilityTotem_edit", color = {r = 0, g = 0, b = 0, a = 1}, enabled = true, priority = 0}, -- Grace of Air Totem
[string_lower("Grace of Air Totem")] = {id = 8835,texture = select(3, GetSpellInfo(8835)), color = {r = 0, g = 0, b = 0, a = 1}, enabled = true, priority = 0}, -- Grace of Air Totem
[string_lower("Nature Resistance Totem")] = {id = 10595,texture = select(3, GetSpellInfo(10595)), color = {r = 0, g = 0, b = 0, a = 1}, enabled = true, priority = 0}, -- Nature Resistance Totem
[string_lower("Windfury Totem")] = {id = 8512,texture = "Interface\\AddOns\\Gladdy\\Images\\Totems\\Spell_Nature_Windfury_edit", color = {r = 0.96, g = 0, b = 0.07, a = 1}, enabled = true, priority = 2}, -- Windfury Totem
[string_lower("Sentry Totem")] = {id = 6495, texture = "Interface\\AddOns\\Gladdy\\Images\\Totems\\Spell_Nature_RemoveCurse_edit", color = {r = 0, g = 0, b = 0, a = 1}, enabled = true, priority = 0}, -- Sentry Totem
[string_lower("Windfury Totem")] = {id = 8512,texture = select(3, GetSpellInfo(8512)), color = {r = 0.96, g = 0, b = 0.07, a = 1}, enabled = true, priority = 2}, -- Windfury Totem
[string_lower("Sentry Totem")] = {id = 6495, texture = select(3, GetSpellInfo(6495)), color = {r = 0, g = 0, b = 0, a = 1}, enabled = true, priority = 0}, -- Sentry Totem
[string_lower("Windwall Totem")] = {id = 15107,texture = select(3, GetSpellInfo(15107)), color = {r = 0, g = 0, b = 0, a = 1}, enabled = true, priority = 0}, -- Windwall Totem
[string_lower("Wrath of Air Totem")] = {id = 3738,texture = "Interface\\AddOns\\Gladdy\\Images\\Totems\\Spell_Nature_SlowingTotem_edit", color = {r = 0, g = 0, b = 0, a = 1}, enabled = true, priority = 0}, -- Wrath of Air Totem
[string_lower("Tranquil Air Totem")] = {id = 25908,texture = "Interface\\Icons\\INV_Staff_07", color = {r = 0, g = 0, b = 0, a = 1}, enabled = true, priority = 0}, -- Tranquil Air Totem
[string_lower("Wrath of Air Totem")] = {id = 3738,texture = select(3, GetSpellInfo(3738)), color = {r = 0, g = 0, b = 0, a = 1}, enabled = true, priority = 0}, -- Wrath of Air Totem
[string_lower("Tranquil Air Totem")] = {id = 25908,texture = select(3, GetSpellInfo(25908)), color = {r = 0, g = 0, b = 0, a = 1}, enabled = true, priority = 0}, -- Tranquil Air Totem
}
local localizedTotemData = {
["default"] = {
@@ -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
}
}
@@ -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",
@@ -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,
@@ -303,13 +280,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 +304,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")
@@ -406,19 +391,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 = {
@@ -458,7 +458,7 @@ function TotemPlates:GetOptions()
args = {
header = {
type = "header",
name = L["Icon"],
name = L["Font"],
order = 1,
},
npTremorFont = Gladdy:option({
@@ -597,7 +597,7 @@ function TotemPlates:GetOptions()
},
npTotemColors = {
order = 50,
name = "Customize Totems",
name = L["Customize Totems"],
type = "group",
childGroups = "tree",
args = select(2, Gladdy:GetTotemColors())
+56 -52
View File
@@ -1,4 +1,5 @@
local ceil, floor, string_format, tonumber = ceil, floor, string.format, tonumber
local C_PvP = C_PvP
local CreateFrame = CreateFrame
local GetTime = GetTime
@@ -25,11 +26,56 @@ function Trinket:Initialize()
self:RegisterMessage("JOINED_ARENA")
end
local function iconTimer(self, elapsed)
if (self.active) then
if (self.timeLeft <= 0) then
self.active = false
self.cooldown:Clear()
Gladdy:SendMessage("TRINKET_READY", self.unit)
else
self.timeLeft = self.timeLeft - elapsed
end
local timeLeft = ceil(self.timeLeft)
if timeLeft >= 60 then
-- more than 1 minute
self.cooldownFont:SetTextColor(1, 1, 0)
self.cooldownFont:SetText(floor(timeLeft / 60) .. ":" .. string_format("%02.f", floor(timeLeft - floor(timeLeft / 60) * 60)))
self.cooldownFont:SetFont(Gladdy.LSM:Fetch("font", Gladdy.db.trinketFont), (self:GetWidth()/2 - 0.15*self:GetWidth()) * Gladdy.db.trinketFontScale, "OUTLINE")
elseif timeLeft < 60 and timeLeft >= 21 then
-- between 60s and 21s (green)
self.cooldownFont:SetTextColor(0.7, 1, 0)
self.cooldownFont:SetText(timeLeft)
self.cooldownFont:SetFont(Gladdy.LSM:Fetch("font", Gladdy.db.trinketFont), (self:GetWidth()/2 - 1) * Gladdy.db.trinketFontScale, "OUTLINE")
elseif timeLeft < 20.9 and timeLeft >= 11 then
-- between 20s and 11s (green)
self.cooldownFont:SetTextColor(0, 1, 0)
self.cooldownFont:SetText(timeLeft)
self.cooldownFont:SetFont(Gladdy.LSM:Fetch("font", Gladdy.db.trinketFont), (self:GetWidth()/2 - 1) * Gladdy.db.trinketFontScale, "OUTLINE")
elseif timeLeft <= 10 and timeLeft >= 5 then
-- between 10s and 5s (orange)
self.cooldownFont:SetTextColor(1, 0.7, 0)
self.cooldownFont:SetFormattedText("%.1f", timeLeft)
self.cooldownFont:SetFont(Gladdy.LSM:Fetch("font", Gladdy.db.trinketFont), (self:GetWidth()/2 - 1) * Gladdy.db.trinketFontScale, "OUTLINE")
elseif timeLeft < 5 and timeLeft > 0 then
-- between 5s and 1s (red)
self.cooldownFont:SetTextColor(1, 0, 0)
self.cooldownFont:SetFormattedText("%.1f", timeLeft >= 0.0 and timeLeft or 0.0)
self.cooldownFont:SetFont(Gladdy.LSM:Fetch("font", Gladdy.db.trinketFont), (self:GetWidth()/2 - 1) * Gladdy.db.trinketFontScale, "OUTLINE")
else
self.cooldownFont:SetText("")
end
end
end
function Trinket:CreateFrame(unit)
local trinket = CreateFrame("Button", "GladdyTrinketButton" .. unit, Gladdy.buttons[unit])
trinket:EnableMouse(false)
trinket.texture = trinket:CreateTexture(nil, "BACKGROUND")
trinket.texture:SetAllPoints(trinket)
trinket.texture:SetTexture("Interface\\Icons\\INV_Jewelry_TrinketPVP_02")
trinket.texture:SetMask("Interface\\AddOns\\Gladdy\\Images\\mask")
trinket.cooldown = CreateFrame("Cooldown", nil, trinket, "CooldownFrameTemplate")
trinket.cooldown.noCooldownCount = true --Gladdy.db.trinketDisableOmniCC
@@ -52,55 +98,12 @@ function Trinket:CreateFrame(unit)
trinket.texture.overlay:SetAllPoints(trinket)
trinket.texture.overlay:SetTexture(Gladdy.db.trinketBorderStyle)
local function formatTimer(num, numDecimalPlaces)
return tonumber(string_format("%." .. (numDecimalPlaces or 0) .. "f", num))
end
trinket.unit = unit
trinket:SetScript("OnUpdate", function(self, elapsed)
if (self.active) then
if (self.timeLeft <= 0) then
self.active = false
self.cooldown:Clear()
Gladdy:SendMessage("TRINKET_READY", unit)
else
self.timeLeft = self.timeLeft - elapsed
end
local timeLeft = ceil(self.timeLeft)
local timeLeftMilliSec = formatTimer(self.timeLeft, 1)
if timeLeft >= 60 then
-- more than 1 minute
self.cooldownFont:SetTextColor(1, 1, 0)
self.cooldownFont:SetText(floor(timeLeft / 60) .. ":" .. string_format("%02.f", floor(timeLeft - floor(timeLeft / 60) * 60)))
self.cooldownFont:SetFont(Gladdy.LSM:Fetch("font", Gladdy.db.trinketFont), (trinket:GetWidth()/2 - 0.15*trinket:GetWidth()) * Gladdy.db.trinketFontScale, "OUTLINE")
elseif timeLeft < 60 and timeLeft >= 21 then
-- between 60s and 21s (green)
self.cooldownFont:SetTextColor(0.7, 1, 0)
self.cooldownFont:SetText(timeLeft)
self.cooldownFont:SetFont(Gladdy.LSM:Fetch("font", Gladdy.db.trinketFont), (trinket:GetWidth()/2 - 1) * Gladdy.db.trinketFontScale, "OUTLINE")
elseif timeLeft < 20.9 and timeLeft >= 11 then
-- between 20s and 11s (green)
self.cooldownFont:SetTextColor(0, 1, 0)
self.cooldownFont:SetText(timeLeft)
self.cooldownFont:SetFont(Gladdy.LSM:Fetch("font", Gladdy.db.trinketFont), (trinket:GetWidth()/2 - 1) * Gladdy.db.trinketFontScale, "OUTLINE")
elseif timeLeftMilliSec <= 10 and timeLeftMilliSec >= 5 then
-- between 10s and 5s (orange)
self.cooldownFont:SetTextColor(1, 0.7, 0)
self.cooldownFont:SetFormattedText("%.1f", timeLeftMilliSec)
self.cooldownFont:SetFont(Gladdy.LSM:Fetch("font", Gladdy.db.trinketFont), (trinket:GetWidth()/2 - 1) * Gladdy.db.trinketFontScale, "OUTLINE")
elseif timeLeftMilliSec < 5 and timeLeftMilliSec > 0 then
-- between 5s and 1s (red)
self.cooldownFont:SetTextColor(1, 0, 0)
self.cooldownFont:SetFormattedText("%.1f", timeLeftMilliSec)
self.cooldownFont:SetFont(Gladdy.LSM:Fetch("font", Gladdy.db.trinketFont), (trinket:GetWidth()/2 - 1) * Gladdy.db.trinketFontScale, "OUTLINE")
else
self.cooldownFont:SetText("")
end
end
end)
trinket:SetScript("OnUpdate", iconTimer)
self.frames[unit] = trinket
Gladdy.buttons[unit].trinket = trinket
end
function Trinket:UpdateFrame(unit)
@@ -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 = {
+7 -4
View File
@@ -1,3 +1,5 @@
local str_match, tonumber, tostring = string.match, tonumber, tostring
local UnitName = UnitName
local Gladdy = LibStub("Gladdy")
@@ -24,19 +26,20 @@ end
function VersionCheck:Test(unit)
if unit == "arena1" then
self:RegisterComm("GladdyVCheck", VersionCheck.OnCommReceived)
self:SendCommMessage("GladdyVCheck", Gladdy.version, "RAID", self.playerName)
self:SendCommMessage("GladdyVCheck", tostring(Gladdy.version_num), "RAID", self.playerName)
end
end
function VersionCheck.OnCommReceived(prefix, message, distribution, sender)
if sender ~= VersionCheck.playerName then
local addonVersion = Gladdy.version
if (message == addonVersion) then
local addonVersion = Gladdy.version_num
message = tonumber(message)
if message and message <= Gladdy.version_num then
--Gladdy:Print("Version", "\"".. addonVersion.."\"", "is up to date")
else
Gladdy:Warn("Current version", "\"".. addonVersion.."\"", "is outdated. Most recent version is", "\"".. message.."\"")
Gladdy:Warn("Please download the latest Gladdy version at:")
Gladdy:Warn("https://github.com/XiconQoo/Gladdy")
Gladdy:Warn("https://github.com/XiconQoo/Gladdy-TBC")
end
end
end
File diff suppressed because one or more lines are too long
+168 -70
View File
@@ -1,9 +1,10 @@
local type, pairs, tinsert, tsort = type, pairs, table.insert, table.sort
local type, pairs, tinsert, tsort, tostring, str_match, tonumber = type, pairs, table.insert, table.sort, tostring, string.match, tonumber
local InterfaceOptionsFrame_OpenToFrame = InterfaceOptionsFrame_OpenToFrame
local GetSpellInfo = GetSpellInfo
local LOCALIZED_CLASS_NAMES_MALE = LOCALIZED_CLASS_NAMES_MALE
local CLASS_ICON_TCOORDS = CLASS_ICON_TCOORDS
local AURA_TYPE_DEBUFF, AURA_TYPE_BUFF = AURA_TYPE_DEBUFF, AURA_TYPE_BUFF
local Gladdy = LibStub("Gladdy")
local LibClassAuras = LibStub("LibClassAuras-1.0")
@@ -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
+54 -1
View File
@@ -1,7 +1,7 @@
# Gladdy - TBC
### The most powerful arena addon for WoW TBC 2.5.1
## [v1.0.4-Beta Download Here](https://github.com/XiconQoo/Gladdy-TBC/releases/download/v1.0.4-Beta/Gladdy_TBC-Classic_v1.0.4-Beta.zip)
## [v1.10-Beta Download Here](https://github.com/XiconQoo/Gladdy-TBC/releases/download/v1.10-Beta/Gladdy_TBC-Classic_v1.10-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,6 +39,55 @@ The goal is to make Gladdy highly configurable in it's appearance. Everything ca
### Changes
### 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