mirror of
https://github.com/parnic/ice-hud.git
synced 2025-06-16 22:51:53 -05:00
Compare commits
73 Commits
v1.14.9
...
v1.15.0-al
Author | SHA1 | Date | |
---|---|---|---|
40efe6a551 | |||
f15dda769d | |||
9b063bed63 | |||
d451969177
|
|||
6c2e759f45 | |||
b0f7c776db | |||
c425206748 | |||
57ddf62f73 | |||
67cd7330ad | |||
5c344cfac1 | |||
681e1f7b55 | |||
038ea16642 | |||
12c509b133 | |||
2ae826654a | |||
acee3f4725
|
|||
2db6ddea57
|
|||
7e4a6ecab6
|
|||
af33ab9781
|
|||
c0262de622
|
|||
cfa86813a7
|
|||
c85c304eb6
|
|||
5321f7c64d
|
|||
6b2eb8d6e2
|
|||
c72b67235d
|
|||
140596b930
|
|||
6ddb056cdf
|
|||
8df330d3b4
|
|||
1f9a1a3100
|
|||
40a25a3315
|
|||
6cee8c738c
|
|||
40fc8187fd
|
|||
b32f090644 | |||
d9cfb3a09c
|
|||
8bc7b1ee90
|
|||
9cd800ee86
|
|||
ca6008780f
|
|||
9a727e4893
|
|||
4d71dcc660
|
|||
343ac7b70b
|
|||
573049f77e
|
|||
8dc173ae81
|
|||
5e04ace0f4
|
|||
37108d3487
|
|||
8cd7c4b044
|
|||
bfffdd82d7
|
|||
24c45f320f
|
|||
1db8545b63
|
|||
18fa31807c
|
|||
594ea0a3e3
|
|||
cb83a3f63f
|
|||
077286fd5f
|
|||
a50a313314
|
|||
271bb38a69
|
|||
0e11a40d3a
|
|||
5020279748
|
|||
cfaa09a541
|
|||
a0ed3ae6e6
|
|||
7709cb9130
|
|||
c1f631b732
|
|||
6c44ddc93a
|
|||
8b45079d38
|
|||
b1adbe8090
|
|||
01a017c179
|
|||
b8aece0da3
|
|||
6b9b4a358c
|
|||
72adca99f9
|
|||
f8e7cf06d6
|
|||
059808c980
|
|||
689df94d55
|
|||
d49884198d
|
|||
8627ad39d5
|
|||
8c62a841fd
|
|||
7496475ff4
|
8
.github/workflows/release.yml
vendored
8
.github/workflows/release.yml
vendored
@ -32,7 +32,7 @@ jobs:
|
|||||||
|
|
||||||
# we first have to clone the AddOn project, this is a required step
|
# we first have to clone the AddOn project, this is a required step
|
||||||
- name: Clone project
|
- name: Clone project
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0 # gets git history for changelogs
|
fetch-depth: 0 # gets git history for changelogs
|
||||||
|
|
||||||
@ -56,3 +56,9 @@ jobs:
|
|||||||
uses: BigWigsMods/packager@v2
|
uses: BigWigsMods/packager@v2
|
||||||
with:
|
with:
|
||||||
args: -g wrath -w 0
|
args: -g wrath -w 0
|
||||||
|
|
||||||
|
- name: Package and release for Cataclysm
|
||||||
|
uses: BigWigsMods/packager@v2
|
||||||
|
with:
|
||||||
|
args: -g cata -w 0
|
||||||
|
|
8
.pkgmeta
8
.pkgmeta
@ -40,8 +40,8 @@ externals:
|
|||||||
libs/AceHook-3.0:
|
libs/AceHook-3.0:
|
||||||
url: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceHook-3.0
|
url: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceHook-3.0
|
||||||
tag: latest
|
tag: latest
|
||||||
libs/LibRangeCheck-2.0:
|
libs/LibRangeCheck-3.0:
|
||||||
url: https://github.com/WeakAuras/LibRangeCheck-2.0/
|
url: https://github.com/WeakAuras/LibRangeCheck-3.0/
|
||||||
libs/LibSharedMedia-3.0:
|
libs/LibSharedMedia-3.0:
|
||||||
url: svn://svn.wowace.com/wow/libsharedmedia-3-0/mainline/trunk
|
url: svn://svn.wowace.com/wow/libsharedmedia-3-0/mainline/trunk
|
||||||
tag: latest
|
tag: latest
|
||||||
@ -57,11 +57,11 @@ externals:
|
|||||||
optional-dependencies:
|
optional-dependencies:
|
||||||
- libdogtag-3-0
|
- libdogtag-3-0
|
||||||
- libdogtag-unit-3-0
|
- libdogtag-unit-3-0
|
||||||
- librangecheck-2-0
|
- librangecheck-3-0
|
||||||
|
|
||||||
move-folders:
|
move-folders:
|
||||||
IceHUD/IceHUD_Options: IceHUD_Options
|
IceHUD/IceHUD_Options: IceHUD_Options
|
||||||
IceHUD/libs/LibRangeCheck-2.0/LibRangeCheck-2.0: IceHUD/libs/LibRangeCheck-2.0
|
IceHUD/libs/LibRangeCheck-3.0/LibRangeCheck-3.0: IceHUD/libs/LibRangeCheck-3.0
|
||||||
|
|
||||||
tools-used:
|
tools-used:
|
||||||
- libdatabroker-1-1
|
- libdatabroker-1-1
|
||||||
|
@ -996,7 +996,7 @@ function IceBarElement.prototype:CreateBackground()
|
|||||||
self.frame = CreateFrame("Frame", "IceHUD_"..self.elementName, self.masterFrame)
|
self.frame = CreateFrame("Frame", "IceHUD_"..self.elementName, self.masterFrame)
|
||||||
end
|
end
|
||||||
|
|
||||||
self.frame:SetFrameStrata("BACKGROUND")
|
self.frame:SetFrameStrata(IceHUD.IceCore:DetermineStrata("BACKGROUND"))
|
||||||
self.frame:SetWidth(self.settings.barWidth + (self.moduleSettings.widthModifier or 0))
|
self.frame:SetWidth(self.settings.barWidth + (self.moduleSettings.widthModifier or 0))
|
||||||
self.frame:SetHeight(self.settings.barHeight)
|
self.frame:SetHeight(self.settings.barHeight)
|
||||||
|
|
||||||
@ -1041,6 +1041,7 @@ end
|
|||||||
-- Creates the actual bar
|
-- Creates the actual bar
|
||||||
function IceBarElement.prototype:CreateBar()
|
function IceBarElement.prototype:CreateBar()
|
||||||
self.barFrame = self:BarFactory(self.barFrame, "LOW", "ARTWORK", "Bar")
|
self.barFrame = self:BarFactory(self.barFrame, "LOW", "ARTWORK", "Bar")
|
||||||
|
|
||||||
self:SetBarCoord(self.barFrame)
|
self:SetBarCoord(self.barFrame)
|
||||||
|
|
||||||
self.barFrame.bar:SetBlendMode(self.settings.barBlendMode)
|
self.barFrame.bar:SetBlendMode(self.settings.barBlendMode)
|
||||||
@ -1055,7 +1056,7 @@ function IceBarElement.prototype:BarFactory(barFrame, frameStrata, textureLayer,
|
|||||||
barFrame = CreateFrame("Frame", "IceHUD_"..self.elementName.."_"..(nameSuffix or "Bar"), self.frame)
|
barFrame = CreateFrame("Frame", "IceHUD_"..self.elementName.."_"..(nameSuffix or "Bar"), self.frame)
|
||||||
end
|
end
|
||||||
|
|
||||||
barFrame:SetFrameStrata(frameStrata and frameStrata or "LOW")
|
barFrame:SetFrameStrata(IceHUD.IceCore:DetermineStrata(frameStrata and frameStrata or "LOW"))
|
||||||
barFrame:SetWidth(self.settings.barWidth + (self.moduleSettings.widthModifier or 0))
|
barFrame:SetWidth(self.settings.barWidth + (self.moduleSettings.widthModifier or 0))
|
||||||
barFrame:SetHeight(self.settings.barHeight)
|
barFrame:SetHeight(self.settings.barHeight)
|
||||||
self:SetBarFramePoints(barFrame)
|
self:SetBarFramePoints(barFrame)
|
||||||
|
@ -23,6 +23,25 @@ if not UnitCastingInfo then
|
|||||||
UnitChannelInfo = ChannelInfo
|
UnitChannelInfo = ChannelInfo
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local GetSpellName = GetSpellInfo
|
||||||
|
if C_Spell and C_Spell.GetSpellName then
|
||||||
|
GetSpellName = C_Spell.GetSpellName
|
||||||
|
end
|
||||||
|
|
||||||
|
local GetSpellInfo = GetSpellInfo
|
||||||
|
if not GetSpellInfo and C_Spell and C_Spell.GetSpellInfo then
|
||||||
|
GetSpellInfo = function(spellID)
|
||||||
|
if not spellID then
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
|
||||||
|
local spellInfo = C_Spell.GetSpellInfo(spellID)
|
||||||
|
if spellInfo then
|
||||||
|
return spellInfo.name, nil, spellInfo.iconID, spellInfo.castTime, spellInfo.minRange, spellInfo.maxRange, spellInfo.spellID, spellInfo.originalIconID
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
-- Fulzamoth 2019-09-27 : Use LibClassicCasterino if it's there so we can use TargetCast
|
-- Fulzamoth 2019-09-27 : Use LibClassicCasterino if it's there so we can use TargetCast
|
||||||
-- module in Classic WoW
|
-- module in Classic WoW
|
||||||
if IceHUD.WowClassic then
|
if IceHUD.WowClassic then
|
||||||
@ -361,7 +380,7 @@ function IceCastBar.prototype:MyOnUpdate()
|
|||||||
|
|
||||||
local timeString = self.moduleSettings.showCastTime and string.format("%.1fs ", remainingTime) or ""
|
local timeString = self.moduleSettings.showCastTime and string.format("%.1fs ", remainingTime) or ""
|
||||||
local empowerString = self.NumStages ~= nil and (L["Stage %d"]):format(self:GetCurrentStage()) or ""
|
local empowerString = self.NumStages ~= nil and (L["Stage %d"]):format(self:GetCurrentStage()) or ""
|
||||||
local line1 = timeString .. self.actionMessage
|
local line1 = timeString .. (self.actionMessage or "")
|
||||||
if self.moduleSettings.empowerStageTextDisplay == "TOPLINE" then
|
if self.moduleSettings.empowerStageTextDisplay == "TOPLINE" then
|
||||||
line1 = line1 .. " " .. empowerString
|
line1 = line1 .. " " .. empowerString
|
||||||
end
|
end
|
||||||
@ -386,19 +405,24 @@ function IceCastBar.prototype:MyOnUpdate()
|
|||||||
self.action == IceCastBar.Actions.Success or
|
self.action == IceCastBar.Actions.Success or
|
||||||
self.action == IceCastBar.Actions.Failure)
|
self.action == IceCastBar.Actions.Failure)
|
||||||
then
|
then
|
||||||
local scale = GetTime() - self.actionStartTime
|
local scale
|
||||||
|
if self.actionStartTime then
|
||||||
|
scale = GetTime() - self.actionStartTime
|
||||||
|
end
|
||||||
|
|
||||||
if (scale > 1) then
|
if scale and (scale > 1) then
|
||||||
self:StopBar()
|
self:StopBar()
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
self:UpdateBar(1, self:GetCurrentCastingColor())
|
self:UpdateBar(1, self:GetCurrentCastingColor())
|
||||||
|
|
||||||
if (self.action == IceCastBar.Actions.Failure) then
|
if scale then
|
||||||
self:FlashBar("CastFail", 1-scale, self.actionMessage, "CastFail")
|
if (self.action == IceCastBar.Actions.Failure) then
|
||||||
else
|
self:FlashBar("CastFail", 1-scale, self.actionMessage, "CastFail")
|
||||||
self:FlashBar("CastSuccess", 1-scale, self.actionMessage)
|
else
|
||||||
|
self:FlashBar("CastSuccess", 1-scale, self.actionMessage)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
@ -465,7 +489,13 @@ function IceCastBar.prototype:GetCurrentCastingColor()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function IceCastBar.prototype:FlashBar(color, alpha, text, textColor)
|
function IceCastBar.prototype:FlashBar(color, alpha, text, textColor)
|
||||||
self.frame:SetAlpha(alpha)
|
if self.moduleSettings.flashInstants == "Never" then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
if alpha then
|
||||||
|
self.frame:SetAlpha(alpha)
|
||||||
|
end
|
||||||
|
|
||||||
local r, g, b = self.settings.backgroundColor.r, self.settings.backgroundColor.g, self.settings.backgroundColor.b
|
local r, g, b = self.settings.backgroundColor.r, self.settings.backgroundColor.g, self.settings.backgroundColor.b
|
||||||
if (self.settings.backgroundToggle) then
|
if (self.settings.backgroundToggle) then
|
||||||
@ -690,11 +720,11 @@ function IceCastBar.prototype:SpellCastSucceeded(event, unit, castGuid, spellId)
|
|||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
local spell = GetSpellInfo(spellId)
|
local spell = GetSpellName(spellId)
|
||||||
|
|
||||||
-- show after normal successfull cast
|
-- show after normal successfull cast
|
||||||
if (self.action == IceCastBar.Actions.Cast) then
|
if (self.action == IceCastBar.Actions.Cast) then
|
||||||
self:StartBar(IceCastBar.Actions.Success, spell.. self:GetShortRank(rank), spellId)
|
self:StartBar(IceCastBar.Actions.Success, spell, spellId)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -712,7 +742,7 @@ function IceCastBar.prototype:SpellCastSucceeded(event, unit, castGuid, spellId)
|
|||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
self:StartBar(IceCastBar.Actions.Success, spell.. self:GetShortRank(rank), spellId)
|
self:StartBar(IceCastBar.Actions.Success, spell, spellId)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
93
IceCore.lua
93
IceCore.lua
@ -19,6 +19,25 @@ end
|
|||||||
|
|
||||||
local DogTag = LibStub("LibDogTag-3.0", true)
|
local DogTag = LibStub("LibDogTag-3.0", true)
|
||||||
|
|
||||||
|
local GetSpellInfo = GetSpellInfo
|
||||||
|
if not GetSpellInfo and C_Spell and C_Spell.GetSpellInfo then
|
||||||
|
GetSpellInfo = function(spellID)
|
||||||
|
if not spellID then
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
|
||||||
|
local spellInfo = C_Spell.GetSpellInfo(spellID)
|
||||||
|
if spellInfo then
|
||||||
|
return spellInfo.name, nil, spellInfo.iconID, spellInfo.castTime, spellInfo.minRange, spellInfo.maxRange, spellInfo.spellID, spellInfo.originalIconID
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local GetSpellName = GetSpellInfo
|
||||||
|
if C_Spell and C_Spell.GetSpellName then
|
||||||
|
GetSpellName = C_Spell.GetSpellName
|
||||||
|
end
|
||||||
|
|
||||||
IceCore = IceCore_CreateClass()
|
IceCore = IceCore_CreateClass()
|
||||||
|
|
||||||
IceCore.Side = { Left = "LEFT", Right = "RIGHT" }
|
IceCore.Side = { Left = "LEFT", Right = "RIGHT" }
|
||||||
@ -115,6 +134,9 @@ function IceCore.prototype:SetupDefaults()
|
|||||||
bHideDuringPetBattles = true,
|
bHideDuringPetBattles = true,
|
||||||
bHideInBarberShop = true,
|
bHideInBarberShop = true,
|
||||||
bHideDuringShellGame = true,
|
bHideDuringShellGame = true,
|
||||||
|
bHideDuringCataloging = true,
|
||||||
|
|
||||||
|
addedStrata = 0,
|
||||||
},
|
},
|
||||||
global = {
|
global = {
|
||||||
lastRunVersion = 0,
|
lastRunVersion = 0,
|
||||||
@ -284,6 +306,7 @@ function IceCore.prototype:Enable(userToggle)
|
|||||||
self.IceHUDFrame:RegisterEvent("ZONE_CHANGED")
|
self.IceHUDFrame:RegisterEvent("ZONE_CHANGED")
|
||||||
end
|
end
|
||||||
self.IceHUDFrame:RegisterEvent("UNIT_AURA")
|
self.IceHUDFrame:RegisterEvent("UNIT_AURA")
|
||||||
|
self.IceHUDFrame:RegisterEvent("UNIT_ENTERED_VEHICLE")
|
||||||
self.IceHUDFrame:RegisterEvent("PLAYER_REGEN_ENABLED", IceHUD.PLAYER_REGEN_ENABLED)
|
self.IceHUDFrame:RegisterEvent("PLAYER_REGEN_ENABLED", IceHUD.PLAYER_REGEN_ENABLED)
|
||||||
self.IceHUDFrame:RegisterEvent("PLAYER_REGEN_DISABLED", IceHUD.PLAYER_REGEN_DISABLED)
|
self.IceHUDFrame:RegisterEvent("PLAYER_REGEN_DISABLED", IceHUD.PLAYER_REGEN_DISABLED)
|
||||||
self.IceHUDFrame:SetScript("OnEvent", function(self, event, ...)
|
self.IceHUDFrame:SetScript("OnEvent", function(self, event, ...)
|
||||||
@ -303,6 +326,11 @@ function IceCore.prototype:Enable(userToggle)
|
|||||||
if IceHUD.IceCore.settings.bHideInBarberShop then
|
if IceHUD.IceCore.settings.bHideInBarberShop then
|
||||||
self:Show()
|
self:Show()
|
||||||
end
|
end
|
||||||
|
elseif event == "UNIT_ENTERED_VEHICLE" then
|
||||||
|
if IceHUD.IceCore.settings.bHideDuringCataloging and IceHUD:HasAnyBuff("player", IceHUD.CatalogingSpellIDs) then
|
||||||
|
self:RegisterEvent("UNIT_EXITED_VEHICLE")
|
||||||
|
self:Hide()
|
||||||
|
end
|
||||||
elseif (event == "UNIT_AURA") then
|
elseif (event == "UNIT_AURA") then
|
||||||
local unit = ...
|
local unit = ...
|
||||||
if unit ~= "player" then
|
if unit ~= "player" then
|
||||||
@ -312,6 +340,9 @@ function IceCore.prototype:Enable(userToggle)
|
|||||||
if IceHUD.IceCore.settings.bHideDuringShellGame and IceHUD:HasAnyDebuff("player", {IceHUD.ShellGameSpellID}) and UnitInVehicle("player") then
|
if IceHUD.IceCore.settings.bHideDuringShellGame and IceHUD:HasAnyDebuff("player", {IceHUD.ShellGameSpellID}) and UnitInVehicle("player") then
|
||||||
self:RegisterEvent("UNIT_EXITED_VEHICLE")
|
self:RegisterEvent("UNIT_EXITED_VEHICLE")
|
||||||
self:Hide()
|
self:Hide()
|
||||||
|
elseif IceHUD.IceCore.settings.bHideDuringCataloging and IceHUD:HasAnyBuff("player", IceHUD.CatalogingSpellIDs) and UnitInVehicle("player") then
|
||||||
|
self:RegisterEvent("UNIT_EXITED_VEHICLE")
|
||||||
|
self:Hide()
|
||||||
elseif C_Map then
|
elseif C_Map then
|
||||||
local bestMapID = C_Map.GetBestMapForUnit("player")
|
local bestMapID = C_Map.GetBestMapForUnit("player")
|
||||||
if bestMapID ~= ZM_MAP_ID then
|
if bestMapID ~= ZM_MAP_ID then
|
||||||
@ -355,13 +386,13 @@ end
|
|||||||
|
|
||||||
function IceCore.prototype:RedirectRemovedModules()
|
function IceCore.prototype:RedirectRemovedModules()
|
||||||
local _, class = UnitClass("player")
|
local _, class = UnitClass("player")
|
||||||
if class == "WARRIOR" and self.settings.modules["SunderCount"] and GetSpellInfo(SUNDER_SPELL_ID) and IceHUD.WowVer < 60000 then
|
if class == "WARRIOR" and self.settings.modules["SunderCount"] and GetSpellName(SUNDER_SPELL_ID) and IceHUD.WowVer < 60000 then
|
||||||
if self.settings.modules["SunderCount"].enabled or self.settings.modules["SunderCount"].enabled == nil then
|
if self.settings.modules["SunderCount"].enabled or self.settings.modules["SunderCount"].enabled == nil then
|
||||||
local bFound = false
|
local bFound = false
|
||||||
|
|
||||||
for k,v in pairs(self.elements) do
|
for k,v in pairs(self.elements) do
|
||||||
if v.moduleSettings.customBarType == "Counter" and v.moduleSettings.auraName
|
if v.moduleSettings.customBarType == "Counter" and v.moduleSettings.auraName
|
||||||
and string.upper(v.moduleSettings.auraName) == string.upper(GetSpellInfo(SUNDER_SPELL_ID)) then
|
and string.upper(v.moduleSettings.auraName) == string.upper(GetSpellName(SUNDER_SPELL_ID)) then
|
||||||
bFound = true
|
bFound = true
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
@ -384,7 +415,7 @@ function IceCore.prototype:RedirectRemovedModules()
|
|||||||
newCounter.moduleSettings.maxCount = 3
|
newCounter.moduleSettings.maxCount = 3
|
||||||
newCounter.moduleSettings.auraTarget = "target"
|
newCounter.moduleSettings.auraTarget = "target"
|
||||||
newCounter.moduleSettings.auraType = "debuff"
|
newCounter.moduleSettings.auraType = "debuff"
|
||||||
newCounter.moduleSettings.auraName = GetSpellInfo(SUNDER_SPELL_ID)
|
newCounter.moduleSettings.auraName = GetSpellName(SUNDER_SPELL_ID)
|
||||||
newCounter:Enable()
|
newCounter:Enable()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -392,12 +423,12 @@ function IceCore.prototype:RedirectRemovedModules()
|
|||||||
self.settings.modules["SunderCount"] = nil
|
self.settings.modules["SunderCount"] = nil
|
||||||
end
|
end
|
||||||
|
|
||||||
if class == "DRUID" and self.settings.modules["LacerateCount"] and GetSpellInfo(LACERATE_SPELL_ID) then
|
if class == "DRUID" and self.settings.modules["LacerateCount"] and GetSpellName(LACERATE_SPELL_ID) then
|
||||||
if self.settings.modules["LacerateCount"].enabled or self.settings.modules["LacerateCount"].enabled == nil then
|
if self.settings.modules["LacerateCount"].enabled or self.settings.modules["LacerateCount"].enabled == nil then
|
||||||
local bFound = false
|
local bFound = false
|
||||||
for k,v in pairs(self.elements) do
|
for k,v in pairs(self.elements) do
|
||||||
if v.moduleSettings.customBarType == "Counter" and v.moduleSettings.auraName
|
if v.moduleSettings.customBarType == "Counter" and v.moduleSettings.auraName
|
||||||
and string.upper(v.moduleSettings.auraName) == string.upper(GetSpellInfo(LACERATE_SPELL_ID)) then
|
and string.upper(v.moduleSettings.auraName) == string.upper(GetSpellName(LACERATE_SPELL_ID)) then
|
||||||
bFound = true
|
bFound = true
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
@ -421,7 +452,7 @@ function IceCore.prototype:RedirectRemovedModules()
|
|||||||
newCounter.moduleSettings.maxCount = 3
|
newCounter.moduleSettings.maxCount = 3
|
||||||
newCounter.moduleSettings.auraTarget = "target"
|
newCounter.moduleSettings.auraTarget = "target"
|
||||||
newCounter.moduleSettings.auraType = "debuff"
|
newCounter.moduleSettings.auraType = "debuff"
|
||||||
newCounter.moduleSettings.auraName = GetSpellInfo(LACERATE_SPELL_ID)
|
newCounter.moduleSettings.auraName = GetSpellName(LACERATE_SPELL_ID)
|
||||||
newCounter:Enable()
|
newCounter:Enable()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -429,12 +460,12 @@ function IceCore.prototype:RedirectRemovedModules()
|
|||||||
self.settings.modules["LacerateCount"] = nil
|
self.settings.modules["LacerateCount"] = nil
|
||||||
end
|
end
|
||||||
|
|
||||||
if class == "SHAMAN" and self.settings.modules["MaelstromCount"] and GetSpellInfo(MAELSTROM_SPELL_ID) then
|
if class == "SHAMAN" and self.settings.modules["MaelstromCount"] and GetSpellName(MAELSTROM_SPELL_ID) then
|
||||||
if self.settings.modules["MaelstromCount"].enabled or self.settings.modules["MaelstromCount"].enabled == nil then
|
if self.settings.modules["MaelstromCount"].enabled or self.settings.modules["MaelstromCount"].enabled == nil then
|
||||||
local bFound = false
|
local bFound = false
|
||||||
for k,v in pairs(self.elements) do
|
for k,v in pairs(self.elements) do
|
||||||
if v.moduleSettings.customBarType == "Counter" and v.moduleSettings.auraName
|
if v.moduleSettings.customBarType == "Counter" and v.moduleSettings.auraName
|
||||||
and string.upper(v.moduleSettings.auraName) == string.upper(GetSpellInfo(MAELSTROM_SPELL_ID)) then
|
and string.upper(v.moduleSettings.auraName) == string.upper(GetSpellName(MAELSTROM_SPELL_ID)) then
|
||||||
bFound = true
|
bFound = true
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
@ -454,7 +485,7 @@ function IceCore.prototype:RedirectRemovedModules()
|
|||||||
newCounter.moduleSettings.countMode = self.settings.modules["MaelstromCount"].maelstromMode or newCounter.moduleSettings.countMode
|
newCounter.moduleSettings.countMode = self.settings.modules["MaelstromCount"].maelstromMode or newCounter.moduleSettings.countMode
|
||||||
newCounter.moduleSettings.countGap = self.settings.modules["MaelstromCount"].maelstromGap or newCounter.moduleSettings.countGap
|
newCounter.moduleSettings.countGap = self.settings.modules["MaelstromCount"].maelstromGap or newCounter.moduleSettings.countGap
|
||||||
newCounter.moduleSettings.gradient = self.settings.modules["MaelstromCount"].gradient or newCounter.moduleSettings.gradient
|
newCounter.moduleSettings.gradient = self.settings.modules["MaelstromCount"].gradient or newCounter.moduleSettings.gradient
|
||||||
newCounter.moduleSettings.auraName = GetSpellInfo(MAELSTROM_SPELL_ID)
|
newCounter.moduleSettings.auraName = GetSpellName(MAELSTROM_SPELL_ID)
|
||||||
newCounter:Enable()
|
newCounter:Enable()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -600,7 +631,7 @@ function IceCore.prototype:IsEnabled()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function IceCore.prototype:DrawFrame()
|
function IceCore.prototype:DrawFrame()
|
||||||
self.IceHUDFrame:SetFrameStrata("BACKGROUND")
|
self.IceHUDFrame:SetFrameStrata(self:DetermineStrata("BACKGROUND"))
|
||||||
self.IceHUDFrame:SetWidth(self.settings.gap)
|
self.IceHUDFrame:SetWidth(self.settings.gap)
|
||||||
self.IceHUDFrame:SetHeight(20)
|
self.IceHUDFrame:SetHeight(20)
|
||||||
|
|
||||||
@ -921,6 +952,48 @@ function IceCore.prototype:SetColor(color, r, g, b)
|
|||||||
self:Redraw()
|
self:Redraw()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function IceCore.prototype:GetAddedStrata()
|
||||||
|
return self.settings.addedStrata
|
||||||
|
end
|
||||||
|
|
||||||
|
function IceCore.prototype:SetAddedStrata(value)
|
||||||
|
self.settings.addedStrata = value
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Preventing ugly if-else blocks in module creations
|
||||||
|
-- (but could probably itself be smarter/prettier)
|
||||||
|
-- Frisbees/AddonWhiner
|
||||||
|
function IceCore.prototype:DetermineStrata(baseStrata)
|
||||||
|
if self.settings.addedStrata == 0 then
|
||||||
|
return baseStrata
|
||||||
|
end
|
||||||
|
|
||||||
|
if self.settings.addedStrata == 1 then
|
||||||
|
if baseStrata == "BACKGROUND" then
|
||||||
|
return "LOW"
|
||||||
|
elseif baseStrata == "LOW" then
|
||||||
|
return "MEDIUM"
|
||||||
|
elseif baseStrata == "MEDIUM" then
|
||||||
|
return "HIGH"
|
||||||
|
elseif baseStrata == "HIGH" then
|
||||||
|
return "DIALOG"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if self.settings.addedStrata == 2 then
|
||||||
|
if baseStrata == "BACKGROUND" then
|
||||||
|
return "MEDIUM"
|
||||||
|
elseif baseStrata == "LOW" then
|
||||||
|
return "HIGH"
|
||||||
|
elseif baseStrata == "MEDIUM" then
|
||||||
|
return "DIALOG"
|
||||||
|
elseif baseStrata == "HIGH" then
|
||||||
|
return "FULLSCREEN"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return baseStrata -- failsafe
|
||||||
|
end
|
||||||
|
|
||||||
function IceCore.prototype:IsInConfigMode()
|
function IceCore.prototype:IsInConfigMode()
|
||||||
return self.bConfigMode
|
return self.bConfigMode
|
||||||
|
@ -74,7 +74,7 @@ function IceElement.prototype:Create(parent)
|
|||||||
self.parent = parent
|
self.parent = parent
|
||||||
if not self.masterFrame then
|
if not self.masterFrame then
|
||||||
self.masterFrame = CreateFrame("Frame", "IceHUD_Element_"..self.elementName, self.parent)
|
self.masterFrame = CreateFrame("Frame", "IceHUD_Element_"..self.elementName, self.parent)
|
||||||
self.masterFrame:SetFrameStrata("MEDIUM")
|
self.masterFrame:SetFrameStrata(IceHUD.IceCore:DetermineStrata("MEDIUM"))
|
||||||
end
|
end
|
||||||
self:CreateFrame()
|
self:CreateFrame()
|
||||||
self:Show(false)
|
self:Show(false)
|
||||||
|
124
IceHUD.lua
124
IceHUD.lua
@ -11,6 +11,20 @@ local icon = LibStub("LibDBIcon-1.0", true)
|
|||||||
local pendingModuleLoads = {}
|
local pendingModuleLoads = {}
|
||||||
local bReadyToRegisterModules = false
|
local bReadyToRegisterModules = false
|
||||||
|
|
||||||
|
local LoadAddOn = C_AddOns and C_AddOns.LoadAddOn or LoadAddOn
|
||||||
|
|
||||||
|
IceHUD.UnitAura = UnitAura
|
||||||
|
if not IceHUD.UnitAura then
|
||||||
|
IceHUD.UnitAura = function(unitToken, index, filter)
|
||||||
|
local auraData = C_UnitAuras.GetAuraDataByIndex(unitToken, index, filter)
|
||||||
|
if not auraData then
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
|
||||||
|
return AuraUtil.UnpackAuraData(auraData)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
IceHUD.CurrTagVersion = 3
|
IceHUD.CurrTagVersion = 3
|
||||||
IceHUD.debugging = false
|
IceHUD.debugging = false
|
||||||
|
|
||||||
@ -20,10 +34,12 @@ if GetClassicExpansionLevel then
|
|||||||
IceHUD.WowClassic = GetClassicExpansionLevel() == 0
|
IceHUD.WowClassic = GetClassicExpansionLevel() == 0
|
||||||
IceHUD.WowClassicBC = GetClassicExpansionLevel() == 1
|
IceHUD.WowClassicBC = GetClassicExpansionLevel() == 1
|
||||||
IceHUD.WowClassicWrath = GetClassicExpansionLevel() == 2
|
IceHUD.WowClassicWrath = GetClassicExpansionLevel() == 2
|
||||||
|
IceHUD.WowClassicCataclysm = GetClassicExpansionLevel() == 3
|
||||||
else
|
else
|
||||||
IceHUD.WowClassic = WOW_PROJECT_ID and WOW_PROJECT_ID == WOW_PROJECT_CLASSIC
|
IceHUD.WowClassic = WOW_PROJECT_ID and WOW_PROJECT_ID == WOW_PROJECT_CLASSIC
|
||||||
IceHUD.WowClassicBC = false
|
IceHUD.WowClassicBC = false
|
||||||
IceHUD.WowClassicWrath = false
|
IceHUD.WowClassicWrath = false
|
||||||
|
IceHUD.WowClassicCataclysm = false
|
||||||
if WOW_PROJECT_ID and WOW_PROJECT_ID == WOW_PROJECT_BURNING_CRUSADE_CLASSIC then
|
if WOW_PROJECT_ID and WOW_PROJECT_ID == WOW_PROJECT_BURNING_CRUSADE_CLASSIC then
|
||||||
if not LE_EXPANSION_LEVEL_CURRENT or LE_EXPANSION_LEVEL_CURRENT == LE_EXPANSION_BURNING_CRUSADE then
|
if not LE_EXPANSION_LEVEL_CURRENT or LE_EXPANSION_LEVEL_CURRENT == LE_EXPANSION_BURNING_CRUSADE then
|
||||||
IceHUD.WowClassicBC = true
|
IceHUD.WowClassicBC = true
|
||||||
@ -32,10 +48,32 @@ else
|
|||||||
end
|
end
|
||||||
elseif WOW_PROJECT_WRATH_CLASSIC and WOW_PROJECT_ID == WOW_PROJECT_WRATH_CLASSIC then
|
elseif WOW_PROJECT_WRATH_CLASSIC and WOW_PROJECT_ID == WOW_PROJECT_WRATH_CLASSIC then
|
||||||
IceHUD.WowClassicWrath = true
|
IceHUD.WowClassicWrath = true
|
||||||
|
elseif WOW_PROJECT_CATACLYSM_CLASSIC and WOW_PROJECT_ID == WOW_PROJECT_CATACLYSM_CLASSIC then
|
||||||
|
IceHUD.WowClassicCataclysm = true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local GetSpellInfo = GetSpellInfo
|
||||||
|
if not GetSpellInfo and C_Spell and C_Spell.GetSpellInfo then
|
||||||
|
GetSpellInfo = function(spellID)
|
||||||
|
if not spellID then
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
|
||||||
|
local spellInfo = C_Spell.GetSpellInfo(spellID)
|
||||||
|
if spellInfo then
|
||||||
|
return spellInfo.name, nil, spellInfo.iconID, spellInfo.castTime, spellInfo.minRange, spellInfo.maxRange, spellInfo.spellID, spellInfo.originalIconID
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local GetSpellName = GetSpellInfo
|
||||||
|
if C_Spell and C_Spell.GetSpellName then
|
||||||
|
GetSpellName = C_Spell.GetSpellName
|
||||||
|
end
|
||||||
|
|
||||||
-- compatibility/feature flags
|
-- compatibility/feature flags
|
||||||
|
IceHUD.CanShowTargetCasting = not IceHUD.WowClassic or LibClassicCasterino or (IceHUD.WowClassic and IceHUD.WowVer >= 11500)
|
||||||
IceHUD.GetPlayerAuraBySpellID = _G["C_UnitAuras"] and C_UnitAuras.GetPlayerAuraBySpellID
|
IceHUD.GetPlayerAuraBySpellID = _G["C_UnitAuras"] and C_UnitAuras.GetPlayerAuraBySpellID
|
||||||
IceHUD.SpellFunctionsReturnRank = IceHUD.WowMain and IceHUD.WowVer < 80000
|
IceHUD.SpellFunctionsReturnRank = IceHUD.WowMain and IceHUD.WowVer < 80000
|
||||||
IceHUD.EventExistsPlayerPetChanged = IceHUD.WowMain and IceHUD.WowVer < 80000
|
IceHUD.EventExistsPlayerPetChanged = IceHUD.WowMain and IceHUD.WowVer < 80000
|
||||||
@ -48,18 +86,20 @@ IceHUD.EventExistsUnitDynamicFlags = IceHUD.WowMain and IceHUD.WowVer < 80000
|
|||||||
IceHUD.EventExistsUnitHealthFrequent = not IceHUD.WowMain or (IceHUD.WowVer >= 40000 and IceHUD.WowVer < 90000)
|
IceHUD.EventExistsUnitHealthFrequent = not IceHUD.WowMain or (IceHUD.WowVer >= 40000 and IceHUD.WowVer < 90000)
|
||||||
IceHUD.PerPowerEventsExist = IceHUD.WowMain and IceHUD.WowVer < 40000
|
IceHUD.PerPowerEventsExist = IceHUD.WowMain and IceHUD.WowVer < 40000
|
||||||
IceHUD.PerTargetComboPoints = IceHUD.WowVer < 60000
|
IceHUD.PerTargetComboPoints = IceHUD.WowVer < 60000
|
||||||
IceHUD.CanTrackOtherUnitBuffs = not IceHUD.WowClassic
|
IceHUD.CanTrackOtherUnitBuffs = not IceHUD.WowClassic or IceHUD.WowVer >= 11500
|
||||||
IceHUD.CanTrackGCD = not IceHUD.WowClassic
|
IceHUD.CanTrackGCD = not IceHUD.WowClassic or IceHUD.WowVer >= 11500
|
||||||
IceHUD.GetSpellInfoReturnsFunnel = IceHUD.WowMain and IceHUD.WowVer < 60000
|
IceHUD.GetSpellInfoReturnsFunnel = IceHUD.WowMain and IceHUD.WowVer < 60000
|
||||||
IceHUD.CanHookDestroyTotem = IceHUD.WowClassic or IceHUD.WowClassicBC or IceHUD.WowClassicWrath
|
IceHUD.CanHookDestroyTotem = IceHUD.WowClassic or IceHUD.WowClassicBC or IceHUD.WowClassicWrath or IceHUD.WowClassicCataclysm
|
||||||
IceHUD.ShouldUpdateTargetHealthEveryTick = (IceHUD.WowClassic or IceHUD.WowClassicBC) and GetCVarBool("predictedHealth")
|
IceHUD.ShouldUpdateTargetHealthEveryTick = (IceHUD.WowClassic or IceHUD.WowClassicBC) and GetCVarBool("predictedHealth")
|
||||||
IceHUD.UsesUIPanelButtonTemplate = IceHUD.WowVer >= 50000 or not IceHUD.WowMain
|
IceHUD.UsesUIPanelButtonTemplate = IceHUD.WowVer >= 50000 or not IceHUD.WowMain
|
||||||
IceHUD.EventExistsSpellcastInterruptible = IceHUD.WowVer >= 30200 and not IceHUD.WowClassicWrath
|
IceHUD.EventExistsSpellcastInterruptible = IceHUD.WowVer >= 30200 and not IceHUD.WowClassicWrath
|
||||||
IceHUD.DeathKnightUnholyFrostRunesSwapped = IceHUD.WowVer < 70300 and not IceHUD.WowClassicWrath
|
IceHUD.DeathKnightUnholyFrostRunesSwapped = IceHUD.WowVer < 70300 and not IceHUD.WowClassicWrath and not IceHUD.WowClassicCataclysm
|
||||||
IceHUD.SupportsHealPrediction = IceHUD.WowVer >= 40000 or IceHUD.WowClassicWrath
|
IceHUD.SupportsHealPrediction = IceHUD.WowVer >= 40000 or IceHUD.WowClassicWrath
|
||||||
IceHUD.UnitGroupRolesReturnsRoleString = IceHUD.WowVer >= 40000 or IceHUD.WowClassicWrath
|
IceHUD.UnitGroupRolesReturnsRoleString = IceHUD.WowVer >= 40000 or IceHUD.WowClassicWrath
|
||||||
IceHUD.ShellGameSpellID = 271571
|
IceHUD.ShellGameSpellID = 271571
|
||||||
IceHUD.HasShellGame = GetSpellInfo(IceHUD.ShellGameSpellID)
|
IceHUD.HasShellGame = GetSpellName(IceHUD.ShellGameSpellID)
|
||||||
|
IceHUD.CatalogingSpellIDs = {366290, 372817, 385025, 385635, 386070, 386504, 400043, 403115}
|
||||||
|
IceHUD.HasCataloging = GetSpellName(366290)
|
||||||
|
|
||||||
IceHUD.UnitPowerEvent = "UNIT_POWER_UPDATE"
|
IceHUD.UnitPowerEvent = "UNIT_POWER_UPDATE"
|
||||||
|
|
||||||
@ -411,7 +451,12 @@ blizOptionsPanel.button:SetWidth(240)
|
|||||||
blizOptionsPanel.button:SetHeight(30)
|
blizOptionsPanel.button:SetHeight(30)
|
||||||
blizOptionsPanel.button:SetScript("OnClick", function(self) HideUIPanel(InterfaceOptionsFrame) HideUIPanel(GameMenuFrame) IceHUD:OpenConfig() end)
|
blizOptionsPanel.button:SetScript("OnClick", function(self) HideUIPanel(InterfaceOptionsFrame) HideUIPanel(GameMenuFrame) IceHUD:OpenConfig() end)
|
||||||
blizOptionsPanel.button:SetPoint('TOPLEFT', blizOptionsPanel, 'TOPLEFT', 20, -20)
|
blizOptionsPanel.button:SetPoint('TOPLEFT', blizOptionsPanel, 'TOPLEFT', 20, -20)
|
||||||
InterfaceOptions_AddCategory(blizOptionsPanel)
|
if InterfaceOptions_AddCategory then
|
||||||
|
InterfaceOptions_AddCategory(blizOptionsPanel)
|
||||||
|
elseif Settings then
|
||||||
|
local category = Settings.RegisterCanvasLayoutCategory(blizOptionsPanel, "IceHUD")
|
||||||
|
Settings.RegisterAddOnCategory(category)
|
||||||
|
end
|
||||||
|
|
||||||
function IceHUD:OpenConfig()
|
function IceHUD:OpenConfig()
|
||||||
if not ConfigDialog then return end
|
if not ConfigDialog then return end
|
||||||
@ -479,7 +524,7 @@ end
|
|||||||
|
|
||||||
function IceHUD:GetAuraCount(auraType, unit, ability, onlyMine, matchByName)
|
function IceHUD:GetAuraCount(auraType, unit, ability, onlyMine, matchByName)
|
||||||
if not unit or not ability then
|
if not unit or not ability then
|
||||||
return 0
|
return 0, nil
|
||||||
end
|
end
|
||||||
|
|
||||||
if unit == "main hand weapon" or unit == "off hand weapon" then
|
if unit == "main hand weapon" or unit == "off hand weapon" then
|
||||||
@ -487,46 +532,46 @@ function IceHUD:GetAuraCount(auraType, unit, ability, onlyMine, matchByName)
|
|||||||
= GetWeaponEnchantInfo()
|
= GetWeaponEnchantInfo()
|
||||||
|
|
||||||
if unit == "main hand weapon" and hasMainHandEnchant then
|
if unit == "main hand weapon" and hasMainHandEnchant then
|
||||||
return mainHandCharges
|
return mainHandCharges, nil
|
||||||
elseif unit == "off hand weapon" and hasOffHandEnchant then
|
elseif unit == "off hand weapon" and hasOffHandEnchant then
|
||||||
return offHandCharges
|
return offHandCharges, nil
|
||||||
end
|
end
|
||||||
|
|
||||||
return 0
|
return 0, nil
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Support for Spell IDs
|
-- Support for Spell IDs
|
||||||
if (IceHUD.GetPlayerAuraBySpellID and tonumber(ability) ~= nil) then
|
if (IceHUD.GetPlayerAuraBySpellID and tonumber(ability) ~= nil) then
|
||||||
local aura = C_UnitAuras.GetPlayerAuraBySpellID(ability)
|
local aura = C_UnitAuras.GetPlayerAuraBySpellID(ability)
|
||||||
if aura ~= nil then
|
if aura ~= nil then
|
||||||
return aura.applications
|
return aura.applications, nil
|
||||||
else
|
else
|
||||||
return 0
|
return 0, nil
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local i = 1
|
local i = 1
|
||||||
local name, _, texture, applications
|
local name, _, texture, applications
|
||||||
if IceHUD.SpellFunctionsReturnRank then
|
if IceHUD.SpellFunctionsReturnRank then
|
||||||
name, _, texture, applications = UnitAura(unit, i, auraType..(onlyMine and "|PLAYER" or ""))
|
name, _, texture, applications = IceHUD.UnitAura(unit, i, auraType..(onlyMine and "|PLAYER" or ""))
|
||||||
else
|
else
|
||||||
name, texture, applications = UnitAura(unit, i, auraType..(onlyMine and "|PLAYER" or ""))
|
name, texture, applications = IceHUD.UnitAura(unit, i, auraType..(onlyMine and "|PLAYER" or ""))
|
||||||
end
|
end
|
||||||
while name do
|
while name do
|
||||||
if (not matchByName and string.match(texture:upper(), ability:upper()))
|
if (not matchByName and string.match(texture:upper(), ability:upper()))
|
||||||
or (matchByName and string.match(name:upper(), ability:upper())) then
|
or (matchByName and string.match(name:upper(), ability:upper())) then
|
||||||
return applications
|
return applications, i
|
||||||
end
|
end
|
||||||
|
|
||||||
i = i + 1
|
i = i + 1
|
||||||
if IceHUD.SpellFunctionsReturnRank then
|
if IceHUD.SpellFunctionsReturnRank then
|
||||||
name, _, texture, applications = UnitAura(unit, i, auraType..(onlyMine and "|PLAYER" or ""))
|
name, _, texture, applications = IceHUD.UnitAura(unit, i, auraType..(onlyMine and "|PLAYER" or ""))
|
||||||
else
|
else
|
||||||
name, texture, applications = UnitAura(unit, i, auraType..(onlyMine and "|PLAYER" or ""))
|
name, texture, applications = IceHUD.UnitAura(unit, i, auraType..(onlyMine and "|PLAYER" or ""))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
return 0
|
return 0, nil
|
||||||
end
|
end
|
||||||
|
|
||||||
do
|
do
|
||||||
@ -540,9 +585,9 @@ do
|
|||||||
local i = 1
|
local i = 1
|
||||||
local name, _, texture, applications, _, _, _, _, _, _, auraID
|
local name, _, texture, applications, _, _, _, _, _, _, auraID
|
||||||
if IceHUD.SpellFunctionsReturnRank then
|
if IceHUD.SpellFunctionsReturnRank then
|
||||||
name, _, texture, applications, _, _, _, _, _, _, auraID = UnitAura(unit, i, filter)
|
name, _, texture, applications, _, _, _, _, _, _, auraID = IceHUD.UnitAura(unit, i, filter)
|
||||||
else
|
else
|
||||||
name, texture, applications, _, _, _, _, _, _, auraID = UnitAura(unit, i, filter)
|
name, texture, applications, _, _, _, _, _, _, auraID = IceHUD.UnitAura(unit, i, filter)
|
||||||
end
|
end
|
||||||
while name do
|
while name do
|
||||||
for i=1, #spellIDs do
|
for i=1, #spellIDs do
|
||||||
@ -554,9 +599,9 @@ do
|
|||||||
|
|
||||||
i = i + 1
|
i = i + 1
|
||||||
if IceHUD.SpellFunctionsReturnRank then
|
if IceHUD.SpellFunctionsReturnRank then
|
||||||
name, _, texture, applications, _, _, _, _, _, _, auraID = UnitAura(unit, i, filter)
|
name, _, texture, applications, _, _, _, _, _, _, auraID = IceHUD.UnitAura(unit, i, filter)
|
||||||
else
|
else
|
||||||
name, texture, applications, _, _, _, _, _, _, auraID = UnitAura(unit, i, filter)
|
name, texture, applications, _, _, _, _, _, _, auraID = IceHUD.UnitAura(unit, i, filter)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -884,11 +929,13 @@ local function munge_unit_menu(menu)
|
|||||||
if btns[i].IsMenu() then
|
if btns[i].IsMenu() then
|
||||||
local subbtns = btns[i].GetMenuButtons()
|
local subbtns = btns[i].GetMenuButtons()
|
||||||
for j=1, #subbtns do
|
for j=1, #subbtns do
|
||||||
local blacklisted = BLACKLISTED_UNIT_MENU_OPTIONS[subbtns[j]:GetText()]
|
if subbtns[j] then
|
||||||
if not blacklisted then
|
local blacklisted = BLACKLISTED_UNIT_MENU_OPTIONS[subbtns[j]:GetText()]
|
||||||
new_buttons_list[#new_buttons_list+1] = subbtns[j]
|
if not blacklisted then
|
||||||
elseif blacklisted ~= true then
|
new_buttons_list[#new_buttons_list+1] = subbtns[j]
|
||||||
new_buttons_list[#new_buttons_list+1] = blacklisted
|
elseif blacklisted ~= true then
|
||||||
|
new_buttons_list[#new_buttons_list+1] = blacklisted
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
@ -963,17 +1010,20 @@ if UnitPopupFrames then
|
|||||||
end
|
end
|
||||||
|
|
||||||
IceHUD.DropdownUnit = nil
|
IceHUD.DropdownUnit = nil
|
||||||
UIDropDownMenu_Initialize(IceHUD_UnitFrame_DropDown, function()
|
-- todo: update for new UnitPopup_OpenMenu() API
|
||||||
if not IceHUD.DropdownUnit then
|
if UnitPopup_ShowMenu then
|
||||||
return
|
UIDropDownMenu_Initialize(IceHUD_UnitFrame_DropDown, function()
|
||||||
end
|
if not IceHUD.DropdownUnit then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
local menu, id = figure_unit_menu(IceHUD.DropdownUnit)
|
local menu, id = figure_unit_menu(IceHUD.DropdownUnit)
|
||||||
if menu then
|
if menu then
|
||||||
menu = IceHUD.MungeUnitMenu(menu)
|
menu = IceHUD.MungeUnitMenu(menu)
|
||||||
UnitPopup_ShowMenu(IceHUD_UnitFrame_DropDown, menu, IceHUD.DropdownUnit, nil, id)
|
UnitPopup_ShowMenu(IceHUD_UnitFrame_DropDown, menu, IceHUD.DropdownUnit, nil, id)
|
||||||
end
|
end
|
||||||
end, "MENU", nil)
|
end, "MENU", nil)
|
||||||
|
end
|
||||||
|
|
||||||
function IceHUD:OutOfCombatWrapper(func)
|
function IceHUD:OutOfCombatWrapper(func)
|
||||||
return function(...)
|
return function(...)
|
||||||
|
13
IceHUD.toc
13
IceHUD.toc
@ -1,8 +1,9 @@
|
|||||||
## Interface: 100002
|
## Interface: 100207
|
||||||
## Interface-Retail: 100002
|
## Interface-Retail: 100207
|
||||||
## Interface-Classic: 11403
|
## Interface-Classic: 11502
|
||||||
## Interface-BCC: 20504
|
## Interface-BCC: 20504
|
||||||
## Interface-Wrath: 30400
|
## Interface-Wrath: 30403
|
||||||
|
## Interface-Cata: 40400
|
||||||
## Author: Parnic, originally created by Iceroth
|
## Author: Parnic, originally created by Iceroth
|
||||||
## Name: IceHUD
|
## Name: IceHUD
|
||||||
## Title: IceHUD |cff7fff7f-Ace3-|r
|
## Title: IceHUD |cff7fff7f-Ace3-|r
|
||||||
@ -14,7 +15,8 @@
|
|||||||
# ## Version: @project-version@
|
# ## Version: @project-version@
|
||||||
#@end-non-debug@
|
#@end-non-debug@
|
||||||
## SavedVariables: IceCoreDB
|
## SavedVariables: IceCoreDB
|
||||||
## OptionalDeps: Ace3, LibSharedMedia-3.0, LibDogTag-3.0, LibDogTag-Unit-3.0, LibRangeCheck-2.0, LibDualSpec-1.0, LibDBIcon-1.0, AceGUI-3.0-SharedMediaWidgets
|
## IconTexture: Interface\Icons\Spell_Frost_Frost
|
||||||
|
## OptionalDeps: Ace3, LibSharedMedia-3.0, LibDogTag-3.0, LibDogTag-Unit-3.0, LibRangeCheck-3.0, LibDualSpec-1.0, LibDBIcon-1.0, AceGUI-3.0-SharedMediaWidgets
|
||||||
## X-Category: HUDs
|
## X-Category: HUDs
|
||||||
## X-Website: https://www.wowace.com/projects/ice-hud
|
## X-Website: https://www.wowace.com/projects/ice-hud
|
||||||
## X-Curse-Project-ID: 5394
|
## X-Curse-Project-ID: 5394
|
||||||
@ -101,6 +103,7 @@ modules\ArcaneCharges.lua
|
|||||||
modules\RollTheBones.lua
|
modules\RollTheBones.lua
|
||||||
modules\EssencePower.lua
|
modules\EssencePower.lua
|
||||||
modules\DruidEnergy.lua
|
modules\DruidEnergy.lua
|
||||||
|
modules\DragonridingVigor.lua
|
||||||
|
|
||||||
#@do-not-package@
|
#@do-not-package@
|
||||||
IceHUD_Options\Json.lua
|
IceHUD_Options\Json.lua
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
## Interface: 100002
|
## Interface: 100207
|
||||||
## Interface-Retail: 100002
|
## Interface-Retail: 100207
|
||||||
## Interface-Classic: 11403
|
## Interface-Classic: 11502
|
||||||
## Interface-BCC: 20504
|
## Interface-BCC: 20504
|
||||||
## Interface-Wrath: 30400
|
## Interface-Wrath: 30403
|
||||||
|
## Interface-Cata: 40400
|
||||||
## Title: IceHUD |cff7fff7f-Options-|r
|
## Title: IceHUD |cff7fff7f-Options-|r
|
||||||
## Author: Parnic
|
## Author: Parnic
|
||||||
## Version: @project-version@
|
## Version: @project-version@
|
||||||
@ -10,6 +11,7 @@
|
|||||||
## OptionalDeps: AceGUI-3.0-SharedMediaWidgets
|
## OptionalDeps: AceGUI-3.0-SharedMediaWidgets
|
||||||
## Dependencies: IceHUD
|
## Dependencies: IceHUD
|
||||||
## LoadOnDemand: 1
|
## LoadOnDemand: 1
|
||||||
|
## IconTexture: Interface\Icons\Spell_Frost_Frost
|
||||||
|
|
||||||
Json.lua
|
Json.lua
|
||||||
JsonDecode.lua
|
JsonDecode.lua
|
||||||
|
@ -161,7 +161,7 @@ The Classic game client doesn't provide this information to addons because it wa
|
|||||||
IceHUD.IceCore:SetScale(v)
|
IceHUD.IceCore:SetScale(v)
|
||||||
end,
|
end,
|
||||||
min = 0.2,
|
min = 0.2,
|
||||||
max = 2.0,
|
max = 4.0,
|
||||||
step = 0.05,
|
step = 0.05,
|
||||||
isPercent = true,
|
isPercent = true,
|
||||||
order = 14,
|
order = 14,
|
||||||
@ -426,29 +426,44 @@ The Classic game client doesn't provide this information to addons because it wa
|
|||||||
hidden = not IceHUD.HasShellGame,
|
hidden = not IceHUD.HasShellGame,
|
||||||
order = 36,
|
order = 36,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
bHideDuringCataloging = {
|
||||||
|
type = 'toggle',
|
||||||
|
name = L["Hide during cataloging"],
|
||||||
|
desc = L["This will hide the entire mod when using the Dragonflight Cataloging camera."],
|
||||||
|
width = 'double',
|
||||||
|
get = function()
|
||||||
|
return IceHUD.IceCore.settings.bHideDuringCataloging
|
||||||
|
end,
|
||||||
|
set = function(info, value)
|
||||||
|
IceHUD.IceCore.settings.bHideDuringCataloging = value
|
||||||
|
if not value then
|
||||||
|
IceHUD.IceCore.IceHUDFrame:Show()
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
hidden = not IceHUD.HasCataloging,
|
||||||
|
order = 36,
|
||||||
|
},
|
||||||
|
|
||||||
|
bIncreaseStrata = {
|
||||||
|
type = 'range',
|
||||||
|
name = L["Added strata"],
|
||||||
|
desc = L["Push IceHUD modules to the foreground. Increase if other addons are covering IceHUD. Requires reload."],
|
||||||
|
get = function()
|
||||||
|
return IceHUD.IceCore:GetAddedStrata()
|
||||||
|
end,
|
||||||
|
set = function(info, v)
|
||||||
|
IceHUD.IceCore:SetAddedStrata(v)
|
||||||
|
end,
|
||||||
|
min = 0,
|
||||||
|
max = 2,
|
||||||
|
step = 1,
|
||||||
|
order = 37,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
textSettings = {
|
|
||||||
type = 'select',
|
|
||||||
dialogControl = "LSM30_Font",
|
|
||||||
name = L["Font"],
|
|
||||||
desc = L["IceHUD Font"],
|
|
||||||
order = 19,
|
|
||||||
get = function(info)
|
|
||||||
return IceHUD.IceCore:GetFontFamily()
|
|
||||||
end,
|
|
||||||
set = function(info, value)
|
|
||||||
IceHUD.IceCore:SetFontFamily(value)
|
|
||||||
end,
|
|
||||||
disabled = function()
|
|
||||||
return not IceHUD.IceCore:IsEnabled()
|
|
||||||
end,
|
|
||||||
values = AceGUIWidgetLSMlists.font,
|
|
||||||
order = 94.75,
|
|
||||||
},
|
|
||||||
|
|
||||||
barSettings = {
|
barSettings = {
|
||||||
type = 'group',
|
type = 'group',
|
||||||
name = L["Bar Settings"],
|
name = L["Bar Settings"],
|
||||||
@ -746,6 +761,26 @@ The Classic game client doesn't provide this information to addons because it wa
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if AceGUIWidgetLSMlists then
|
||||||
|
options.args.textSettings = {
|
||||||
|
type = 'select',
|
||||||
|
dialogControl = "LSM30_Font",
|
||||||
|
name = L["Font"],
|
||||||
|
desc = L["IceHUD Font"],
|
||||||
|
get = function(info)
|
||||||
|
return IceHUD.IceCore:GetFontFamily()
|
||||||
|
end,
|
||||||
|
set = function(info, value)
|
||||||
|
IceHUD.IceCore:SetFontFamily(value)
|
||||||
|
end,
|
||||||
|
disabled = function()
|
||||||
|
return not IceHUD.IceCore:IsEnabled()
|
||||||
|
end,
|
||||||
|
values = AceGUIWidgetLSMlists.font,
|
||||||
|
order = 94.75,
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
IceHUD_Options.options = options
|
IceHUD_Options.options = options
|
||||||
|
|
||||||
function IceHUD_Options:GenerateModuleOptions(firstLoad)
|
function IceHUD_Options:GenerateModuleOptions(firstLoad)
|
||||||
|
@ -3,6 +3,21 @@ local L = LibStub("AceLocale-3.0"):GetLocale("IceHUD", false)
|
|||||||
local validUnits = {"player", "target", "focus", "pet", "vehicle", "targettarget", "main hand weapon", "off hand weapon"}
|
local validUnits = {"player", "target", "focus", "pet", "vehicle", "targettarget", "main hand weapon", "off hand weapon"}
|
||||||
local buffOrDebuff = {"buff", "debuff", "charges", "spell count"}
|
local buffOrDebuff = {"buff", "debuff", "charges", "spell count"}
|
||||||
|
|
||||||
|
local GetSpellCharges = GetSpellCharges
|
||||||
|
if not GetSpellCharges and C_Spell then
|
||||||
|
GetSpellCharges = function(spellID)
|
||||||
|
local spellChargeInfo = C_Spell.GetSpellCharges(spellID)
|
||||||
|
if spellChargeInfo then
|
||||||
|
return spellChargeInfo.currentCharges, spellChargeInfo.maxCharges, spellChargeInfo.cooldownStartTime, spellChargeInfo.cooldownDuration, spellChargeInfo.chargeModRate
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local GetSpellCount = GetSpellCount
|
||||||
|
if not GetSpellCount and C_Spell then
|
||||||
|
GetSpellCount = C_Spell.GetSpellCastCount
|
||||||
|
end
|
||||||
|
|
||||||
-- OVERRIDE
|
-- OVERRIDE
|
||||||
function IceStackCounter_GetOptions(frame, opts)
|
function IceStackCounter_GetOptions(frame, opts)
|
||||||
opts["customHeader"] = {
|
opts["customHeader"] = {
|
||||||
|
@ -19,10 +19,11 @@ IceUnitBar.prototype.hasPet = nil
|
|||||||
|
|
||||||
IceUnitBar.prototype.noFlash = nil
|
IceUnitBar.prototype.noFlash = nil
|
||||||
|
|
||||||
local SPELL_POWER_INSANITY, SPELL_POWER_RAGE = SPELL_POWER_INSANITY, SPELL_POWER_RAGE
|
local SPELL_POWER_INSANITY, SPELL_POWER_RAGE, SPELL_POWER_RUNIC_POWER = SPELL_POWER_INSANITY, SPELL_POWER_RAGE, SPELL_POWER_RUNIC_POWER
|
||||||
if Enum and Enum.PowerType then
|
if Enum and Enum.PowerType then
|
||||||
SPELL_POWER_INSANITY = Enum.PowerType.Insanity
|
SPELL_POWER_INSANITY = Enum.PowerType.Insanity
|
||||||
SPELL_POWER_RAGE = Enum.PowerType.Rage
|
SPELL_POWER_RAGE = Enum.PowerType.Rage
|
||||||
|
SPELL_POWER_RUNIC_POWER = Enum.PowerType.RunicPower
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Constructor --
|
-- Constructor --
|
||||||
@ -178,7 +179,7 @@ function IceUnitBar.prototype:CreateFlashFrame()
|
|||||||
self.flashFrame = CreateFrame("Frame", "IceHUD_"..self.elementName.."_Flash", self.frame)
|
self.flashFrame = CreateFrame("Frame", "IceHUD_"..self.elementName.."_Flash", self.frame)
|
||||||
end
|
end
|
||||||
|
|
||||||
self.flashFrame:SetFrameStrata("BACKGROUND")
|
self.flashFrame:SetFrameStrata(IceHUD.IceCore:DetermineStrata("BACKGROUND"))
|
||||||
self.flashFrame:SetWidth(self.settings.barWidth + (self.moduleSettings.widthModifier or 0))
|
self.flashFrame:SetWidth(self.settings.barWidth + (self.moduleSettings.widthModifier or 0))
|
||||||
self.flashFrame:SetHeight(self.settings.barHeight)
|
self.flashFrame:SetHeight(self.settings.barHeight)
|
||||||
|
|
||||||
@ -239,7 +240,9 @@ function IceUnitBar.prototype:Update()
|
|||||||
-- so this technically doesn't get us the answer we want most of the time. too risky to change at this point, though.
|
-- so this technically doesn't get us the answer we want most of the time. too risky to change at this point, though.
|
||||||
self.mana = UnitPower(self.unit, UnitPowerType(self.unit))
|
self.mana = UnitPower(self.unit, UnitPowerType(self.unit))
|
||||||
self.maxMana = UnitPowerMax(self.unit, UnitPowerType(self.unit))
|
self.maxMana = UnitPowerMax(self.unit, UnitPowerType(self.unit))
|
||||||
if UnitPowerType(self.unit) == SPELL_POWER_RAGE and self.maxMana == 1000 then
|
local powerType = UnitPowerType(self.unit)
|
||||||
|
if (powerType == SPELL_POWER_RAGE and self.maxMana == 1000)
|
||||||
|
or (powerType == SPELL_POWER_RUNIC_POWER and self.maxMana >= 1000) then
|
||||||
self.mana = IceHUD:MathRound(self.mana / 10)
|
self.mana = IceHUD:MathRound(self.mana / 10)
|
||||||
self.maxMana = IceHUD:MathRound(self.maxMana / 10)
|
self.maxMana = IceHUD:MathRound(self.maxMana / 10)
|
||||||
end
|
end
|
||||||
|
151
changelog.md
151
changelog.md
@ -1,5 +1,156 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
v1.14.42:
|
||||||
|
|
||||||
|
- Fix Vengeance module in Cataclysm Classic
|
||||||
|
|
||||||
|
v1.14.41:
|
||||||
|
|
||||||
|
- Fix swapped DK runes in Cataclysm Classic
|
||||||
|
- Possible fix for castbar flashing sometimes when set to "Never"
|
||||||
|
- Fix IceHUD Vigor bar not showing up for some types of dragons such as the Algarian Stormrider
|
||||||
|
|
||||||
|
v1.14.40:
|
||||||
|
|
||||||
|
- Update TOC for Dragonflight to 10.2.7
|
||||||
|
|
||||||
|
v1.14.39:
|
||||||
|
|
||||||
|
- Support Cataclysm Classic 4.4.0
|
||||||
|
|
||||||
|
v1.14.38:
|
||||||
|
|
||||||
|
- Update TOCs
|
||||||
|
|
||||||
|
v1.14.37:
|
||||||
|
|
||||||
|
- Update LibRangeCheck version to address taint issues (wowace ticket #353)
|
||||||
|
|
||||||
|
v1.14.36:
|
||||||
|
|
||||||
|
- Really fix IceHUD stomping on other uses of the PowerBarContainer such as the Digging bar for the Archive event.
|
||||||
|
|
||||||
|
v1.14.35:
|
||||||
|
|
||||||
|
- Fix IceHUD stomping on other uses of the PowerBarContainer such as the Digging bar for the Archive event.
|
||||||
|
|
||||||
|
v1.14.34:
|
||||||
|
|
||||||
|
- Fix Vigor showing up sometimes when it shouldn't.
|
||||||
|
|
||||||
|
v1.14.33:
|
||||||
|
|
||||||
|
- Update TOC for Dragonflight to 10.2.5
|
||||||
|
|
||||||
|
v1.14.32:
|
||||||
|
|
||||||
|
- Enable GlobalCoolDown module in Classic Era 1.15.0+
|
||||||
|
- Enable tracking target buffs/debuffs in Classic Era 1.15.0+
|
||||||
|
|
||||||
|
v1.14.31:
|
||||||
|
|
||||||
|
- Fix nil concatenation error (wowace ticket #351)
|
||||||
|
|
||||||
|
v1.14.30:
|
||||||
|
|
||||||
|
- Update Classic-era TOC for 1.15.0
|
||||||
|
- Enable TargetCastBar module on Classic-era 1.15+
|
||||||
|
|
||||||
|
v1.14.29:
|
||||||
|
|
||||||
|
- Fix Stagger bar error for 10.2.0 (wowace ticket #348)
|
||||||
|
|
||||||
|
v1.14.28:
|
||||||
|
|
||||||
|
- Update TOC for Dragonflight to 10.2.0
|
||||||
|
|
||||||
|
v1.14.27:
|
||||||
|
|
||||||
|
- Update TOC for Dragonflight to 10.1.7
|
||||||
|
|
||||||
|
v1.14.26:
|
||||||
|
|
||||||
|
- Update TOC for classic-era to 1.14.4
|
||||||
|
|
||||||
|
v1.14.25:
|
||||||
|
|
||||||
|
- Fixed lua error that would appear when targetting webwrapped players in heroic alpha/beta titan rune dungeons.
|
||||||
|
- Added ability to adjust strata globally.
|
||||||
|
|
||||||
|
v1.14.24:
|
||||||
|
|
||||||
|
- Fixed an error when targeting a player and right-clicking a module that should show a menu in 10.1.5.
|
||||||
|
|
||||||
|
v1.14.23:
|
||||||
|
|
||||||
|
- Update Dragonflight TOC for 10.1.5
|
||||||
|
|
||||||
|
v1.14.22:
|
||||||
|
|
||||||
|
- Fixed reported issue with a Lua error on Wrath Classic clients. https://www.wowace.com/projects/ice-hud/issues/344
|
||||||
|
- Fixed Vigor module not working when riding Grotto Netherwing Drake (and theoretically all future Dragonriding mount types).
|
||||||
|
- Updated TOC for Wrath-Classic.
|
||||||
|
|
||||||
|
v1.14.21:
|
||||||
|
|
||||||
|
- Increased maximum scale/zoom to 400%, by request.
|
||||||
|
- Fixed TargetCC/FocusCC modules on Wrath Classic.
|
||||||
|
- Fixed disabled Buff/Debuff Watchers showing a static gray bar when set to When Missing or Always display modes.
|
||||||
|
- Fixed Buff/Debuff Watchers showing an empty bar when set to Missing mode. If the background was disabled, this looked like just a floating spell icon.
|
||||||
|
- Fixed spell icons sometimes not showing up for custom bars until the tracked spell had been cast once.
|
||||||
|
|
||||||
|
v1.14.20:
|
||||||
|
|
||||||
|
- Added Winding Slitherdrake as recognized for the Dragonriding Vigor module
|
||||||
|
|
||||||
|
v1.14.19:
|
||||||
|
|
||||||
|
- Updated TOCs for 10.1.0
|
||||||
|
- Added addon icon for 10.1.0 clients
|
||||||
|
- Fixed Dragonriding Vigor charges not showing up in 10.1.0
|
||||||
|
- Fixed Vigor not always updating correctly when loading into the game or a new zone
|
||||||
|
|
||||||
|
v1.14.18:
|
||||||
|
|
||||||
|
- Fixed Runic Power showing on a scale of 0-1000+ instead of 0-100+ with DogTags off
|
||||||
|
- Added option (enabled by default) to hide mod during cataloging.
|
||||||
|
- Fixed "Hide Blizzard Buffs" option on PlayerInfo causing errors and "?" icons when toggling off.
|
||||||
|
- Also hide Debuff frame if it exists (Dragonflight+) when enabling "Hide Blizzard Buffs" in the PlayerInfo module.
|
||||||
|
|
||||||
|
v1.14.17:
|
||||||
|
|
||||||
|
- Updated TOCs for 10.0.7
|
||||||
|
|
||||||
|
v1.14.16:
|
||||||
|
|
||||||
|
- Exposed the option in the Totems module to hide the Blizzard Totems frame or not, and changed the default value to not hide when on a version of the game that doesn't support right-clicking to destroy totems (any version after Wrath). This enables using the default Totems frame to cancel totems early.
|
||||||
|
- Fixed a reported error when playing Darkmoon Faire games.
|
||||||
|
- Added a few more Polymorph ranks to TargetCC for Classic. I'm sure there are more missing.
|
||||||
|
|
||||||
|
v1.14.15:
|
||||||
|
|
||||||
|
- Updated TOCs for 10.0.5
|
||||||
|
|
||||||
|
v1.14.14:
|
||||||
|
|
||||||
|
- Fixed PlayerAlternatePower bar showing up when it shouldn't have, such as when casting Power Word: Shield before ever having done anything to trigger a game-level "alternate power" event, such as mounting a Dragonriding mount.
|
||||||
|
|
||||||
|
v1.14.13:
|
||||||
|
|
||||||
|
- Fixed Vigor module hiding default Climbing, Film, etc. UIs. (wowace ticket #336)
|
||||||
|
|
||||||
|
v1.14.12:
|
||||||
|
|
||||||
|
- Added a module for showing Dragonriding Vigor points.
|
||||||
|
|
||||||
|
v1.14.11:
|
||||||
|
|
||||||
|
- Packaged a new version of LibDogTag-Unit to fix the Guild roster resetting its scroll position every 20 seconds.
|
||||||
|
|
||||||
|
v1.14.10:
|
||||||
|
|
||||||
|
- Fix an error in TargetTargetHealth/Mana and CustomHealth when Low Threshold Color was checked and Scale by Health % was un-checked.
|
||||||
|
|
||||||
v1.14.9:
|
v1.14.9:
|
||||||
|
|
||||||
- Fix Low Threshold to be usable even when Color By Health/Mana % is disabled. (ticket #334)
|
- Fix Low Threshold to be usable even when Color By Health/Mana % is disabled. (ticket #334)
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
<Include file="libs\AceHook-3.0\AceHook-3.0.xml"/>
|
<Include file="libs\AceHook-3.0\AceHook-3.0.xml"/>
|
||||||
<Include file="libs\LibDogTag-3.0\lib.xml"/>
|
<Include file="libs\LibDogTag-3.0\lib.xml"/>
|
||||||
<Include file="libs\LibDogTag-Unit-3.0\lib.xml"/>
|
<Include file="libs\LibDogTag-Unit-3.0\lib.xml"/>
|
||||||
<Script file="libs\LibRangeCheck-2.0\LibRangeCheck-2.0.lua"/>
|
<Script file="libs\LibRangeCheck-3.0\LibRangeCheck-3.0.lua"/>
|
||||||
<Include file="libs\LibSharedMedia-3.0\lib.xml"/>
|
<Include file="libs\LibSharedMedia-3.0\lib.xml"/>
|
||||||
<Include file="libs\AceGUI-3.0-SharedMediaWidgets\widget.xml"/>
|
<Include file="libs\AceGUI-3.0-SharedMediaWidgets\widget.xml"/>
|
||||||
<Script file="LibDataBroker-1.1.lua"/>
|
<Script file="LibDataBroker-1.1.lua"/>
|
||||||
|
@ -8,6 +8,21 @@ if not CastingBarFrame then
|
|||||||
CastingBarFrame = PlayerCastingBarFrame
|
CastingBarFrame = PlayerCastingBarFrame
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local IsSpellInRange = IsSpellInRange
|
||||||
|
if not IsSpellInRange and C_Spell then
|
||||||
|
IsSpellInRange = C_Spell.IsSpellInRange
|
||||||
|
end
|
||||||
|
|
||||||
|
local GetSpellCooldown = GetSpellCooldown
|
||||||
|
if not GetSpellCooldown and C_Spell then
|
||||||
|
GetSpellCooldown = function(spellID)
|
||||||
|
local spellCooldownInfo = C_Spell.GetSpellCooldown(spellID)
|
||||||
|
if spellCooldownInfo then
|
||||||
|
return spellCooldownInfo.startTime, spellCooldownInfo.duration, spellCooldownInfo.isEnabled, spellCooldownInfo.modRate
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
CastBar.prototype.spellCastSent = nil
|
CastBar.prototype.spellCastSent = nil
|
||||||
|
|
||||||
-- Constructor --
|
-- Constructor --
|
||||||
|
@ -20,7 +20,8 @@ IceClassPowerCounter.prototype.unmodifiedMaxPerRune = 10
|
|||||||
IceClassPowerCounter.prototype.unit = "player"
|
IceClassPowerCounter.prototype.unit = "player"
|
||||||
IceClassPowerCounter.prototype.round = ceil
|
IceClassPowerCounter.prototype.round = ceil
|
||||||
IceClassPowerCounter.prototype.growModes = { width = 1, height = 2 }
|
IceClassPowerCounter.prototype.growModes = { width = 1, height = 2 }
|
||||||
IceClassPowerCounter.prototype.currentGrowMode = nil
|
IceClassPowerCounter.prototype.currentGrowMode = IceClassPowerCounter.prototype.growModes["height"]
|
||||||
|
IceClassPowerCounter.prototype.shouldRegisterDisplayPower = true
|
||||||
|
|
||||||
-- Constructor --
|
-- Constructor --
|
||||||
function IceClassPowerCounter.prototype:init(name)
|
function IceClassPowerCounter.prototype:init(name)
|
||||||
@ -391,7 +392,7 @@ function IceClassPowerCounter.prototype:GetDefaultSettings()
|
|||||||
defaults["hideFriendly"] = false
|
defaults["hideFriendly"] = false
|
||||||
defaults["pulseWhenFull"] = true
|
defaults["pulseWhenFull"] = true
|
||||||
defaults["overrideAlpha"] = true
|
defaults["overrideAlpha"] = true
|
||||||
defaults["numericVerticalOffset"] = 0
|
defaults["numericVerticalOffset"] = -25
|
||||||
defaults["alwaysShowNumeric"] = false
|
defaults["alwaysShowNumeric"] = false
|
||||||
|
|
||||||
return defaults
|
return defaults
|
||||||
@ -470,7 +471,9 @@ function IceClassPowerCounter.prototype:DisplayCounter()
|
|||||||
self:UnregisterEvent("PLAYER_LEVEL_UP")
|
self:UnregisterEvent("PLAYER_LEVEL_UP")
|
||||||
|
|
||||||
self:RegisterEvent(self:GetPowerEvent(), "UpdateRunePower")
|
self:RegisterEvent(self:GetPowerEvent(), "UpdateRunePower")
|
||||||
self:RegisterEvent("UNIT_DISPLAYPOWER", "UpdateRunePower")
|
if self.shouldRegisterDisplayPower then
|
||||||
|
self:RegisterEvent("UNIT_DISPLAYPOWER", "UpdateRunePower")
|
||||||
|
end
|
||||||
self:RegisterEvent("PLAYER_ENTERING_WORLD", "EnteringWorld")
|
self:RegisterEvent("PLAYER_ENTERING_WORLD", "EnteringWorld")
|
||||||
if IceHUD.EventExistsUnitMaxPower then
|
if IceHUD.EventExistsUnitMaxPower then
|
||||||
self:RegisterEvent("UNIT_MAXPOWER", "UpdateRunePower")
|
self:RegisterEvent("UNIT_MAXPOWER", "UpdateRunePower")
|
||||||
@ -527,10 +530,15 @@ function IceClassPowerCounter.prototype:UpdateRunePower(event, arg1, arg2)
|
|||||||
local percentReady = self.shouldShowUnmodified and (UnitPower("player", self.unitPower, true) / self.unmodifiedMaxPerRune) or numReady
|
local percentReady = self.shouldShowUnmodified and (UnitPower("player", self.unitPower, true) / self.unmodifiedMaxPerRune) or numReady
|
||||||
|
|
||||||
if self:GetRuneMode() == "Numeric" or self.moduleSettings.alsoShowNumeric then
|
if self:GetRuneMode() == "Numeric" or self.moduleSettings.alsoShowNumeric then
|
||||||
|
local displayPercent = percentReady
|
||||||
|
if self.partialReadyPercent then
|
||||||
|
displayPercent = percentReady + self.partialReadyPercent
|
||||||
|
end
|
||||||
|
|
||||||
if self.numericFormat then
|
if self.numericFormat then
|
||||||
self.frame.numeric:SetText(format(self.numericFormat, percentReady))
|
self.frame.numeric:SetText(format(self.numericFormat, displayPercent))
|
||||||
else
|
else
|
||||||
self.frame.numeric:SetText(tostring(percentReady))
|
self.frame.numeric:SetText(tostring(displayPercent))
|
||||||
end
|
end
|
||||||
self.frame.numeric:SetTextColor(self:GetColor(self.numericColor))
|
self.frame.numeric:SetTextColor(self:GetColor(self.numericColor))
|
||||||
end
|
end
|
||||||
@ -539,7 +547,7 @@ function IceClassPowerCounter.prototype:UpdateRunePower(event, arg1, arg2)
|
|||||||
for i=1, self.numRunes do
|
for i=1, self.numRunes do
|
||||||
if i <= self.round(percentReady) then
|
if i <= self.round(percentReady) then
|
||||||
if self:GetRuneMode() == "Graphical" then
|
if self:GetRuneMode() == "Graphical" then
|
||||||
self.frame.graphical[i].rune:SetVertexColor(1, 1, 1)
|
self:SetRuneGraphicalTexture(i)
|
||||||
else
|
else
|
||||||
self:SetCustomColor(i)
|
self:SetCustomColor(i)
|
||||||
end
|
end
|
||||||
@ -549,33 +557,14 @@ function IceClassPowerCounter.prototype:UpdateRunePower(event, arg1, arg2)
|
|||||||
end
|
end
|
||||||
|
|
||||||
if i > numReady or self.numRunes == 1 then
|
if i > numReady or self.numRunes == 1 then
|
||||||
local left, right, top, bottom = 0, 1, 0, 1
|
|
||||||
if self:GetRuneMode() == "Graphical" then
|
|
||||||
left, right, top, bottom = unpack(self.runeCoords[i])
|
|
||||||
end
|
|
||||||
|
|
||||||
local currPercent = percentReady - numReady
|
local currPercent = percentReady - numReady
|
||||||
if self.numRunes == 1 then
|
if self.numRunes == 1 then
|
||||||
currPercent = numReady / UnitPowerMax("player", self.unitPower)
|
currPercent = numReady / UnitPowerMax("player", self.unitPower)
|
||||||
end
|
end
|
||||||
|
|
||||||
if self.currentGrowMode == self.growModes["height"] then
|
self:SetRuneCoords(i, currPercent)
|
||||||
top = bottom - (currPercent * (bottom - top))
|
|
||||||
self.frame.graphical[i].rune:SetHeight(currPercent * self.runeHeight)
|
|
||||||
elseif self.currentGrowMode == self.growModes["width"] then
|
|
||||||
right = left + (currPercent * (right - left))
|
|
||||||
self.frame.graphical[i].rune:SetWidth(currPercent * self.runeWidth)
|
|
||||||
end
|
|
||||||
self.frame.graphical[i].rune:SetTexCoord(left, right, top, bottom)
|
|
||||||
elseif i > self.lastNumReady then
|
elseif i > self.lastNumReady then
|
||||||
if self.runeCoords ~= nil and #self.runeCoords >= i then
|
self:SetRuneCoords(i, 1)
|
||||||
local left, right, top, bottom = 0, 1, 0, 1
|
|
||||||
if self:GetRuneMode() == "Graphical" then
|
|
||||||
left, right, top, bottom = unpack(self.runeCoords[i])
|
|
||||||
end
|
|
||||||
self.frame.graphical[i].rune:SetTexCoord(left, right, top, bottom)
|
|
||||||
self.frame.graphical[i].rune:SetHeight(self.runeHeight)
|
|
||||||
end
|
|
||||||
|
|
||||||
if self.moduleSettings.flashWhenBecomingReady then
|
if self.moduleSettings.flashWhenBecomingReady then
|
||||||
local fadeInfo={
|
local fadeInfo={
|
||||||
@ -588,6 +577,17 @@ function IceClassPowerCounter.prototype:UpdateRunePower(event, arg1, arg2)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
|
if self.partialReady then
|
||||||
|
if i == self.partialReady then
|
||||||
|
self:SetRuneCoords(i, self.partialReadyPercent)
|
||||||
|
if self:GetRuneMode() == "Graphical" then
|
||||||
|
self:SetRuneGraphicalTexture(i, true)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
self:SetRuneCoords(i, 0)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
self:HideRune(i)
|
self:HideRune(i)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -609,6 +609,30 @@ function IceClassPowerCounter.prototype:UpdateRunePower(event, arg1, arg2)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function IceClassPowerCounter.prototype:SetRuneCoords(rune, percent)
|
||||||
|
if self.runeCoords == nil or #self.runeCoords < rune then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local left, right, top, bottom = 0, 1, 0, 1
|
||||||
|
if self:GetRuneMode() == "Graphical" then
|
||||||
|
local coords = self.runeCoords[rune]
|
||||||
|
if coords then
|
||||||
|
left, right, top, bottom = unpack(coords)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if self.currentGrowMode == self.growModes["height"] then
|
||||||
|
top = bottom - (percent * (bottom - top))
|
||||||
|
self.frame.graphical[rune].rune:SetHeight(percent * self.runeHeight)
|
||||||
|
elseif self.currentGrowMode == self.growModes["width"] then
|
||||||
|
right = left + (percent * (right - left))
|
||||||
|
self.frame.graphical[rune].rune:SetWidth(percent * self.runeWidth)
|
||||||
|
end
|
||||||
|
|
||||||
|
self.frame.graphical[rune].rune:SetTexCoord(left, right, top, bottom)
|
||||||
|
end
|
||||||
|
|
||||||
function IceClassPowerCounter.prototype:HideRune(i)
|
function IceClassPowerCounter.prototype:HideRune(i)
|
||||||
if self:GetRuneMode() == "Numeric" then
|
if self:GetRuneMode() == "Numeric" then
|
||||||
self.frame.graphical[i].Hide()
|
self.frame.graphical[i].Hide()
|
||||||
@ -692,10 +716,22 @@ function IceClassPowerCounter.prototype:GetShineAtlas(rune)
|
|||||||
return nil
|
return nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function IceClassPowerCounter.prototype:GetFrameAtlas(rune)
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
|
||||||
|
function IceClassPowerCounter.prototype:GetBackgroundAtlas(rune)
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
|
||||||
|
function IceClassPowerCounter.prototype:GetPartialRuneAtlas(rune)
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
|
||||||
function IceClassPowerCounter.prototype:CreateFrame()
|
function IceClassPowerCounter.prototype:CreateFrame()
|
||||||
IceClassPowerCounter.super.prototype.CreateFrame(self)
|
IceClassPowerCounter.super.prototype.CreateFrame(self)
|
||||||
|
|
||||||
self.frame:SetFrameStrata("LOW")
|
self.frame:SetFrameStrata(IceHUD.IceCore:DetermineStrata("LOW"))
|
||||||
self.frame:SetHeight(self.runeHeight)
|
self.frame:SetHeight(self.runeHeight)
|
||||||
self.frame:ClearAllPoints()
|
self.frame:ClearAllPoints()
|
||||||
self.frame:SetPoint("TOP", self.parent, "BOTTOM", self.moduleSettings.hpos, self.moduleSettings.vpos)
|
self.frame:SetPoint("TOP", self.parent, "BOTTOM", self.moduleSettings.hpos, self.moduleSettings.vpos)
|
||||||
@ -712,6 +748,7 @@ end
|
|||||||
function IceClassPowerCounter.prototype:SetDisplayMode()
|
function IceClassPowerCounter.prototype:SetDisplayMode()
|
||||||
if self:GetRuneMode() == "Numeric" or self.moduleSettings.alsoShowNumeric then
|
if self:GetRuneMode() == "Numeric" or self.moduleSettings.alsoShowNumeric then
|
||||||
self.frame.numeric:Show()
|
self.frame.numeric:Show()
|
||||||
|
self.frame.numeric:SetPoint("CENTER", self.frame.numericParent, "CENTER", 0, self.moduleSettings.runeMode == "Numeric" and 0 or self.moduleSettings.numericVerticalOffset)
|
||||||
for i=1, self.numRunes do
|
for i=1, self.numRunes do
|
||||||
self.frame.graphical[i]:Hide()
|
self.frame.graphical[i]:Hide()
|
||||||
end
|
end
|
||||||
@ -723,6 +760,21 @@ function IceClassPowerCounter.prototype:SetDisplayMode()
|
|||||||
for i=1, self.numRunes do
|
for i=1, self.numRunes do
|
||||||
self:SetupRuneTexture(i)
|
self:SetupRuneTexture(i)
|
||||||
self.frame.graphical[i]:Show()
|
self.frame.graphical[i]:Show()
|
||||||
|
|
||||||
|
if self.frame.graphical[i].frame then
|
||||||
|
if self:GetRuneMode() == "Graphical" then
|
||||||
|
self.frame.graphical[i].frame:Show()
|
||||||
|
else
|
||||||
|
self.frame.graphical[i].frame:Hide()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if self.frame.graphical[i].bg then
|
||||||
|
if self:GetRuneMode() == "Graphical" then
|
||||||
|
self.frame.graphical[i].bg:Show()
|
||||||
|
else
|
||||||
|
self.frame.graphical[i].bg:Hide()
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -737,7 +789,6 @@ function IceClassPowerCounter.prototype:CreateRuneFrame()
|
|||||||
|
|
||||||
self.frame.numeric:SetJustifyH("CENTER")
|
self.frame.numeric:SetJustifyH("CENTER")
|
||||||
|
|
||||||
self.frame.numeric:SetPoint("CENTER", self.frame.numericParent, "CENTER", 0, self.moduleSettings.numericVerticalOffset)
|
|
||||||
self.frame.numeric:Hide()
|
self.frame.numeric:Hide()
|
||||||
|
|
||||||
if (not self.frame.graphical) then
|
if (not self.frame.graphical) then
|
||||||
@ -756,9 +807,9 @@ function IceClassPowerCounter.prototype:CreateRune(i)
|
|||||||
-- create runes
|
-- create runes
|
||||||
if (not self.frame.graphical[i]) then
|
if (not self.frame.graphical[i]) then
|
||||||
self.frame.graphical[i] = CreateFrame("Frame", nil, self.frame)
|
self.frame.graphical[i] = CreateFrame("Frame", nil, self.frame)
|
||||||
self.frame.graphical[i]:SetFrameStrata("BACKGROUND")
|
self.frame.graphical[i]:SetFrameStrata(IceHUD.IceCore:DetermineStrata("BACKGROUND"))
|
||||||
|
|
||||||
self.frame.graphical[i].rune = self.frame.graphical[i]:CreateTexture(nil, "ARTWORK")
|
self.frame.graphical[i].rune = self.frame.graphical[i]:CreateTexture(nil, "BORDER")
|
||||||
self.frame.graphical[i].rune:SetVertexColor(0, 0, 0)
|
self.frame.graphical[i].rune:SetVertexColor(0, 0, 0)
|
||||||
self:SetupRuneTexture(i)
|
self:SetupRuneTexture(i)
|
||||||
|
|
||||||
@ -767,7 +818,7 @@ function IceClassPowerCounter.prototype:CreateRune(i)
|
|||||||
self.frame.graphical[i].shine:SetAtlas(self:GetShineAtlas(i))
|
self.frame.graphical[i].shine:SetAtlas(self:GetShineAtlas(i))
|
||||||
else
|
else
|
||||||
self.frame.graphical[i].shine:SetTexture("Interface\\ComboFrame\\ComboPoint")
|
self.frame.graphical[i].shine:SetTexture("Interface\\ComboFrame\\ComboPoint")
|
||||||
self.frame.graphical[i].shine:SetTexCoord(0.5625, 1, 0, 1)
|
self.frame.graphical[i].shine:SetTexCoord(0.5625, 1, 0, 1)
|
||||||
end
|
end
|
||||||
self.frame.graphical[i].shine:SetBlendMode("ADD")
|
self.frame.graphical[i].shine:SetBlendMode("ADD")
|
||||||
self.frame.graphical[i].shine:ClearAllPoints()
|
self.frame.graphical[i].shine:ClearAllPoints()
|
||||||
@ -777,6 +828,22 @@ function IceClassPowerCounter.prototype:CreateRune(i)
|
|||||||
self.frame.graphical[i].shine:SetHeight(self.runeHeight + 10)
|
self.frame.graphical[i].shine:SetHeight(self.runeHeight + 10)
|
||||||
self.frame.graphical[i].shine:Hide()
|
self.frame.graphical[i].shine:Hide()
|
||||||
|
|
||||||
|
local frameAtlas = self:GetFrameAtlas(i)
|
||||||
|
if frameAtlas then
|
||||||
|
self.frame.graphical[i].frame = self.frame.graphical[i]:CreateTexture(nil, "ARTWORK")
|
||||||
|
self.frame.graphical[i].frame:SetAtlas(frameAtlas)
|
||||||
|
self.frame.graphical[i].frame:ClearAllPoints()
|
||||||
|
self.frame.graphical[i].frame:SetPoint("CENTER", self.frame.graphical[i], "CENTER")
|
||||||
|
end
|
||||||
|
|
||||||
|
local bgAtlas = self:GetBackgroundAtlas(i)
|
||||||
|
if bgAtlas then
|
||||||
|
self.frame.graphical[i].bg = self.frame.graphical[i]:CreateTexture(nil, "BACKGROUND")
|
||||||
|
self.frame.graphical[i].bg:SetAtlas(bgAtlas)
|
||||||
|
self.frame.graphical[i].bg:ClearAllPoints()
|
||||||
|
self.frame.graphical[i].bg:SetAllPoints(self.frame.graphical[i])
|
||||||
|
end
|
||||||
|
|
||||||
self.frame.graphical[i]:Hide()
|
self.frame.graphical[i]:Hide()
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -784,6 +851,10 @@ function IceClassPowerCounter.prototype:CreateRune(i)
|
|||||||
self.frame.graphical[i]:SetHeight(self.runeHeight)
|
self.frame.graphical[i]:SetHeight(self.runeHeight)
|
||||||
self.frame.graphical[i].rune:SetWidth(self.runeWidth)
|
self.frame.graphical[i].rune:SetWidth(self.runeWidth)
|
||||||
self.frame.graphical[i].rune:SetHeight(self.runeHeight)
|
self.frame.graphical[i].rune:SetHeight(self.runeHeight)
|
||||||
|
if self.frame.graphical[i].frame then
|
||||||
|
self.frame.graphical[i].frame:SetWidth(self.runeWidth + 10)
|
||||||
|
self.frame.graphical[i].frame:SetHeight(self.runeHeight + 10)
|
||||||
|
end
|
||||||
if self.currentGrowMode == self.growModes["width"] then
|
if self.currentGrowMode == self.growModes["width"] then
|
||||||
self.frame.graphical[i].rune:SetPoint("LEFT", self.frame.graphical[i], "LEFT")
|
self.frame.graphical[i].rune:SetPoint("LEFT", self.frame.graphical[i], "LEFT")
|
||||||
else
|
else
|
||||||
@ -806,7 +877,10 @@ function IceClassPowerCounter.prototype:SetupRuneTexture(rune)
|
|||||||
local a,b,c,d = 0, 1, 0, 1
|
local a,b,c,d = 0, 1, 0, 1
|
||||||
if self:GetRuneMode() == "Graphical" then
|
if self:GetRuneMode() == "Graphical" then
|
||||||
width = self.runeWidth
|
width = self.runeWidth
|
||||||
a,b,c,d = unpack(self.runeCoords[rune])
|
local coords = self.runeCoords[rune]
|
||||||
|
if coords then
|
||||||
|
a,b,c,d = unpack(coords)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- make sure any texture aside from the special one is square and has the proper coordinates
|
-- make sure any texture aside from the special one is square and has the proper coordinates
|
||||||
@ -821,12 +895,7 @@ function IceClassPowerCounter.prototype:SetupRuneTexture(rune)
|
|||||||
end
|
end
|
||||||
|
|
||||||
if self:GetRuneMode() == "Graphical" then
|
if self:GetRuneMode() == "Graphical" then
|
||||||
local tex = self:GetRuneTexture(rune)
|
self:SetRuneGraphicalTexture(rune)
|
||||||
if tex then
|
|
||||||
self.frame.graphical[rune].rune:SetTexture(tex)
|
|
||||||
else
|
|
||||||
self.frame.graphical[rune].rune:SetAtlas(self:GetRuneAtlas(rune), self:UseAtlasSize(rune))
|
|
||||||
end
|
|
||||||
elseif self:GetRuneMode() == "Graphical Bar" then
|
elseif self:GetRuneMode() == "Graphical Bar" then
|
||||||
self.frame.graphical[rune].rune:SetTexture(IceElement.TexturePath .. "Combo")
|
self.frame.graphical[rune].rune:SetTexture(IceElement.TexturePath .. "Combo")
|
||||||
elseif self:GetRuneMode() == "Graphical Circle" then
|
elseif self:GetRuneMode() == "Graphical Circle" then
|
||||||
@ -838,6 +907,19 @@ function IceClassPowerCounter.prototype:SetupRuneTexture(rune)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function IceClassPowerCounter.prototype:SetRuneGraphicalTexture(rune, partial)
|
||||||
|
self.frame.graphical[rune].rune:SetVertexColor(1, 1, 1)
|
||||||
|
|
||||||
|
local tex = self:GetRuneTexture(rune)
|
||||||
|
if tex then
|
||||||
|
self.frame.graphical[rune].rune:SetTexture(tex)
|
||||||
|
else
|
||||||
|
local partialAtlas = self:GetPartialRuneAtlas(rune)
|
||||||
|
local atlas = (partial and partialAtlas) and partialAtlas or self:GetRuneAtlas(rune)
|
||||||
|
self.frame.graphical[rune].rune:SetAtlas(atlas, self:UseAtlasSize(rune))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
function IceClassPowerCounter.prototype:GetAlphaAdd()
|
function IceClassPowerCounter.prototype:GetAlphaAdd()
|
||||||
return 0.15
|
return 0.15
|
||||||
end
|
end
|
||||||
|
@ -3,8 +3,27 @@ local ComboPoints = IceCore_CreateClass(IceElement)
|
|||||||
|
|
||||||
local IceHUD = _G.IceHUD
|
local IceHUD = _G.IceHUD
|
||||||
|
|
||||||
|
local GetSpellInfo = GetSpellInfo
|
||||||
|
if not GetSpellInfo and C_Spell and C_Spell.GetSpellInfo then
|
||||||
|
GetSpellInfo = function(spellID)
|
||||||
|
if not spellID then
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
|
||||||
|
local spellInfo = C_Spell.GetSpellInfo(spellID)
|
||||||
|
if spellInfo then
|
||||||
|
return spellInfo.name, nil, spellInfo.iconID, spellInfo.castTime, spellInfo.minRange, spellInfo.maxRange, spellInfo.spellID, spellInfo.originalIconID
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local GetSpellName = GetSpellInfo
|
||||||
|
if C_Spell and C_Spell.GetSpellName then
|
||||||
|
GetSpellName = C_Spell.GetSpellName
|
||||||
|
end
|
||||||
|
|
||||||
local AnticipationSpellId = 114015
|
local AnticipationSpellId = 114015
|
||||||
local AnticipationExists = GetSpellInfo(AnticipationSpellId) and IceHUD.WowVer < 70000
|
local AnticipationExists = GetSpellName(AnticipationSpellId) and IceHUD.WowVer < 70000
|
||||||
|
|
||||||
ComboPoints.prototype.comboSize = 20
|
ComboPoints.prototype.comboSize = 20
|
||||||
|
|
||||||
@ -337,7 +356,7 @@ end
|
|||||||
function ComboPoints.prototype:CreateFrame()
|
function ComboPoints.prototype:CreateFrame()
|
||||||
ComboPoints.super.prototype.CreateFrame(self)
|
ComboPoints.super.prototype.CreateFrame(self)
|
||||||
|
|
||||||
self.frame:SetFrameStrata("BACKGROUND")
|
self.frame:SetFrameStrata(IceHUD.IceCore:DetermineStrata("BACKGROUND"))
|
||||||
if self.moduleSettings.graphicalLayout == "Horizontal" then
|
if self.moduleSettings.graphicalLayout == "Horizontal" then
|
||||||
self.frame:SetWidth((self.comboSize - 5)*self:GetMaxComboPoints())
|
self.frame:SetWidth((self.comboSize - 5)*self:GetMaxComboPoints())
|
||||||
self.frame:SetHeight(1)
|
self.frame:SetHeight(1)
|
||||||
@ -396,7 +415,7 @@ function ComboPoints.prototype:CreateComboFrame(forceTextureUpdate)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
self.frame.graphicalBG[i]:SetFrameStrata("BACKGROUND")
|
self.frame.graphicalBG[i]:SetFrameStrata(IceHUD.IceCore:DetermineStrata("BACKGROUND"))
|
||||||
self.frame.graphicalBG[i]:SetWidth(self.comboSize)
|
self.frame.graphicalBG[i]:SetWidth(self.comboSize)
|
||||||
self.frame.graphicalBG[i]:SetHeight(self.comboSize)
|
self.frame.graphicalBG[i]:SetHeight(self.comboSize)
|
||||||
if self.moduleSettings.graphicalLayout == "Horizontal" then
|
if self.moduleSettings.graphicalLayout == "Horizontal" then
|
||||||
@ -432,7 +451,7 @@ function ComboPoints.prototype:CreateComboFrame(forceTextureUpdate)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
self.frame.graphical[i]:SetFrameStrata("LOW")
|
self.frame.graphical[i]:SetFrameStrata(IceHUD.IceCore:DetermineStrata("LOW"))
|
||||||
self.frame.graphical[i]:SetAllPoints(self.frame.graphicalBG[i])
|
self.frame.graphical[i]:SetAllPoints(self.frame.graphicalBG[i])
|
||||||
|
|
||||||
local r, g, b = self:GetColor("ComboPoints")
|
local r, g, b = self:GetColor("ComboPoints")
|
||||||
@ -471,7 +490,7 @@ function ComboPoints.prototype:CreateComboFrame(forceTextureUpdate)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
self.frame.graphicalAnt[i]:SetFrameStrata("LOW")
|
self.frame.graphicalAnt[i]:SetFrameStrata(IceHUD.IceCore:DetermineStrata("LOW"))
|
||||||
self.frame.graphicalAnt[i]:SetFrameLevel(self.frame.graphical[i]:GetFrameLevel() + 1)
|
self.frame.graphicalAnt[i]:SetFrameLevel(self.frame.graphical[i]:GetFrameLevel() + 1)
|
||||||
self.frame.graphicalAnt[i]:SetWidth(math.floor(self.comboSize / 2))
|
self.frame.graphicalAnt[i]:SetWidth(math.floor(self.comboSize / 2))
|
||||||
self.frame.graphicalAnt[i]:SetHeight(math.floor(self.comboSize / 2))
|
self.frame.graphicalAnt[i]:SetHeight(math.floor(self.comboSize / 2))
|
||||||
@ -522,7 +541,7 @@ function ComboPoints.prototype:UpdateComboPoints(...)
|
|||||||
end
|
end
|
||||||
|
|
||||||
if AnticipationExists then
|
if AnticipationExists then
|
||||||
_, _, _, anticipate = UnitAura("player", GetSpellInfo(AnticipationSpellId))
|
_, _, _, anticipate = IceHUD.UnitAura("player", GetSpellName(AnticipationSpellId))
|
||||||
else
|
else
|
||||||
anticipate = 0
|
anticipate = 0
|
||||||
end
|
end
|
||||||
@ -593,9 +612,9 @@ do
|
|||||||
if UnitIsUnit(unit, "player") then
|
if UnitIsUnit(unit, "player") then
|
||||||
local _, _, _, newAntStacks
|
local _, _, _, newAntStacks
|
||||||
if IceHUD.SpellFunctionsReturnRank then
|
if IceHUD.SpellFunctionsReturnRank then
|
||||||
_, _, _, newAntStacks = UnitAura("player", GetSpellInfo(AnticipationSpellId))
|
_, _, _, newAntStacks = IceHUD.UnitAura("player", GetSpellName(AnticipationSpellId))
|
||||||
else
|
else
|
||||||
_, _, newAntStacks = UnitAura("player", GetSpellInfo(AnticipationSpellId))
|
_, _, newAntStacks = IceHUD.UnitAura("player", GetSpellName(AnticipationSpellId))
|
||||||
end
|
end
|
||||||
if newAntStacks ~= antStacks then
|
if newAntStacks ~= antStacks then
|
||||||
antStacks = newAntStacks
|
antStacks = newAntStacks
|
||||||
|
@ -12,6 +12,19 @@ local AuraIconWidth = 20
|
|||||||
local AuraIconHeight = 20
|
local AuraIconHeight = 20
|
||||||
local displayModes = {NORMAL = L["When present"], ALWAYS = L["Always"], WHEN_TARGETING = L["Always, when targeting"], MISSING = L["When missing"]}
|
local displayModes = {NORMAL = L["When present"], ALWAYS = L["Always"], WHEN_TARGETING = L["Always, when targeting"], MISSING = L["When missing"]}
|
||||||
|
|
||||||
|
local GetSpellName = GetSpellInfo
|
||||||
|
if C_Spell and C_Spell.GetSpellName then
|
||||||
|
GetSpellName = C_Spell.GetSpellName
|
||||||
|
end
|
||||||
|
|
||||||
|
local GetSpellInfo = GetSpellInfo
|
||||||
|
if not GetSpellInfo and C_Spell and C_Spell.GetSpellInfo then
|
||||||
|
GetSpellInfo = function(id)
|
||||||
|
local info = C_Spell.GetSpellInfo(id)
|
||||||
|
return info.name, nil, info.iconID
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
IceCustomBar.prototype.auraDuration = -1
|
IceCustomBar.prototype.auraDuration = -1
|
||||||
IceCustomBar.prototype.auraEndTime = -1
|
IceCustomBar.prototype.auraEndTime = -1
|
||||||
IceCustomBar.prototype.bIsAura = false
|
IceCustomBar.prototype.bIsAura = false
|
||||||
@ -83,6 +96,7 @@ function IceCustomBar.prototype:Enable(core)
|
|||||||
self:FixupTextColors()
|
self:FixupTextColors()
|
||||||
self:SetCustomTextColor(self.frame.bottomUpperText, self.moduleSettings.upperTextColor)
|
self:SetCustomTextColor(self.frame.bottomUpperText, self.moduleSettings.upperTextColor)
|
||||||
self:SetCustomTextColor(self.frame.bottomLowerText, self.moduleSettings.lowerTextColor)
|
self:SetCustomTextColor(self.frame.bottomLowerText, self.moduleSettings.lowerTextColor)
|
||||||
|
self:UpdateAuraIcon()
|
||||||
end
|
end
|
||||||
|
|
||||||
function IceCustomBar.prototype:Disable(core)
|
function IceCustomBar.prototype:Disable(core)
|
||||||
@ -204,6 +218,7 @@ end
|
|||||||
function IceCustomBar.prototype:Redraw()
|
function IceCustomBar.prototype:Redraw()
|
||||||
IceCustomBar.super.prototype.Redraw(self)
|
IceCustomBar.super.prototype.Redraw(self)
|
||||||
|
|
||||||
|
self:UpdateAuraIcon()
|
||||||
self:UpdateCustomBar(self.unit)
|
self:UpdateCustomBar(self.unit)
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -684,9 +699,9 @@ function IceCustomBar.prototype:GetAuraDuration(unitName, buffName)
|
|||||||
local buffFilter = (isBuff and "HELPFUL" or "HARMFUL") .. (self.moduleSettings.trackOnlyMine and "|PLAYER" or "")
|
local buffFilter = (isBuff and "HELPFUL" or "HARMFUL") .. (self.moduleSettings.trackOnlyMine and "|PLAYER" or "")
|
||||||
local buff, rank, texture, count, type, duration, endTime, unitCaster, _, _, spellId
|
local buff, rank, texture, count, type, duration, endTime, unitCaster, _, _, spellId
|
||||||
if IceHUD.SpellFunctionsReturnRank then
|
if IceHUD.SpellFunctionsReturnRank then
|
||||||
buff, rank, texture, count, type, duration, endTime, unitCaster, _, _, spellId = UnitAura(unitName, i, buffFilter)
|
buff, rank, texture, count, type, duration, endTime, unitCaster, _, _, spellId = IceHUD.UnitAura(unitName, i, buffFilter)
|
||||||
else
|
else
|
||||||
buff, texture, count, type, duration, endTime, unitCaster, _, _, spellId = UnitAura(unitName, i, buffFilter)
|
buff, texture, count, type, duration, endTime, unitCaster, _, _, spellId = IceHUD.UnitAura(unitName, i, buffFilter)
|
||||||
end
|
end
|
||||||
local isMine = unitCaster == "player"
|
local isMine = unitCaster == "player"
|
||||||
local mySpellId = tonumber(self.moduleSettings.buffToTrack)
|
local mySpellId = tonumber(self.moduleSettings.buffToTrack)
|
||||||
@ -714,9 +729,9 @@ function IceCustomBar.prototype:GetAuraDuration(unitName, buffName)
|
|||||||
i = i + 1;
|
i = i + 1;
|
||||||
|
|
||||||
if IceHUD.SpellFunctionsReturnRank then
|
if IceHUD.SpellFunctionsReturnRank then
|
||||||
buff, rank, texture, count, type, duration, endTime, unitCaster, _, _, spellId = UnitAura(unitName, i, buffFilter)
|
buff, rank, texture, count, type, duration, endTime, unitCaster, _, _, spellId = IceHUD.UnitAura(unitName, i, buffFilter)
|
||||||
else
|
else
|
||||||
buff, texture, count, type, duration, endTime, unitCaster, _, _, spellId = UnitAura(unitName, i, buffFilter)
|
buff, texture, count, type, duration, endTime, unitCaster, _, _, spellId = IceHUD.UnitAura(unitName, i, buffFilter)
|
||||||
end
|
end
|
||||||
isMine = unitCaster == "player"
|
isMine = unitCaster == "player"
|
||||||
end
|
end
|
||||||
@ -771,7 +786,7 @@ function IceCustomBar.prototype:UpdateCustomBar(unit, fromUpdate)
|
|||||||
self:GetAuraDuration(self.unit, self.moduleSettings.buffToTrack)
|
self:GetAuraDuration(self.unit, self.moduleSettings.buffToTrack)
|
||||||
else
|
else
|
||||||
self.auraDuration, remaining, self.auraBuffCount, auraIcon, endTime =
|
self.auraDuration, remaining, self.auraBuffCount, auraIcon, endTime =
|
||||||
self:GetAuraDuration(self.unit, GetSpellInfo(self.moduleSettings.buffToTrack))
|
self:GetAuraDuration(self.unit, GetSpellName(self.moduleSettings.buffToTrack))
|
||||||
end
|
end
|
||||||
|
|
||||||
if endTime == 0 then
|
if endTime == 0 then
|
||||||
@ -822,7 +837,11 @@ function IceCustomBar.prototype:UpdateCustomBar(unit, fromUpdate)
|
|||||||
|
|
||||||
self:UpdateBar(self.auraDuration ~= 0 and remaining / self.auraDuration or 0, "undef")
|
self:UpdateBar(self.auraDuration ~= 0 and remaining / self.auraDuration or 0, "undef")
|
||||||
else
|
else
|
||||||
self:UpdateBar(0, "undef")
|
local updateVal = 0
|
||||||
|
if self.moduleSettings.displayMode == displayModes.MISSING then
|
||||||
|
updateVal = 1
|
||||||
|
end
|
||||||
|
self:UpdateBar(updateVal, "undef")
|
||||||
self:Show(false)
|
self:Show(false)
|
||||||
if not self:ShouldAlwaysSubscribe() then
|
if not self:ShouldAlwaysSubscribe() then
|
||||||
self.handlesOwnUpdates = false
|
self.handlesOwnUpdates = false
|
||||||
@ -883,9 +902,14 @@ function IceCustomBar.prototype:Show(bShouldShow, bForceHide)
|
|||||||
end
|
end
|
||||||
|
|
||||||
if self.moduleSettings.displayMode == displayModes.MISSING then
|
if self.moduleSettings.displayMode == displayModes.MISSING then
|
||||||
IceCustomBar.super.prototype.Show(self, not bShouldShow)
|
local show = not bShouldShow
|
||||||
|
if show and not self:IsEnabled() then
|
||||||
|
show = false
|
||||||
|
end
|
||||||
|
|
||||||
|
IceCustomBar.super.prototype.Show(self, show)
|
||||||
elseif self.moduleSettings.displayMode == displayModes.WHEN_TARGETING and self.target then
|
elseif self.moduleSettings.displayMode == displayModes.WHEN_TARGETING and self.target then
|
||||||
IceCustomBar.super.prototype.Show(self, true)
|
IceCustomBar.super.prototype.Show(self, self:IsEnabled())
|
||||||
elseif self.moduleSettings.displayMode == displayModes.ALWAYS then
|
elseif self.moduleSettings.displayMode == displayModes.ALWAYS then
|
||||||
if not self.bIsVisible then
|
if not self.bIsVisible then
|
||||||
IceCustomBar.super.prototype.Show(self, true)
|
IceCustomBar.super.prototype.Show(self, true)
|
||||||
@ -894,3 +918,13 @@ function IceCustomBar.prototype:Show(bShouldShow, bForceHide)
|
|||||||
IceCustomBar.super.prototype.Show(self, bShouldShow)
|
IceCustomBar.super.prototype.Show(self, bShouldShow)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function IceCustomBar.prototype:UpdateAuraIcon()
|
||||||
|
if not self.barFrame or not self.barFrame.icon then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local _, _, auraIcon = GetSpellInfo(self.moduleSettings.buffToTrack)
|
||||||
|
|
||||||
|
self.barFrame.icon:SetTexture(auraIcon)
|
||||||
|
end
|
||||||
|
@ -17,6 +17,44 @@ local COOLDOWN_TYPE_ITEM = 2
|
|||||||
|
|
||||||
local localizedInventorySlotNames = {}
|
local localizedInventorySlotNames = {}
|
||||||
|
|
||||||
|
local IsSpellInRange = IsSpellInRange
|
||||||
|
if not IsSpellInRange and C_Spell then
|
||||||
|
IsSpellInRange = C_Spell.IsSpellInRange
|
||||||
|
end
|
||||||
|
|
||||||
|
local GetSpellName = GetSpellInfo
|
||||||
|
if C_Spell and C_Spell.GetSpellName then
|
||||||
|
GetSpellName = C_Spell.GetSpellName
|
||||||
|
end
|
||||||
|
|
||||||
|
local GetSpellInfo = GetSpellInfo
|
||||||
|
if not GetSpellInfo and C_Spell and C_Spell.GetSpellInfo then
|
||||||
|
GetSpellInfo = function(id)
|
||||||
|
local info = C_Spell.GetSpellInfo(id)
|
||||||
|
return info.name, nil, info.iconID
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local GetSpellCooldown = GetSpellCooldown
|
||||||
|
if not GetSpellCooldown and C_Spell then
|
||||||
|
GetSpellCooldown = function(spellID)
|
||||||
|
local spellCooldownInfo = C_Spell.GetSpellCooldown(spellID)
|
||||||
|
if spellCooldownInfo then
|
||||||
|
return spellCooldownInfo.startTime, spellCooldownInfo.duration, spellCooldownInfo.isEnabled, spellCooldownInfo.modRate
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local GetItemInfo = GetItemInfo
|
||||||
|
if not GetItemInfo and C_Item then
|
||||||
|
GetItemInfo = C_Item.GetItemInfo
|
||||||
|
end
|
||||||
|
|
||||||
|
local IsUsableSpell = IsUsableSpell
|
||||||
|
if not IsUsableSpell and C_Spell then
|
||||||
|
IsUsableSpell = C_Spell.IsSpellUsable
|
||||||
|
end
|
||||||
|
|
||||||
IceCustomCDBar.prototype.cooldownDuration = 0
|
IceCustomCDBar.prototype.cooldownDuration = 0
|
||||||
IceCustomCDBar.prototype.cooldownEndTime = 0
|
IceCustomCDBar.prototype.cooldownEndTime = 0
|
||||||
IceCustomCDBar.prototype.coolingDown = false
|
IceCustomCDBar.prototype.coolingDown = false
|
||||||
@ -161,7 +199,7 @@ function IceCustomCDBar.prototype:GetDisplayText(fromValue)
|
|||||||
|
|
||||||
if not self.moduleSettings.cooldownType or self.moduleSettings.cooldownType == COOLDOWN_TYPE_SPELL then
|
if not self.moduleSettings.cooldownType or self.moduleSettings.cooldownType == COOLDOWN_TYPE_SPELL then
|
||||||
if tonumber(fromValue) ~= nil then
|
if tonumber(fromValue) ~= nil then
|
||||||
local spellName = GetSpellInfo(tonumber(fromValue))
|
local spellName = GetSpellName(tonumber(fromValue))
|
||||||
if spellName then
|
if spellName then
|
||||||
v = spellName
|
v = spellName
|
||||||
end
|
end
|
||||||
@ -278,7 +316,7 @@ function IceCustomCDBar.prototype:GetOptions()
|
|||||||
set = function(info, v)
|
set = function(info, v)
|
||||||
local orig = v
|
local orig = v
|
||||||
if tonumber(v) ~= nil then
|
if tonumber(v) ~= nil then
|
||||||
v = GetSpellInfo(tonumber(v))
|
v = GetSpellName(tonumber(v))
|
||||||
end
|
end
|
||||||
if v == nil then
|
if v == nil then
|
||||||
v = orig
|
v = orig
|
||||||
|
@ -326,7 +326,7 @@ end
|
|||||||
function IceCustomCount.prototype:CreateFrame()
|
function IceCustomCount.prototype:CreateFrame()
|
||||||
IceCustomCount.super.prototype.CreateFrame(self)
|
IceCustomCount.super.prototype.CreateFrame(self)
|
||||||
|
|
||||||
self.frame:SetFrameStrata("BACKGROUND")
|
self.frame:SetFrameStrata(IceHUD.IceCore:DetermineStrata("BACKGROUND"))
|
||||||
if self.moduleSettings.graphicalLayout == "Horizontal" then
|
if self.moduleSettings.graphicalLayout == "Horizontal" then
|
||||||
self.frame:SetWidth((self.countSize + self.moduleSettings.countGap)*IceStackCounter_GetMaxCount(self))
|
self.frame:SetWidth((self.countSize + self.moduleSettings.countGap)*IceStackCounter_GetMaxCount(self))
|
||||||
self.frame:SetHeight(1)
|
self.frame:SetHeight(1)
|
||||||
@ -382,7 +382,7 @@ function IceCustomCount.prototype:CreateCustomFrame(doTextureUpdate)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
self.frame.graphicalBG[i]:SetFrameStrata("BACKGROUND")
|
self.frame.graphicalBG[i]:SetFrameStrata(IceHUD.IceCore:DetermineStrata("BACKGROUND"))
|
||||||
self.frame.graphicalBG[i]:SetWidth(self.countSize)
|
self.frame.graphicalBG[i]:SetWidth(self.countSize)
|
||||||
self.frame.graphicalBG[i]:SetHeight(self.countSize)
|
self.frame.graphicalBG[i]:SetHeight(self.countSize)
|
||||||
if self.moduleSettings.graphicalLayout == "Horizontal" then
|
if self.moduleSettings.graphicalLayout == "Horizontal" then
|
||||||
@ -416,7 +416,7 @@ function IceCustomCount.prototype:CreateCustomFrame(doTextureUpdate)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
self.frame.graphical[i]:SetFrameStrata("BACKGROUND")
|
self.frame.graphical[i]:SetFrameStrata(IceHUD.IceCore:DetermineStrata("BACKGROUND"))
|
||||||
self.frame.graphical[i]:SetAllPoints(self.frame.graphicalBG[i])
|
self.frame.graphical[i]:SetAllPoints(self.frame.graphicalBG[i])
|
||||||
|
|
||||||
self.frame.graphical[i]:Hide()
|
self.frame.graphical[i]:Hide()
|
||||||
|
@ -7,6 +7,14 @@ local AuraIconWidth = 20
|
|||||||
local AuraIconHeight = 20
|
local AuraIconHeight = 20
|
||||||
local DefaultAuraIcon = "Interface\\Icons\\Spell_Frost_Frost"
|
local DefaultAuraIcon = "Interface\\Icons\\Spell_Frost_Frost"
|
||||||
|
|
||||||
|
local GetSpellInfo = GetSpellInfo
|
||||||
|
if not GetSpellInfo and C_Spell and C_Spell.GetSpellInfo then
|
||||||
|
GetSpellInfo = function(id)
|
||||||
|
local info = C_Spell.GetSpellInfo(id)
|
||||||
|
return info.name, nil, info.iconID
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
function IceCustomCounterBar.prototype:init()
|
function IceCustomCounterBar.prototype:init()
|
||||||
IceCustomCounterBar.super.prototype.init(self, "CustomCounterBar")
|
IceCustomCounterBar.super.prototype.init(self, "CustomCounterBar")
|
||||||
|
|
||||||
|
@ -144,7 +144,7 @@ function IceCustomHealth.prototype:Update(unit)
|
|||||||
|
|
||||||
if (self.moduleSettings.scaleHealthColor) then
|
if (self.moduleSettings.scaleHealthColor) then
|
||||||
self.color = "ScaledHealthColor"
|
self.color = "ScaledHealthColor"
|
||||||
elseif self.moduleSettings.lowThresholdColor and self.healthPercentage <= self.moduleSettings.lowThreshold then
|
elseif self.moduleSettings.lowThresholdColor and self.healthPercentage and self.healthPercentage <= self.moduleSettings.lowThreshold then
|
||||||
self.color = "ScaledHealthColor"
|
self.color = "ScaledHealthColor"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
232
modules/DragonridingVigor.lua
Normal file
232
modules/DragonridingVigor.lua
Normal file
@ -0,0 +1,232 @@
|
|||||||
|
local L = LibStub("AceLocale-3.0"):GetLocale("IceHUD", false)
|
||||||
|
local DragonridingVigor = IceCore_CreateClass(IceClassPowerCounter)
|
||||||
|
|
||||||
|
local DragonridingBuffs = {
|
||||||
|
360954, -- Highland Drake
|
||||||
|
368896, -- Renewed Proto-Drake
|
||||||
|
368899, -- Windborn Velocidrake
|
||||||
|
368901, -- Cliffside Wylderdrake
|
||||||
|
368893, -- Winding Slitherdrake
|
||||||
|
412088, -- Grotto Netherwing Drake
|
||||||
|
}
|
||||||
|
|
||||||
|
local vigorWidgetSetID = 283
|
||||||
|
local vigorWidgetType = 24
|
||||||
|
local defaultVigorWidgetID = 4460
|
||||||
|
local vigorWidgetIDs = nil
|
||||||
|
local knowsAlternateMountEnum = Enum and Enum.PowerType and Enum.PowerType.AlternateMount
|
||||||
|
local unitPowerType = Enum and Enum.PowerType and Enum.PowerType.AlternateMount
|
||||||
|
unitPowerType = unitPowerType or ALTERNATE_POWER_INDEX
|
||||||
|
|
||||||
|
function DragonridingVigor.prototype:init()
|
||||||
|
DragonridingVigor.super.prototype.init(self, "Vigor")
|
||||||
|
|
||||||
|
self:SetDefaultColor("VigorNumeric", 150, 150, 255)
|
||||||
|
|
||||||
|
self.unit = "player"
|
||||||
|
self.numericColor = "VigorNumeric"
|
||||||
|
self.unitPower = unitPowerType
|
||||||
|
self.minLevel = 0
|
||||||
|
self.bTreatEmptyAsFull = false
|
||||||
|
self.runeWidth = self.runeHeight
|
||||||
|
self.shouldRegisterDisplayPower = false
|
||||||
|
end
|
||||||
|
|
||||||
|
function DragonridingVigor.prototype:Enable(core)
|
||||||
|
self.numRunes = UnitPowerMax(self.unit, unitPowerType)
|
||||||
|
self.runeCoords = { }
|
||||||
|
for i = 1, self.numRunes do
|
||||||
|
self:SetupNewRune(i)
|
||||||
|
end
|
||||||
|
|
||||||
|
DragonridingVigor.super.prototype.Enable(self, core)
|
||||||
|
self:Show(false)
|
||||||
|
|
||||||
|
self:RegisterEvent("UNIT_AURA", "CheckShouldShow")
|
||||||
|
self:RegisterEvent("UPDATE_UI_WIDGET", "UpdateVigorRecharge")
|
||||||
|
end
|
||||||
|
|
||||||
|
function DragonridingVigor.prototype:EnteringWorld()
|
||||||
|
DragonridingVigor.super.prototype.EnteringWorld(self)
|
||||||
|
|
||||||
|
self:CheckShouldShow("PLAYER_ENTERING_WORLD", "player")
|
||||||
|
end
|
||||||
|
|
||||||
|
function DragonridingVigor.prototype:CheckShouldShow(event, unit, info)
|
||||||
|
if not vigorWidgetIDs or #vigorWidgetIDs == 0 then
|
||||||
|
self:PopulateVigorWidgetIDs()
|
||||||
|
end
|
||||||
|
|
||||||
|
if unit ~= "player" or not vigorWidgetIDs then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local shown = false
|
||||||
|
for i=1,#vigorWidgetIDs do
|
||||||
|
local info = C_UIWidgetManager.GetFillUpFramesWidgetVisualizationInfo(vigorWidgetIDs[i])
|
||||||
|
if info and info.shownState ~= 0 then
|
||||||
|
shown = true
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if not shown then
|
||||||
|
self:Show(false)
|
||||||
|
self.suppressHideBlizz = true
|
||||||
|
if self.moduleSettings.hideBlizz then
|
||||||
|
self:ShowBlizz()
|
||||||
|
end
|
||||||
|
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
self:Show(true)
|
||||||
|
|
||||||
|
-- if knowsAlternateMountEnum and UnitPowerMax(self.unit, unitPowerType) > 0 then
|
||||||
|
-- self:Show(true)
|
||||||
|
-- elseif not knowsAlternateMountEnum and IceHUD:HasAnyBuff("player", DragonridingBuffs) then
|
||||||
|
-- self:Show(true)
|
||||||
|
-- else
|
||||||
|
-- self:Show(false)
|
||||||
|
-- if self.moduleSettings.hideBlizz then
|
||||||
|
-- self:ShowBlizz()
|
||||||
|
-- end
|
||||||
|
-- end
|
||||||
|
end
|
||||||
|
|
||||||
|
function DragonridingVigor.prototype:UpdateRunePower(event, arg1, arg2)
|
||||||
|
self:UpdateVigorRecharge("internal")
|
||||||
|
DragonridingVigor.super.prototype.UpdateRunePower(self, event, arg1, arg2)
|
||||||
|
end
|
||||||
|
|
||||||
|
function DragonridingVigor.prototype:PopulateVigorWidgetIDs()
|
||||||
|
local widgets = C_UIWidgetManager.GetAllWidgetsBySetID(vigorWidgetSetID)
|
||||||
|
if not widgets then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
for i=1,#widgets do
|
||||||
|
if widgets[i].widgetType == vigorWidgetType then
|
||||||
|
if not vigorWidgetIDs then
|
||||||
|
vigorWidgetIDs = {}
|
||||||
|
end
|
||||||
|
|
||||||
|
table.insert(vigorWidgetIDs, widgets[i].widgetID)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function DragonridingVigor.prototype:UpdateVigorRecharge(event, widget)
|
||||||
|
if not vigorWidgetIDs or #vigorWidgetIDs == 0 then
|
||||||
|
self:PopulateVigorWidgetIDs()
|
||||||
|
end
|
||||||
|
if not vigorWidgetIDs or #vigorWidgetIDs == 0 then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
self.partialReady = nil
|
||||||
|
self.partialReadyPercent = nil
|
||||||
|
if event ~= "internal" and (not widget or widget.widgetSetID ~= vigorWidgetSetID) then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local widgetID = defaultVigorWidgetID
|
||||||
|
if widget then
|
||||||
|
widgetID = widget.widgetID
|
||||||
|
end
|
||||||
|
|
||||||
|
local info = C_UIWidgetManager.GetFillUpFramesWidgetVisualizationInfo(widgetID)
|
||||||
|
if not info then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
self.suppressHideBlizz = not info or info.shownState == 0
|
||||||
|
|
||||||
|
if event ~= "internal" then
|
||||||
|
if self.moduleSettings.hideBlizz then
|
||||||
|
self:HideBlizz()
|
||||||
|
else
|
||||||
|
self:ShowBlizz()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if info.numFullFrames == info.numTotalFrames then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
if info.fillMax == 0 then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
self.partialReady = IceHUD:Clamp(info.numFullFrames + 1, 0, info.numTotalFrames)
|
||||||
|
self.partialReadyPercent = info.fillValue / info.fillMax
|
||||||
|
if event ~= "internal" then
|
||||||
|
self:UpdateRunePower()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function DragonridingVigor.prototype:SetupNewRune(rune)
|
||||||
|
self.runeCoords[rune] = {0, 1, 0, 1}
|
||||||
|
end
|
||||||
|
|
||||||
|
function DragonridingVigor.prototype:GetDefaultSettings()
|
||||||
|
local defaults = DragonridingVigor.super.prototype.GetDefaultSettings(self)
|
||||||
|
|
||||||
|
defaults.pulseWhenFull = false
|
||||||
|
defaults.runeGap = 4
|
||||||
|
defaults.inactiveDisplayMode = "Shown"
|
||||||
|
defaults.hideBlizz = true
|
||||||
|
defaults.vpos = -25
|
||||||
|
|
||||||
|
return defaults
|
||||||
|
end
|
||||||
|
|
||||||
|
function DragonridingVigor.prototype:GetOptions()
|
||||||
|
local opts = DragonridingVigor.super.prototype.GetOptions(self)
|
||||||
|
|
||||||
|
opts.inactiveDisplayMode.hidden = function() return true end
|
||||||
|
|
||||||
|
return opts
|
||||||
|
end
|
||||||
|
|
||||||
|
function DragonridingVigor.prototype:GetRuneAtlas(rune)
|
||||||
|
return "dragonriding_vigor_fillfull"
|
||||||
|
end
|
||||||
|
|
||||||
|
function DragonridingVigor.prototype:GetShineAtlas(rune)
|
||||||
|
return "Mage-ArcaneCharge-SmallSpark"
|
||||||
|
end
|
||||||
|
|
||||||
|
function DragonridingVigor.prototype:GetFrameAtlas(rune)
|
||||||
|
return "dragonriding_vigor_frame"
|
||||||
|
end
|
||||||
|
|
||||||
|
function DragonridingVigor.prototype:GetBackgroundAtlas(rune)
|
||||||
|
return "dragonriding_vigor_background"
|
||||||
|
end
|
||||||
|
|
||||||
|
function DragonridingVigor.prototype:GetPartialRuneAtlas(rune)
|
||||||
|
return "dragonriding_vigor_fill"
|
||||||
|
end
|
||||||
|
|
||||||
|
function DragonridingVigor.prototype:ShowBlizz()
|
||||||
|
local info = C_UIWidgetManager.GetFillUpFramesWidgetVisualizationInfo(defaultVigorWidgetID)
|
||||||
|
if not info or info.shownState == 0 then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
UIWidgetPowerBarContainerFrame.widgetFrames[defaultVigorWidgetID]:Show()
|
||||||
|
end
|
||||||
|
|
||||||
|
function DragonridingVigor.prototype:HideBlizz()
|
||||||
|
if not UIWidgetPowerBarContainerFrame.widgetFrames or not UIWidgetPowerBarContainerFrame.widgetFrames[defaultVigorWidgetID] then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
if not self.suppressHideBlizz then
|
||||||
|
UIWidgetPowerBarContainerFrame.widgetFrames[defaultVigorWidgetID]:Hide()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Load us up
|
||||||
|
if unitPowerType and C_UIWidgetManager and C_UIWidgetManager.GetFillUpFramesWidgetVisualizationInfo then
|
||||||
|
IceHUD.DragonridingVigor = DragonridingVigor:new()
|
||||||
|
end
|
@ -107,7 +107,7 @@ function EclipseBar.prototype:CreateFrame()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function EclipseBar.prototype:CreateSolarBar()
|
function EclipseBar.prototype:CreateSolarBar()
|
||||||
self.solarBar = self:BarFactory(self.solarBar,"BACKGROUND", "ARTWORK", "Solar")
|
self.solarBar = self:BarFactory(self.solarBar, "BACKGROUND", "ARTWORK", "Solar")
|
||||||
self:SetBarCoord(self.solarBar, 0.5, true)
|
self:SetBarCoord(self.solarBar, 0.5, true)
|
||||||
|
|
||||||
self.solarBar.bar:SetVertexColor(self:GetColor("EclipseSolar", 1))
|
self.solarBar.bar:SetVertexColor(self:GetColor("EclipseSolar", 1))
|
||||||
|
@ -422,9 +422,9 @@ end
|
|||||||
|
|
||||||
function FocusHealth.prototype:UpdateRaidFocusIcon()
|
function FocusHealth.prototype:UpdateRaidFocusIcon()
|
||||||
if self.moduleSettings.raidIconOnTop then
|
if self.moduleSettings.raidIconOnTop then
|
||||||
self.frame.raidIcon:SetFrameStrata("MEDIUM")
|
self.frame.raidIcon:SetFrameStrata(IceHUD.IceCore:DetermineStrata("MEDIUM"))
|
||||||
else
|
else
|
||||||
self.frame.raidIcon:SetFrameStrata("LOW")
|
self.frame.raidIcon:SetFrameStrata(IceHUD.IceCore:DetermineStrata("LOW"))
|
||||||
end
|
end
|
||||||
|
|
||||||
if not (UnitExists(self.unit)) or not self.moduleSettings.showRaidIcon then
|
if not (UnitExists(self.unit)) or not self.moduleSettings.showRaidIcon then
|
||||||
|
@ -1,6 +1,29 @@
|
|||||||
local L = LibStub("AceLocale-3.0"):GetLocale("IceHUD", false)
|
local L = LibStub("AceLocale-3.0"):GetLocale("IceHUD", false)
|
||||||
local GlobalCoolDown = IceCore_CreateClass(IceBarElement)
|
local GlobalCoolDown = IceCore_CreateClass(IceBarElement)
|
||||||
|
|
||||||
|
local GetSpellName = GetSpellInfo
|
||||||
|
if C_Spell and C_Spell.GetSpellName then
|
||||||
|
GetSpellName = C_Spell.GetSpellName
|
||||||
|
end
|
||||||
|
|
||||||
|
local GetSpellInfo = GetSpellInfo
|
||||||
|
if not GetSpellInfo and C_Spell and C_Spell.GetSpellInfo then
|
||||||
|
GetSpellInfo = function(id)
|
||||||
|
local info = C_Spell.GetSpellInfo(id)
|
||||||
|
return info.name, nil, info.iconID, info.castTime
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local GetSpellCooldown = GetSpellCooldown
|
||||||
|
if not GetSpellCooldown and C_Spell then
|
||||||
|
GetSpellCooldown = function(spellID)
|
||||||
|
local spellCooldownInfo = C_Spell.GetSpellCooldown(spellID)
|
||||||
|
if spellCooldownInfo then
|
||||||
|
return spellCooldownInfo.startTime, spellCooldownInfo.duration, spellCooldownInfo.isEnabled, spellCooldownInfo.modRate
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
-- Constructor --
|
-- Constructor --
|
||||||
function GlobalCoolDown.prototype:init()
|
function GlobalCoolDown.prototype:init()
|
||||||
GlobalCoolDown.super.prototype.init(self, "GlobalCoolDown")
|
GlobalCoolDown.super.prototype.init(self, "GlobalCoolDown")
|
||||||
@ -38,7 +61,7 @@ function GlobalCoolDown.prototype:Enable(core)
|
|||||||
|
|
||||||
self:Show(false)
|
self:Show(false)
|
||||||
|
|
||||||
self.frame:SetFrameStrata("LOW")
|
self.frame:SetFrameStrata(IceHUD.IceCore:DetermineStrata("LOW"))
|
||||||
|
|
||||||
self.CDSpellId = self:GetSpellId()
|
self.CDSpellId = self:GetSpellId()
|
||||||
end
|
end
|
||||||
@ -267,7 +290,7 @@ function GlobalCoolDown.prototype:CreateLagBar()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function GlobalCoolDown.prototype:GetSpellId()
|
function GlobalCoolDown.prototype:GetSpellId()
|
||||||
if GetSpellInfo(61304) then
|
if GetSpellName(61304) then
|
||||||
return 61304
|
return 61304
|
||||||
else
|
else
|
||||||
local defaultSpells
|
local defaultSpells
|
||||||
@ -286,9 +309,15 @@ function GlobalCoolDown.prototype:GetSpellId()
|
|||||||
MONK=100780, -- jab
|
MONK=100780, -- jab
|
||||||
}
|
}
|
||||||
|
|
||||||
if not GetSpellInfo(defaultSpells["PALADIN"]) then
|
if not GetSpellName(defaultSpells["PALADIN"]) then
|
||||||
defaultSpells["PALADIN"] = 635
|
defaultSpells["PALADIN"] = 635
|
||||||
end
|
end
|
||||||
|
if not GetSpellName(defaultSpells["MAGE"]) then
|
||||||
|
defaultSpells["MAGE"] = 133
|
||||||
|
end
|
||||||
|
if not GetSpellName(defaultSpells["WARRIOR"]) then
|
||||||
|
defaultSpells["WARRIOR"] = 6673
|
||||||
|
end
|
||||||
|
|
||||||
local _, unitClass = UnitClass("player")
|
local _, unitClass = UnitClass("player")
|
||||||
return defaultSpells[unitClass]
|
return defaultSpells[unitClass]
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
local L = LibStub("AceLocale-3.0"):GetLocale("IceHUD", false)
|
local L = LibStub("AceLocale-3.0"):GetLocale("IceHUD", false)
|
||||||
IceHUDPlayerAlternatePower = IceCore_CreateClass(IceUnitBar)
|
local PlayerAlternatePower = IceCore_CreateClass(IceUnitBar)
|
||||||
|
|
||||||
-- Constructor --
|
-- Constructor --
|
||||||
function IceHUDPlayerAlternatePower.prototype:init(moduleName, unit)
|
function PlayerAlternatePower.prototype:init(moduleName, unit)
|
||||||
IceHUDPlayerAlternatePower.super.prototype.init(self, moduleName or "PlayerAlternatePower", "player")
|
PlayerAlternatePower.super.prototype.init(self, moduleName or "PlayerAlternatePower", "player")
|
||||||
|
|
||||||
self.bTreatEmptyAsFull = true
|
self.bTreatEmptyAsFull = true
|
||||||
self.power = 0
|
self.power = 0
|
||||||
@ -13,8 +13,8 @@ function IceHUDPlayerAlternatePower.prototype:init(moduleName, unit)
|
|||||||
self.powerName = "MANA"
|
self.powerName = "MANA"
|
||||||
end
|
end
|
||||||
|
|
||||||
function IceHUDPlayerAlternatePower.prototype:GetDefaultSettings()
|
function PlayerAlternatePower.prototype:GetDefaultSettings()
|
||||||
local settings = IceHUDPlayerAlternatePower.super.prototype.GetDefaultSettings(self)
|
local settings = PlayerAlternatePower.super.prototype.GetDefaultSettings(self)
|
||||||
|
|
||||||
settings["side"] = IceCore.Side.Left
|
settings["side"] = IceCore.Side.Left
|
||||||
settings["offset"] = -1
|
settings["offset"] = -1
|
||||||
@ -25,8 +25,8 @@ function IceHUDPlayerAlternatePower.prototype:GetDefaultSettings()
|
|||||||
return settings
|
return settings
|
||||||
end
|
end
|
||||||
|
|
||||||
function IceHUDPlayerAlternatePower.prototype:Enable(core)
|
function PlayerAlternatePower.prototype:Enable(core)
|
||||||
IceHUDPlayerAlternatePower.super.prototype.Enable(self, core)
|
PlayerAlternatePower.super.prototype.Enable(self, core)
|
||||||
|
|
||||||
self:RegisterEvent(IceHUD.UnitPowerEvent, "UpdateEvent")
|
self:RegisterEvent(IceHUD.UnitPowerEvent, "UpdateEvent")
|
||||||
if IceHUD.EventExistsUnitMaxPower then
|
if IceHUD.EventExistsUnitMaxPower then
|
||||||
@ -39,40 +39,50 @@ function IceHUDPlayerAlternatePower.prototype:Enable(core)
|
|||||||
|
|
||||||
if self.maxPower == 0 then
|
if self.maxPower == 0 then
|
||||||
self:Show(false)
|
self:Show(false)
|
||||||
|
else
|
||||||
|
self.wantToShow = true
|
||||||
end
|
end
|
||||||
if self.moduleSettings.hideBlizz then
|
if self.moduleSettings.hideBlizz then
|
||||||
self:HideBlizz()
|
self:HideBlizz()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function IceHUDPlayerAlternatePower.prototype:PowerBarShow(event, unit)
|
function PlayerAlternatePower.prototype:PowerBarShow(event, unit)
|
||||||
if unit ~= self.unit then
|
if unit ~= self.unit then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
|
self.wantToShow = true
|
||||||
self:Show(true)
|
self:Show(true)
|
||||||
self:Update(self.unit)
|
self:Update(self.unit)
|
||||||
end
|
end
|
||||||
|
|
||||||
function IceHUDPlayerAlternatePower.prototype:PowerBarHide(event, unit)
|
function PlayerAlternatePower.prototype:PowerBarHide(event, unit)
|
||||||
if unit ~= self.unit then
|
if unit ~= self.unit then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
|
self.wantToShow = false
|
||||||
self:Show(false)
|
self:Show(false)
|
||||||
self:Update(self.unit)
|
self:Update(self.unit)
|
||||||
end
|
end
|
||||||
|
|
||||||
function IceHUDPlayerAlternatePower.prototype:UpdateEvent(event, unit)
|
function PlayerAlternatePower.prototype:UpdateEvent(event, unit)
|
||||||
self:Update(unit)
|
self:Update(unit)
|
||||||
end
|
end
|
||||||
|
|
||||||
function IceHUDPlayerAlternatePower.prototype:Update(unit)
|
function PlayerAlternatePower.prototype:Update(unit)
|
||||||
IceHUDPlayerAlternatePower.super.prototype.Update(self)
|
PlayerAlternatePower.super.prototype.Update(self)
|
||||||
if (unit and (unit ~= self.unit)) then
|
if (unit and (unit ~= self.unit)) then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if IceHUD.DragonridingVigor and IceHUD.DragonridingVigor.bIsVisible then
|
||||||
|
self:Show(false)
|
||||||
|
elseif self.wantToShow then
|
||||||
|
self:Show(true)
|
||||||
|
end
|
||||||
|
|
||||||
self.maxPower = UnitPowerMax(self.unit, self.powerIndex)
|
self.maxPower = UnitPowerMax(self.unit, self.powerIndex)
|
||||||
self.power = UnitPower(self.unit, self.powerIndex)
|
self.power = UnitPower(self.unit, self.powerIndex)
|
||||||
if self.maxPower > 0 then
|
if self.maxPower > 0 then
|
||||||
@ -92,8 +102,8 @@ function IceHUDPlayerAlternatePower.prototype:Update(unit)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function IceHUDPlayerAlternatePower.prototype:GetOptions()
|
function PlayerAlternatePower.prototype:GetOptions()
|
||||||
local opts = IceHUDPlayerAlternatePower.super.prototype.GetOptions(self)
|
local opts = PlayerAlternatePower.super.prototype.GetOptions(self)
|
||||||
|
|
||||||
opts["lowThresholdColor"] = nil
|
opts["lowThresholdColor"] = nil
|
||||||
|
|
||||||
@ -121,11 +131,11 @@ function IceHUDPlayerAlternatePower.prototype:GetOptions()
|
|||||||
return opts
|
return opts
|
||||||
end
|
end
|
||||||
|
|
||||||
function IceHUDPlayerAlternatePower.prototype:ShowBlizz()
|
function PlayerAlternatePower.prototype:ShowBlizz()
|
||||||
PlayerPowerBarAlt:GetScript("OnLoad")(PlayerPowerBarAlt)
|
PlayerPowerBarAlt:GetScript("OnLoad")(PlayerPowerBarAlt)
|
||||||
end
|
end
|
||||||
|
|
||||||
function IceHUDPlayerAlternatePower.prototype:HideBlizz()
|
function PlayerAlternatePower.prototype:HideBlizz()
|
||||||
PlayerPowerBarAlt:Hide()
|
PlayerPowerBarAlt:Hide()
|
||||||
|
|
||||||
PlayerPowerBarAlt:UnregisterAllEvents()
|
PlayerPowerBarAlt:UnregisterAllEvents()
|
||||||
@ -133,5 +143,5 @@ end
|
|||||||
|
|
||||||
-- Load us up
|
-- Load us up
|
||||||
if ALTERNATE_POWER_INDEX then
|
if ALTERNATE_POWER_INDEX then
|
||||||
IceHUD.PlayerAlternatePower = IceHUDPlayerAlternatePower:new()
|
IceHUD.PlayerAlternatePower = PlayerAlternatePower:new()
|
||||||
end
|
end
|
||||||
|
@ -115,16 +115,30 @@ end
|
|||||||
|
|
||||||
function PlayerInfo.prototype:ShowBlizz()
|
function PlayerInfo.prototype:ShowBlizz()
|
||||||
BuffFrame:Show()
|
BuffFrame:Show()
|
||||||
|
if DebuffFrame then
|
||||||
|
DebuffFrame:Show()
|
||||||
|
DebuffFrame:GetScript("OnLoad")(DebuffFrame)
|
||||||
|
if DebuffFrame.Update then
|
||||||
|
DebuffFrame:Update()
|
||||||
|
end
|
||||||
|
end
|
||||||
if TemporaryEnchantFrame then
|
if TemporaryEnchantFrame then
|
||||||
TemporaryEnchantFrame:Show()
|
TemporaryEnchantFrame:Show()
|
||||||
end
|
end
|
||||||
|
|
||||||
BuffFrame:GetScript("OnLoad")(BuffFrame)
|
BuffFrame:GetScript("OnLoad")(BuffFrame)
|
||||||
|
if BuffFrame.Update then
|
||||||
|
BuffFrame:Update()
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
function PlayerInfo.prototype:HideBlizz()
|
function PlayerInfo.prototype:HideBlizz()
|
||||||
BuffFrame:Hide()
|
BuffFrame:Hide()
|
||||||
|
if DebuffFrame then
|
||||||
|
DebuffFrame:Hide()
|
||||||
|
DebuffFrame:UnregisterAllEvents()
|
||||||
|
end
|
||||||
if TemporaryEnchantFrame then
|
if TemporaryEnchantFrame then
|
||||||
TemporaryEnchantFrame:Hide()
|
TemporaryEnchantFrame:Hide()
|
||||||
end
|
end
|
||||||
|
@ -475,7 +475,7 @@ function PlayerMana.prototype:CreateTickerFrame()
|
|||||||
self.tickerFrame = CreateFrame("Frame", nil, self.barFrame)
|
self.tickerFrame = CreateFrame("Frame", nil, self.barFrame)
|
||||||
end
|
end
|
||||||
|
|
||||||
self.tickerFrame:SetFrameStrata("BACKGROUND")
|
self.tickerFrame:SetFrameStrata(IceHUD.IceCore:DetermineStrata("BACKGROUND"))
|
||||||
self.tickerFrame:SetWidth(self.settings.barWidth)
|
self.tickerFrame:SetWidth(self.settings.barWidth)
|
||||||
self.tickerFrame:SetHeight(self.settings.barHeight)
|
self.tickerFrame:SetHeight(self.settings.barHeight)
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ function RangeCheck.prototype:init()
|
|||||||
|
|
||||||
self.scalingEnabled = true
|
self.scalingEnabled = true
|
||||||
|
|
||||||
LibRange = LibStub("LibRangeCheck-2.0", true)
|
LibRange = LibStub("LibRangeCheck-3.0", true)
|
||||||
end
|
end
|
||||||
|
|
||||||
function RangeCheck.prototype:Enable(core)
|
function RangeCheck.prototype:Enable(core)
|
||||||
@ -126,7 +126,7 @@ function RangeCheck.prototype:CreateFrame(redraw)
|
|||||||
end
|
end
|
||||||
|
|
||||||
self.frame:SetScale(self.moduleSettings.scale)
|
self.frame:SetScale(self.moduleSettings.scale)
|
||||||
self.frame:SetFrameStrata("BACKGROUND")
|
self.frame:SetFrameStrata(IceHUD.IceCore:DetermineStrata("BACKGROUND"))
|
||||||
self.frame:SetWidth(200)
|
self.frame:SetWidth(200)
|
||||||
self.frame:SetHeight(32)
|
self.frame:SetHeight(32)
|
||||||
self.frame:ClearAllPoints()
|
self.frame:ClearAllPoints()
|
||||||
|
@ -4,6 +4,25 @@ local Resolve = IceCore_CreateClass(IceUnitBar)
|
|||||||
local RESOLVE_SPELL_ID = 158300
|
local RESOLVE_SPELL_ID = 158300
|
||||||
local RESOLVE_MAX = 240
|
local RESOLVE_MAX = 240
|
||||||
|
|
||||||
|
local GetSpellInfo = GetSpellInfo
|
||||||
|
if not GetSpellInfo and C_Spell and C_Spell.GetSpellInfo then
|
||||||
|
GetSpellInfo = function(spellID)
|
||||||
|
if not spellID then
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
|
||||||
|
local spellInfo = C_Spell.GetSpellInfo(spellID)
|
||||||
|
if spellInfo then
|
||||||
|
return spellInfo.name, nil, spellInfo.iconID, spellInfo.castTime, spellInfo.minRange, spellInfo.maxRange, spellInfo.spellID, spellInfo.originalIconID
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local GetSpellName = GetSpellInfo
|
||||||
|
if C_Spell and C_Spell.GetSpellName then
|
||||||
|
GetSpellName = C_Spell.GetSpellName
|
||||||
|
end
|
||||||
|
|
||||||
Resolve.prototype.current = nil
|
Resolve.prototype.current = nil
|
||||||
Resolve.prototype.max = RESOLVE_MAX
|
Resolve.prototype.max = RESOLVE_MAX
|
||||||
|
|
||||||
@ -49,14 +68,19 @@ end
|
|||||||
|
|
||||||
-- scan the tooltip and extract the Resolve value
|
-- scan the tooltip and extract the Resolve value
|
||||||
do
|
do
|
||||||
local spellName = GetSpellInfo(RESOLVE_SPELL_ID)
|
local spellName = GetSpellName(RESOLVE_SPELL_ID)
|
||||||
|
|
||||||
function Resolve.prototype:UpdateCurrent(event, unit)
|
function Resolve.prototype:UpdateCurrent(event, unit)
|
||||||
if (unit and (unit ~= self.unit)) then
|
if (unit and (unit ~= self.unit)) then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
self.current = select(IceHUD.SpellFunctionsReturnRank and 15 or 14, UnitAura(self.unit, spellName)) or 0
|
if UnitAura then
|
||||||
|
self.current = select(IceHUD.SpellFunctionsReturnRank and 15 or 14, UnitAura(self.unit, spellName)) or 0
|
||||||
|
else
|
||||||
|
local auraInfo = C_UnitAuras.GetAuraDataBySpellName(self.unit, spellName)
|
||||||
|
self.current = auraInfo and auraInfo.timeMod or 0
|
||||||
|
end
|
||||||
|
|
||||||
self:Update()
|
self:Update()
|
||||||
end
|
end
|
||||||
@ -80,6 +104,6 @@ end
|
|||||||
-- Load for tanks only
|
-- Load for tanks only
|
||||||
local _, unitClass = UnitClass("player")
|
local _, unitClass = UnitClass("player")
|
||||||
if (unitClass == "DEATHKNIGHT" or unitClass == "DRUID" or unitClass == "PALADIN" or unitClass == "WARRIOR" or unitClass == "MONK")
|
if (unitClass == "DEATHKNIGHT" or unitClass == "DRUID" or unitClass == "PALADIN" or unitClass == "WARRIOR" or unitClass == "MONK")
|
||||||
and GetSpellInfo(RESOLVE_SPELL_ID) then
|
and GetSpellName(RESOLVE_SPELL_ID) then
|
||||||
IceHUD.Resolve = Resolve:new()
|
IceHUD.Resolve = Resolve:new()
|
||||||
end
|
end
|
||||||
|
@ -26,6 +26,37 @@ if Enum and Enum.PowerType then
|
|||||||
SPELL_POWER_COMBO_POINTS = Enum.PowerType.ComboPoints
|
SPELL_POWER_COMBO_POINTS = Enum.PowerType.ComboPoints
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local GetSpellInfo = GetSpellInfo
|
||||||
|
if not GetSpellInfo and C_Spell and C_Spell.GetSpellInfo then
|
||||||
|
GetSpellInfo = function(spellID)
|
||||||
|
if not spellID then
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
|
||||||
|
local spellInfo = C_Spell.GetSpellInfo(spellID)
|
||||||
|
if spellInfo then
|
||||||
|
return spellInfo.name, nil, spellInfo.iconID, spellInfo.castTime, spellInfo.minRange, spellInfo.maxRange, spellInfo.spellID, spellInfo.originalIconID
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local GetSpellName = GetSpellInfo
|
||||||
|
if C_Spell and C_Spell.GetSpellName then
|
||||||
|
GetSpellName = C_Spell.GetSpellName
|
||||||
|
end
|
||||||
|
|
||||||
|
local UnitBuff = UnitBuff
|
||||||
|
if not UnitBuff and C_UnitAuras and AuraUtil then
|
||||||
|
UnitBuff = function(unitToken, index, filter)
|
||||||
|
local auraData = C_UnitAuras.GetBuffDataByIndex(unitToken, index, filter)
|
||||||
|
if not auraData then
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
|
||||||
|
return AuraUtil.UnpackAuraData(auraData)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
-- Constructor --
|
-- Constructor --
|
||||||
function RollTheBones.prototype:init()
|
function RollTheBones.prototype:init()
|
||||||
RollTheBones.super.prototype.init(self, "RollTheBones", "player")
|
RollTheBones.super.prototype.init(self, "RollTheBones", "player")
|
||||||
@ -288,8 +319,8 @@ end
|
|||||||
-- use this to figure out if Roll the Bones is available or not. neither IsSpellKnown nor IsPlayerSpell are correct for it
|
-- use this to figure out if Roll the Bones is available or not. neither IsSpellKnown nor IsPlayerSpell are correct for it
|
||||||
-- when SnD is known, but this is.
|
-- when SnD is known, but this is.
|
||||||
local function HasSpell(id)
|
local function HasSpell(id)
|
||||||
local spell = GetSpellInfo(id)
|
local spell = GetSpellName(id)
|
||||||
return spell == GetSpellInfo(spell)
|
return spell == GetSpellName(spell)
|
||||||
end
|
end
|
||||||
|
|
||||||
local function ShouldHide()
|
local function ShouldHide()
|
||||||
|
@ -456,7 +456,7 @@ end
|
|||||||
function Runes.prototype:CreateFrame()
|
function Runes.prototype:CreateFrame()
|
||||||
Runes.super.prototype.CreateFrame(self)
|
Runes.super.prototype.CreateFrame(self)
|
||||||
|
|
||||||
self.frame:SetFrameStrata("BACKGROUND")
|
self.frame:SetFrameStrata(IceHUD.IceCore:DetermineStrata("BACKGROUND"))
|
||||||
self.frame:SetWidth(self.runeSize*self.numRunes)
|
self.frame:SetWidth(self.runeSize*self.numRunes)
|
||||||
self.frame:SetHeight(1)
|
self.frame:SetHeight(1)
|
||||||
self.frame:ClearAllPoints()
|
self.frame:ClearAllPoints()
|
||||||
@ -516,7 +516,7 @@ function Runes.prototype:CreateRune(i, type, name)
|
|||||||
self.frame.graphical[i].shine = self.frame.graphical[i]:CreateTexture(nil, "OVERLAY")
|
self.frame.graphical[i].shine = self.frame.graphical[i]:CreateTexture(nil, "OVERLAY")
|
||||||
end
|
end
|
||||||
|
|
||||||
self.frame.graphical[i]:SetFrameStrata("BACKGROUND")
|
self.frame.graphical[i]:SetFrameStrata(IceHUD.IceCore:DetermineStrata("BACKGROUND"))
|
||||||
self.frame.graphical[i]:SetWidth(self.runeSize)
|
self.frame.graphical[i]:SetWidth(self.runeSize)
|
||||||
self.frame.graphical[i]:SetHeight(self.runeSize)
|
self.frame.graphical[i]:SetHeight(self.runeSize)
|
||||||
|
|
||||||
@ -546,7 +546,7 @@ function Runes.prototype:CreateRune(i, type, name)
|
|||||||
self.frame.graphical[i]:Hide()
|
self.frame.graphical[i]:Hide()
|
||||||
end
|
end
|
||||||
|
|
||||||
self.frame.graphical[i].cd:SetFrameStrata("BACKGROUND")
|
self.frame.graphical[i].cd:SetFrameStrata(IceHUD.IceCore:DetermineStrata("BACKGROUND"))
|
||||||
self.frame.graphical[i].cd:SetFrameLevel(self.frame.graphical[i]:GetFrameLevel()+1)
|
self.frame.graphical[i].cd:SetFrameLevel(self.frame.graphical[i]:GetFrameLevel()+1)
|
||||||
self.frame.graphical[i].cd:ClearAllPoints()
|
self.frame.graphical[i].cd:ClearAllPoints()
|
||||||
self.frame.graphical[i].cd:SetAllPoints(self.frame.graphical[i])
|
self.frame.graphical[i].cd:SetAllPoints(self.frame.graphical[i])
|
||||||
|
@ -131,7 +131,7 @@ function ShardCounter.prototype:UpdatePowerType(event)
|
|||||||
|
|
||||||
self.shouldShowUnmodified = false
|
self.shouldShowUnmodified = false
|
||||||
self.requiredSpec = CurrentSpec
|
self.requiredSpec = CurrentSpec
|
||||||
self.currentGrowMode = nil
|
self.currentGrowMode = self.growModes["height"]
|
||||||
|
|
||||||
if CurrentSpec == SPEC_WARLOCK_AFFLICTION then
|
if CurrentSpec == SPEC_WARLOCK_AFFLICTION then
|
||||||
self.runeCoords = AfflictionCoords
|
self.runeCoords = AfflictionCoords
|
||||||
|
@ -53,6 +53,18 @@ if Enum and Enum.PowerType then
|
|||||||
SPELL_POWER_COMBO_POINTS = Enum.PowerType.ComboPoints
|
SPELL_POWER_COMBO_POINTS = Enum.PowerType.ComboPoints
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local UnitBuff = UnitBuff
|
||||||
|
if not UnitBuff and C_UnitAuras and AuraUtil then
|
||||||
|
UnitBuff = function(unitToken, index, filter)
|
||||||
|
local auraData = C_UnitAuras.GetBuffDataByIndex(unitToken, index, filter)
|
||||||
|
if not auraData then
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
|
||||||
|
return AuraUtil.UnpackAuraData(auraData)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
-- Constructor --
|
-- Constructor --
|
||||||
function SliceAndDice.prototype:init()
|
function SliceAndDice.prototype:init()
|
||||||
SliceAndDice.super.prototype.init(self, "SliceAndDice", "player")
|
SliceAndDice.super.prototype.init(self, "SliceAndDice", "player")
|
||||||
@ -214,7 +226,7 @@ function SliceAndDice.prototype:CreateFrame()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function SliceAndDice.prototype:CreateDurationBar()
|
function SliceAndDice.prototype:CreateDurationBar()
|
||||||
self.durationFrame = self:BarFactory(self.durationFrame, "BACKGROUND","ARTWORK", "Duration")
|
self.durationFrame = self:BarFactory(self.durationFrame, "BACKGROUND", "ARTWORK", "Duration")
|
||||||
|
|
||||||
-- Rokiyo: Do we need to call this here?
|
-- Rokiyo: Do we need to call this here?
|
||||||
self.CurrScale = 0
|
self.CurrScale = 0
|
||||||
@ -294,13 +306,6 @@ local function SNDGetComboPoints(unit)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- use this to figure out if Roll the Bones is available or not. neither IsSpellKnown nor IsPlayerSpell are correct for it
|
|
||||||
-- when SnD is known, but this is.
|
|
||||||
local function HasSpell(id)
|
|
||||||
local spell = GetSpellInfo(id)
|
|
||||||
return spell == GetSpellInfo(spell)
|
|
||||||
end
|
|
||||||
|
|
||||||
local function ShouldHide()
|
local function ShouldHide()
|
||||||
if IceHUD.WowVer >= 90000 or IceHUD.WowClassicBC or IceHUD.WowClassicWrath then
|
if IceHUD.WowVer >= 90000 or IceHUD.WowClassicBC or IceHUD.WowClassicWrath then
|
||||||
return false
|
return false
|
||||||
|
@ -17,6 +17,43 @@ local staggerIds = {LightID, ModerateID, HeavyID}
|
|||||||
|
|
||||||
local MinLevel = 10
|
local MinLevel = 10
|
||||||
|
|
||||||
|
local STAGGER_YELLOW_TRANSITION, STAGGER_RED_TRANSITION = STAGGER_YELLOW_TRANSITION, STAGGER_RED_TRANSITION
|
||||||
|
if STAGGER_STATES then
|
||||||
|
STAGGER_YELLOW_TRANSITION = STAGGER_STATES.YELLOW.threshold
|
||||||
|
STAGGER_RED_TRANSITION = STAGGER_STATES.RED.threshold
|
||||||
|
end
|
||||||
|
|
||||||
|
local GetSpellInfo = GetSpellInfo
|
||||||
|
if not GetSpellInfo and C_Spell and C_Spell.GetSpellInfo then
|
||||||
|
GetSpellInfo = function(spellID)
|
||||||
|
if not spellID then
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
|
||||||
|
local spellInfo = C_Spell.GetSpellInfo(spellID)
|
||||||
|
if spellInfo then
|
||||||
|
return spellInfo.name, nil, spellInfo.iconID, spellInfo.castTime, spellInfo.minRange, spellInfo.maxRange, spellInfo.spellID, spellInfo.originalIconID
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local GetSpellName = GetSpellInfo
|
||||||
|
if C_Spell and C_Spell.GetSpellName then
|
||||||
|
GetSpellName = C_Spell.GetSpellName
|
||||||
|
end
|
||||||
|
|
||||||
|
local UnitDebuff = UnitDebuff
|
||||||
|
if not UnitDebuff and C_UnitAuras and AuraUtil then
|
||||||
|
UnitDebuff = function(unitToken, index, filter)
|
||||||
|
local auraData = C_UnitAuras.GetDebuffDataByIndex(unitToken, index, filter)
|
||||||
|
if not auraData then
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
|
||||||
|
return AuraUtil.UnpackAuraData(auraData)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
StaggerBar.prototype.StaggerDuration = 0
|
StaggerBar.prototype.StaggerDuration = 0
|
||||||
StaggerBar.prototype.StaggerEndTime = 0
|
StaggerBar.prototype.StaggerEndTime = 0
|
||||||
|
|
||||||
@ -113,9 +150,9 @@ function StaggerBar.prototype:Enable(core)
|
|||||||
StaggerBar.super.prototype.Enable(self, core)
|
StaggerBar.super.prototype.Enable(self, core)
|
||||||
|
|
||||||
playerName = UnitName(self.unit)
|
playerName = UnitName(self.unit)
|
||||||
staggerNames[1] = GetSpellInfo(LightID)
|
staggerNames[1] = GetSpellName(LightID)
|
||||||
staggerNames[2] = GetSpellInfo(ModerateID)
|
staggerNames[2] = GetSpellName(ModerateID)
|
||||||
staggerNames[3] = GetSpellInfo(HeavyID)
|
staggerNames[3] = GetSpellName(HeavyID)
|
||||||
|
|
||||||
self:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED")
|
self:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED")
|
||||||
self:RegisterEvent("PLAYER_ENTERING_WORLD")
|
self:RegisterEvent("PLAYER_ENTERING_WORLD")
|
||||||
@ -137,7 +174,7 @@ function StaggerBar.prototype:CreateFrame()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function StaggerBar.prototype:CreateTimerBar()
|
function StaggerBar.prototype:CreateTimerBar()
|
||||||
self.timerFrame = self:BarFactory(self.timerFrame, "MEDIUM","ARTWORK", "Timer")
|
self.timerFrame = self:BarFactory(self.timerFrame, "MEDIUM", "ARTWORK", "Timer")
|
||||||
|
|
||||||
self.CurrScale = 0
|
self.CurrScale = 0
|
||||||
|
|
||||||
@ -190,8 +227,8 @@ function StaggerBar.prototype:GetDebuffInfo()
|
|||||||
if debuffID == LightID or debuffID == ModerateID or debuffID == HeavyID then
|
if debuffID == LightID or debuffID == ModerateID or debuffID == HeavyID then
|
||||||
local spellName = UnitDebuff(self.unit, i)
|
local spellName = UnitDebuff(self.unit, i)
|
||||||
|
|
||||||
duration = select(IceHUD.SpellFunctionsReturnRank and 6 or 5, UnitAura(self.unit, spellName, "", "HARMFUL"))
|
duration = select(IceHUD.SpellFunctionsReturnRank and 6 or 5, IceHUD.UnitAura(self.unit, spellName, "", "HARMFUL"))
|
||||||
amount = select(IceHUD.SpellFunctionsReturnRank and 15 or 14, UnitAura(self.unit, spellName, "", "HARMFUL"))
|
amount = select(IceHUD.SpellFunctionsReturnRank and 15 or 14, IceHUD.UnitAura(self.unit, spellName, "", "HARMFUL"))
|
||||||
staggerLevel = (debuffID == LightID) and 1 or (debuffID == ModerateID) and 2 or 3
|
staggerLevel = (debuffID == LightID) and 1 or (debuffID == ModerateID) and 2 or 3
|
||||||
|
|
||||||
break
|
break
|
||||||
|
@ -12,6 +12,25 @@ if GetNumGroupMembers then
|
|||||||
GetNumRaidMembers = GetNumGroupMembers
|
GetNumRaidMembers = GetNumGroupMembers
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local GetSpellInfo = GetSpellInfo
|
||||||
|
if not GetSpellInfo and C_Spell and C_Spell.GetSpellInfo then
|
||||||
|
GetSpellInfo = function(spellID)
|
||||||
|
if not spellID then
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
|
||||||
|
local spellInfo = C_Spell.GetSpellInfo(spellID)
|
||||||
|
if spellInfo then
|
||||||
|
return spellInfo.name, nil, spellInfo.iconID, spellInfo.castTime, spellInfo.minRange, spellInfo.maxRange, spellInfo.spellID, spellInfo.originalIconID
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local GetSpellName = GetSpellInfo
|
||||||
|
if C_Spell and C_Spell.GetSpellName then
|
||||||
|
GetSpellName = C_Spell.GetSpellName
|
||||||
|
end
|
||||||
|
|
||||||
-- list of spell ID's for each CC type so we can avoid localization issues
|
-- list of spell ID's for each CC type so we can avoid localization issues
|
||||||
local StunCCList = {
|
local StunCCList = {
|
||||||
-- kidney shot
|
-- kidney shot
|
||||||
@ -72,10 +91,20 @@ local IncapacitateCCList = {
|
|||||||
19503,
|
19503,
|
||||||
-- Sleep
|
-- Sleep
|
||||||
700,
|
700,
|
||||||
-- Polymorph
|
-- Polymorph (rank 1)
|
||||||
118,
|
118,
|
||||||
|
-- Also Polymorph
|
||||||
|
65801,
|
||||||
|
-- Polymorph rank 2
|
||||||
|
12824,
|
||||||
|
-- Polymorph rank 3
|
||||||
|
12825,
|
||||||
|
-- Polymorph rank 4
|
||||||
|
12826,
|
||||||
-- Polymorph: Pig
|
-- Polymorph: Pig
|
||||||
28272,
|
28272,
|
||||||
|
-- Also Polymorph: Pig
|
||||||
|
28285,
|
||||||
-- Polymorph: Turtle
|
-- Polymorph: Turtle
|
||||||
28271,
|
28271,
|
||||||
-- Polymorph: Penguin
|
-- Polymorph: Penguin
|
||||||
@ -249,7 +278,7 @@ function TargetCC.prototype:PopulateSpellList(debuffListVar, ccList, ccName)
|
|||||||
local spellName
|
local spellName
|
||||||
|
|
||||||
for i=1,#ccList do
|
for i=1,#ccList do
|
||||||
spellName = GetSpellInfo(ccList[i])
|
spellName = GetSpellName(ccList[i])
|
||||||
|
|
||||||
if spellName and spellName ~= "" then
|
if spellName and spellName ~= "" then
|
||||||
debuffListVar[spellName] = ccName
|
debuffListVar[spellName] = ccName
|
||||||
@ -339,9 +368,9 @@ function TargetCC.prototype:GetMaxDebuffDuration(unitName, debuffNames)
|
|||||||
local i = 1
|
local i = 1
|
||||||
local debuff, rank, texture, count, debuffType, duration, endTime, unitCaster, _, _, spellId
|
local debuff, rank, texture, count, debuffType, duration, endTime, unitCaster, _, _, spellId
|
||||||
if IceHUD.SpellFunctionsReturnRank then
|
if IceHUD.SpellFunctionsReturnRank then
|
||||||
debuff, rank, texture, count, debuffType, duration, endTime, unitCaster, _, _, spellId = UnitAura(unitName, i, "HARMFUL")
|
debuff, rank, texture, count, debuffType, duration, endTime, unitCaster, _, _, spellId = IceHUD.UnitAura(unitName, i, "HARMFUL")
|
||||||
else
|
else
|
||||||
debuff, texture, count, debuffType, duration, endTime, unitCaster, _, _, spellId = UnitAura(unitName, i, "HARMFUL")
|
debuff, texture, count, debuffType, duration, endTime, unitCaster, _, _, spellId = IceHUD.UnitAura(unitName, i, "HARMFUL")
|
||||||
end
|
end
|
||||||
local isMine = unitCaster == "player"
|
local isMine = unitCaster == "player"
|
||||||
local result = {nil, nil, nil}
|
local result = {nil, nil, nil}
|
||||||
@ -350,7 +379,7 @@ function TargetCC.prototype:GetMaxDebuffDuration(unitName, debuffNames)
|
|||||||
while debuff do
|
while debuff do
|
||||||
remaining = endTime - GetTime()
|
remaining = endTime - GetTime()
|
||||||
|
|
||||||
if debuffNames[spellId] and (not self.moduleSettings.onlyShowForMyDebuffs or isMine) then
|
if (debuffNames[spellId] or debuffNames[debuff]) and (not self.moduleSettings.onlyShowForMyDebuffs or isMine) then
|
||||||
if result[0] then
|
if result[0] then
|
||||||
if result[2] < remaining then
|
if result[2] < remaining then
|
||||||
result = {debuff, duration, remaining}
|
result = {debuff, duration, remaining}
|
||||||
@ -363,9 +392,9 @@ function TargetCC.prototype:GetMaxDebuffDuration(unitName, debuffNames)
|
|||||||
i = i + 1;
|
i = i + 1;
|
||||||
|
|
||||||
if IceHUD.SpellFunctionsReturnRank then
|
if IceHUD.SpellFunctionsReturnRank then
|
||||||
debuff, rank, texture, count, debuffType, duration, endTime, unitCaster, _, _, spellId = UnitAura(unitName, i, "HARMFUL")
|
debuff, rank, texture, count, debuffType, duration, endTime, unitCaster, _, _, spellId = IceHUD.UnitAura(unitName, i, "HARMFUL")
|
||||||
else
|
else
|
||||||
debuff, texture, count, debuffType, duration, endTime, unitCaster, _, _, spellId = UnitAura(unitName, i, "HARMFUL")
|
debuff, texture, count, debuffType, duration, endTime, unitCaster, _, _, spellId = IceHUD.UnitAura(unitName, i, "HARMFUL")
|
||||||
end
|
end
|
||||||
isMine = unitCaster == "player"
|
isMine = unitCaster == "player"
|
||||||
end
|
end
|
||||||
|
@ -204,6 +204,6 @@ end
|
|||||||
|
|
||||||
-- Fulzamoth 2019-09-27 : load in Classic if LibClassicCasterino exists
|
-- Fulzamoth 2019-09-27 : load in Classic if LibClassicCasterino exists
|
||||||
-- Load us up
|
-- Load us up
|
||||||
if not IceHUD.WowClassic or LibClassicCasterino then
|
if IceHUD.CanShowTargetCasting then
|
||||||
IceHUD.TargetCast = TargetCast:new()
|
IceHUD.TargetCast = TargetCast:new()
|
||||||
end
|
end
|
||||||
|
@ -3,6 +3,11 @@ IceTargetHealth = IceCore_CreateClass(IceUnitBar)
|
|||||||
|
|
||||||
local IceHUD = _G.IceHUD
|
local IceHUD = _G.IceHUD
|
||||||
|
|
||||||
|
local IsAddOnLoaded = IsAddOnLoaded
|
||||||
|
if not IsAddOnLoaded and C_AddOns then
|
||||||
|
IsAddOnLoaded = C_AddOns.IsAddOnLoaded
|
||||||
|
end
|
||||||
|
|
||||||
IceTargetHealth.prototype.color = nil
|
IceTargetHealth.prototype.color = nil
|
||||||
IceTargetHealth.prototype.determineColor = true
|
IceTargetHealth.prototype.determineColor = true
|
||||||
IceTargetHealth.prototype.registerEvents = true
|
IceTargetHealth.prototype.registerEvents = true
|
||||||
@ -984,9 +989,9 @@ end
|
|||||||
|
|
||||||
function IceTargetHealth.prototype:UpdateRaidTargetIcon()
|
function IceTargetHealth.prototype:UpdateRaidTargetIcon()
|
||||||
if self.moduleSettings.raidIconOnTop then
|
if self.moduleSettings.raidIconOnTop then
|
||||||
self.frame.raidIcon:SetFrameStrata("MEDIUM")
|
self.frame.raidIcon:SetFrameStrata(IceHUD.IceCore:DetermineStrata("MEDIUM"))
|
||||||
else
|
else
|
||||||
self.frame.raidIcon:SetFrameStrata("LOW")
|
self.frame.raidIcon:SetFrameStrata(IceHUD.IceCore:DetermineStrata("LOW"))
|
||||||
end
|
end
|
||||||
|
|
||||||
if not self.moduleSettings.showRaidIcon or (not UnitExists(self.unit) and (not self.configMode and not IceHUD.IceCore:IsInConfigMode())) then
|
if not self.moduleSettings.showRaidIcon or (not UnitExists(self.unit) and (not self.configMode and not IceHUD.IceCore:IsInConfigMode())) then
|
||||||
|
@ -1136,7 +1136,7 @@ do -- OVERRIDE: IceTargetInfo.prototype:CreateFrame(redraw)
|
|||||||
|
|
||||||
self.frame:SetScale(self.moduleSettings.scale)
|
self.frame:SetScale(self.moduleSettings.scale)
|
||||||
|
|
||||||
self.frame:SetFrameStrata("BACKGROUND")
|
self.frame:SetFrameStrata(IceHUD.IceCore:DetermineStrata("BACKGROUND"))
|
||||||
self.frame:SetWidth(self.width)
|
self.frame:SetWidth(self.width)
|
||||||
self.frame:SetHeight(32)
|
self.frame:SetHeight(32)
|
||||||
self.frame:ClearAllPoints()
|
self.frame:ClearAllPoints()
|
||||||
@ -1220,7 +1220,7 @@ function IceTargetInfo.prototype:CreateAuraFrame(aura, redraw)
|
|||||||
|
|
||||||
if (not self.frame[auraFrame]) then
|
if (not self.frame[auraFrame]) then
|
||||||
self.frame[auraFrame] = CreateFrame("Frame", nil, self.frame)
|
self.frame[auraFrame] = CreateFrame("Frame", nil, self.frame)
|
||||||
self.frame[auraFrame]:SetFrameStrata("BACKGROUND")
|
self.frame[auraFrame]:SetFrameStrata(IceHUD.IceCore:DetermineStrata("BACKGROUND"))
|
||||||
self.frame[auraFrame]:SetWidth(1)
|
self.frame[auraFrame]:SetWidth(1)
|
||||||
self.frame[auraFrame]:SetHeight(1)
|
self.frame[auraFrame]:SetHeight(1)
|
||||||
self.frame[auraFrame]:Show()
|
self.frame[auraFrame]:Show()
|
||||||
@ -1244,7 +1244,7 @@ end
|
|||||||
do
|
do
|
||||||
local function FrameFactory(frameType, parentFrame, inheritsFrame)
|
local function FrameFactory(frameType, parentFrame, inheritsFrame)
|
||||||
local frame = CreateFrame(frameType, nil, parentFrame, inheritsFrame)
|
local frame = CreateFrame(frameType, nil, parentFrame, inheritsFrame)
|
||||||
frame:SetFrameStrata("BACKGROUND")
|
frame:SetFrameStrata(IceHUD.IceCore:DetermineStrata("BACKGROUND"))
|
||||||
frame:ClearAllPoints()
|
frame:ClearAllPoints()
|
||||||
return frame
|
return frame
|
||||||
end
|
end
|
||||||
@ -1420,11 +1420,11 @@ function IceTargetInfo.prototype:UpdateBuffType(aura)
|
|||||||
---- end change by Fulzamoth
|
---- end change by Fulzamoth
|
||||||
|
|
||||||
if IceHUD.SpellFunctionsReturnRank then
|
if IceHUD.SpellFunctionsReturnRank then
|
||||||
name, rank, icon, count, debuffType, duration, expirationTime, unitCaster, isStealable = UnitAura(self.unit, i, reaction .. (filter and "|PLAYER" or ""))
|
name, rank, icon, count, debuffType, duration, expirationTime, unitCaster, isStealable = IceHUD.UnitAura(self.unit, i, reaction .. (filter and "|PLAYER" or ""))
|
||||||
else
|
else
|
||||||
---- Fulzamoth - 2019-09-04 : support for cooldowns on target buffs/debuffs (classic)
|
---- Fulzamoth - 2019-09-04 : support for cooldowns on target buffs/debuffs (classic)
|
||||||
-- 1. in addition to other info, get the spellID for for the (de)buff
|
-- 1. in addition to other info, get the spellID for for the (de)buff
|
||||||
name, icon, count, debuffType, duration, expirationTime, unitCaster, isStealable, _, spellID = UnitAura(self.unit, i, reaction .. (filter and "|PLAYER" or ""))
|
name, icon, count, debuffType, duration, expirationTime, unitCaster, isStealable, _, spellID = IceHUD.UnitAura(self.unit, i, reaction .. (filter and "|PLAYER" or ""))
|
||||||
if duration == 0 and LibClassicDurations then
|
if duration == 0 and LibClassicDurations then
|
||||||
-- 2. if no duration defined for the (de)buff, look up the spell in LibClassicDurations
|
-- 2. if no duration defined for the (de)buff, look up the spell in LibClassicDurations
|
||||||
local classicDuration, classicExpirationTime = LibClassicDurations:GetAuraDurationByUnit(self.unit, spellID, caster)
|
local classicDuration, classicExpirationTime = LibClassicDurations:GetAuraDurationByUnit(self.unit, spellID, caster)
|
||||||
@ -1453,7 +1453,7 @@ function IceTargetInfo.prototype:UpdateBuffType(aura)
|
|||||||
end
|
end
|
||||||
else
|
else
|
||||||
self.frame[auraFrame].iconFrames[i]:Hide()
|
self.frame[auraFrame].iconFrames[i]:Hide()
|
||||||
buffData[aura][i] = nil
|
table.remove(buffData[aura], i)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -12,6 +12,25 @@ if GetNumGroupMembers then
|
|||||||
GetNumRaidMembers = GetNumGroupMembers
|
GetNumRaidMembers = GetNumGroupMembers
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local GetSpellInfo = GetSpellInfo
|
||||||
|
if not GetSpellInfo and C_Spell and C_Spell.GetSpellInfo then
|
||||||
|
GetSpellInfo = function(spellID)
|
||||||
|
if not spellID then
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
|
||||||
|
local spellInfo = C_Spell.GetSpellInfo(spellID)
|
||||||
|
if spellInfo then
|
||||||
|
return spellInfo.name, nil, spellInfo.iconID, spellInfo.castTime, spellInfo.minRange, spellInfo.maxRange, spellInfo.spellID, spellInfo.originalIconID
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local GetSpellName = GetSpellInfo
|
||||||
|
if C_Spell and C_Spell.GetSpellName then
|
||||||
|
GetSpellName = C_Spell.GetSpellName
|
||||||
|
end
|
||||||
|
|
||||||
-- list of spell ID's for each CC type so we can avoid localization issues
|
-- list of spell ID's for each CC type so we can avoid localization issues
|
||||||
local InvulnList= {
|
local InvulnList= {
|
||||||
-- Anti-Magic Shell
|
-- Anti-Magic Shell
|
||||||
@ -76,7 +95,7 @@ function TargetInvuln.prototype:PopulateSpellList(buffListVar, ccList, ccName)
|
|||||||
local spellName
|
local spellName
|
||||||
|
|
||||||
for i=1,#ccList do
|
for i=1,#ccList do
|
||||||
spellName = GetSpellInfo(ccList[i])
|
spellName = GetSpellName(ccList[i])
|
||||||
|
|
||||||
if spellName and spellName ~= "" then
|
if spellName and spellName ~= "" then
|
||||||
buffListVar[spellName] = ccName
|
buffListVar[spellName] = ccName
|
||||||
@ -148,9 +167,9 @@ function TargetInvuln.prototype:GetMaxbuffDuration(unitName, buffNames)
|
|||||||
local i = 1
|
local i = 1
|
||||||
local buff, rank, texture, count, buffType, duration, endTime, unitCaster
|
local buff, rank, texture, count, buffType, duration, endTime, unitCaster
|
||||||
if IceHUD.SpellFunctionsReturnRank then
|
if IceHUD.SpellFunctionsReturnRank then
|
||||||
buff, rank, texture, count, buffType, duration, endTime, unitCaster = UnitAura(unitName, i, "HELPFUL")
|
buff, rank, texture, count, buffType, duration, endTime, unitCaster = IceHUD.UnitAura(unitName, i, "HELPFUL")
|
||||||
else
|
else
|
||||||
buff, texture, count, buffType, duration, endTime, unitCaster = UnitAura(unitName, i, "HELPFUL")
|
buff, texture, count, buffType, duration, endTime, unitCaster = IceHUD.UnitAura(unitName, i, "HELPFUL")
|
||||||
end
|
end
|
||||||
local isMine = unitCaster == "player"
|
local isMine = unitCaster == "player"
|
||||||
local result = {nil, nil, nil}
|
local result = {nil, nil, nil}
|
||||||
@ -179,9 +198,9 @@ function TargetInvuln.prototype:GetMaxbuffDuration(unitName, buffNames)
|
|||||||
i = i + 1;
|
i = i + 1;
|
||||||
|
|
||||||
if IceHUD.SpellFunctionsReturnRank then
|
if IceHUD.SpellFunctionsReturnRank then
|
||||||
buff, rank, texture, count, buffType, duration, endTime, unitCaster = UnitAura(unitName, i, "HELPFUL")
|
buff, rank, texture, count, buffType, duration, endTime, unitCaster = IceHUD.UnitAura(unitName, i, "HELPFUL")
|
||||||
else
|
else
|
||||||
buff, texture, count, buffType, duration, endTime, unitCaster = UnitAura(unitName, i, "HELPFUL")
|
buff, texture, count, buffType, duration, endTime, unitCaster = IceHUD.UnitAura(unitName, i, "HELPFUL")
|
||||||
end
|
end
|
||||||
isMine = unitCaster == "player"
|
isMine = unitCaster == "player"
|
||||||
end
|
end
|
||||||
|
@ -4,6 +4,18 @@ local DogTag = nil
|
|||||||
|
|
||||||
local TargetOfTarget = IceCore_CreateClass(IceElement)
|
local TargetOfTarget = IceCore_CreateClass(IceElement)
|
||||||
|
|
||||||
|
local UnitDebuff = UnitDebuff
|
||||||
|
if not UnitDebuff and C_UnitAuras and AuraUtil then
|
||||||
|
UnitDebuff = function(unitToken, index, filter)
|
||||||
|
local auraData = C_UnitAuras.GetDebuffDataByIndex(unitToken, index, filter)
|
||||||
|
if not auraData then
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
|
||||||
|
return AuraUtil.UnpackAuraData(auraData)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
TargetOfTarget.prototype.stackedDebuffs = nil
|
TargetOfTarget.prototype.stackedDebuffs = nil
|
||||||
TargetOfTarget.prototype.buffSize = nil
|
TargetOfTarget.prototype.buffSize = nil
|
||||||
TargetOfTarget.prototype.height = nil
|
TargetOfTarget.prototype.height = nil
|
||||||
@ -124,24 +136,26 @@ function TargetOfTarget.prototype:GetOptions()
|
|||||||
order = 34
|
order = 34
|
||||||
}
|
}
|
||||||
|
|
||||||
opts["texture"] = {
|
if AceGUIWidgetLSMlists then
|
||||||
type = 'select',
|
opts["texture"] = {
|
||||||
dialogControl = "LSM30_Statusbar",
|
type = 'select',
|
||||||
name = L["Texture"],
|
dialogControl = "LSM30_Statusbar",
|
||||||
desc = L["ToT frame texture"],
|
name = L["Texture"],
|
||||||
get = function(info)
|
desc = L["ToT frame texture"],
|
||||||
return self.moduleSettings.texture
|
get = function(info)
|
||||||
end,
|
return self.moduleSettings.texture
|
||||||
set = function(info, v)
|
end,
|
||||||
self.moduleSettings.texture = v
|
set = function(info, v)
|
||||||
self:Redraw()
|
self.moduleSettings.texture = v
|
||||||
end,
|
self:Redraw()
|
||||||
disabled = function()
|
end,
|
||||||
return not self.moduleSettings.enabled
|
disabled = function()
|
||||||
end,
|
return not self.moduleSettings.enabled
|
||||||
values = AceGUIWidgetLSMlists.statusbar,
|
end,
|
||||||
order = 35
|
values = AceGUIWidgetLSMlists.statusbar,
|
||||||
}
|
order = 35
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
opts["sizeToGap"] = {
|
opts["sizeToGap"] = {
|
||||||
type = 'toggle',
|
type = 'toggle',
|
||||||
@ -314,7 +328,7 @@ function TargetOfTarget.prototype:CreateFrame()
|
|||||||
self.frame:SetAttribute("unit", self.unit)
|
self.frame:SetAttribute("unit", self.unit)
|
||||||
end
|
end
|
||||||
|
|
||||||
self.frame:SetFrameStrata("BACKGROUND")
|
self.frame:SetFrameStrata(IceHUD.IceCore:DetermineStrata("BACKGROUND"))
|
||||||
if self.moduleSettings.sizeToGap then
|
if self.moduleSettings.sizeToGap then
|
||||||
self.frame:SetWidth(self.settings.gap)
|
self.frame:SetWidth(self.settings.gap)
|
||||||
else
|
else
|
||||||
@ -368,7 +382,7 @@ function TargetOfTarget.prototype:CreateBarFrame()
|
|||||||
|
|
||||||
self.frame.bg:SetTexture(0,0,0)
|
self.frame.bg:SetTexture(0,0,0)
|
||||||
|
|
||||||
self.frame.bar:SetFrameStrata("BACKGROUND")
|
self.frame.bar:SetFrameStrata(IceHUD.IceCore:DetermineStrata("BACKGROUND"))
|
||||||
if self.moduleSettings.sizeToGap then
|
if self.moduleSettings.sizeToGap then
|
||||||
self.frame.bg:SetWidth(self.settings.gap + 2)
|
self.frame.bg:SetWidth(self.settings.gap + 2)
|
||||||
self.frame.bar:SetWidth(self.settings.gap)
|
self.frame.bar:SetWidth(self.settings.gap)
|
||||||
@ -410,7 +424,7 @@ function TargetOfTarget.prototype:CreateToTFrame()
|
|||||||
|
|
||||||
self.frame.totName:SetHeight(self.moduleSettings.moduleHeight)
|
self.frame.totName:SetHeight(self.moduleSettings.moduleHeight)
|
||||||
self.frame.totName:SetJustifyH("LEFT")
|
self.frame.totName:SetJustifyH("LEFT")
|
||||||
self.frame.totName:SetJustifyV("CENTER")
|
self.frame.totName:SetJustifyV("MIDDLE")
|
||||||
|
|
||||||
self.frame.totName:SetPoint("LEFT", self.frame, "LEFT", 0, -1)
|
self.frame.totName:SetPoint("LEFT", self.frame, "LEFT", 0, -1)
|
||||||
self.frame.totName:Show()
|
self.frame.totName:Show()
|
||||||
@ -422,7 +436,7 @@ function TargetOfTarget.prototype:CreateToTHPFrame()
|
|||||||
|
|
||||||
self.frame.totHealth:SetHeight(self.moduleSettings.moduleHeight)
|
self.frame.totHealth:SetHeight(self.moduleSettings.moduleHeight)
|
||||||
self.frame.totHealth:SetJustifyH("RIGHT")
|
self.frame.totHealth:SetJustifyH("RIGHT")
|
||||||
self.frame.totHealth:SetJustifyV("CENTER")
|
self.frame.totHealth:SetJustifyV("MIDDLE")
|
||||||
|
|
||||||
self.frame.totHealth:SetPoint("RIGHT", self.frame, "RIGHT", 0, 0)
|
self.frame.totHealth:SetPoint("RIGHT", self.frame, "RIGHT", 0, 0)
|
||||||
self.frame.totHealth:Show()
|
self.frame.totHealth:Show()
|
||||||
@ -435,7 +449,7 @@ function TargetOfTarget.prototype:CreateDebuffFrame()
|
|||||||
end
|
end
|
||||||
self.frame.debuffFrame = CreateFrame("Frame", nil, self.frame)
|
self.frame.debuffFrame = CreateFrame("Frame", nil, self.frame)
|
||||||
|
|
||||||
self.frame.debuffFrame:SetFrameStrata("BACKGROUND")
|
self.frame.debuffFrame:SetFrameStrata(IceHUD.IceCore:DetermineStrata("BACKGROUND"))
|
||||||
self.frame.debuffFrame:SetWidth(10)
|
self.frame.debuffFrame:SetWidth(10)
|
||||||
self.frame.debuffFrame:SetHeight(self.height)
|
self.frame.debuffFrame:SetHeight(self.height)
|
||||||
|
|
||||||
@ -451,7 +465,7 @@ function TargetOfTarget.prototype:CreateIconFrames(parent)
|
|||||||
|
|
||||||
for i = 1, IceCore.BuffLimit do
|
for i = 1, IceCore.BuffLimit do
|
||||||
buffs[i] = CreateFrame("Frame", nil, parent)
|
buffs[i] = CreateFrame("Frame", nil, parent)
|
||||||
buffs[i]:SetFrameStrata("BACKGROUND")
|
buffs[i]:SetFrameStrata(IceHUD.IceCore:DetermineStrata("BACKGROUND"))
|
||||||
buffs[i]:SetWidth(self.buffSize)
|
buffs[i]:SetWidth(self.buffSize)
|
||||||
buffs[i]:SetHeight(self.buffSize)
|
buffs[i]:SetHeight(self.buffSize)
|
||||||
buffs[i]:SetPoint("LEFT", (i-1) * self.buffSize + (i-1), 0)
|
buffs[i]:SetPoint("LEFT", (i-1) * self.buffSize + (i-1), 0)
|
||||||
|
@ -136,7 +136,7 @@ function TargetTargetHealth.prototype:Update(unit)
|
|||||||
|
|
||||||
if (self.moduleSettings.scaleHealthColor) then
|
if (self.moduleSettings.scaleHealthColor) then
|
||||||
self.color = "ScaledHealthColor"
|
self.color = "ScaledHealthColor"
|
||||||
elseif self.moduleSettings.lowThresholdColor and self.healthPercentage <= self.moduleSettings.lowThreshold then
|
elseif self.moduleSettings.lowThresholdColor and self.healthPercentage and self.healthPercentage <= self.moduleSettings.lowThreshold then
|
||||||
self.color = "ScaledHealthColor"
|
self.color = "ScaledHealthColor"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -83,7 +83,7 @@ function TargetTargetMana.prototype:Update(unit)
|
|||||||
|
|
||||||
if (self.moduleSettings.scaleManaColor) then
|
if (self.moduleSettings.scaleManaColor) then
|
||||||
self.color = "ScaledManaColor"
|
self.color = "ScaledManaColor"
|
||||||
elseif self.moduleSettings.lowThresholdColor and self.manaPercentage <= self.moduleSettings.lowThreshold then
|
elseif self.moduleSettings.lowThresholdColor and self.manaPercentage and self.manaPercentage <= self.moduleSettings.lowThreshold then
|
||||||
self.color = "ScaledManaColor"
|
self.color = "ScaledManaColor"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -30,6 +30,11 @@ if not UnitGroupRolesAssigned then
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local GetItemInfo = GetItemInfo
|
||||||
|
if not GetItemInfo and C_Item then
|
||||||
|
GetItemInfo = C_Item.GetItemInfo
|
||||||
|
end
|
||||||
|
|
||||||
local MAX_NUM_RAID_MEMBERS = 40
|
local MAX_NUM_RAID_MEMBERS = 40
|
||||||
local MAX_NUM_PARTY_MEMBERS = 5
|
local MAX_NUM_PARTY_MEMBERS = 5
|
||||||
|
|
||||||
@ -231,7 +236,7 @@ end
|
|||||||
|
|
||||||
-- create the aggro range indicator bar
|
-- create the aggro range indicator bar
|
||||||
function IceThreat.prototype:CreateAggroBar()
|
function IceThreat.prototype:CreateAggroBar()
|
||||||
self.aggroBar = self:BarFactory(self.aggroBar, "BACKGROUND","ARTWORK", "Aggro")
|
self.aggroBar = self:BarFactory(self.aggroBar, "BACKGROUND", "ARTWORK", "Aggro")
|
||||||
|
|
||||||
local r, g, b = self:GetColor("ThreatPullAggro")
|
local r, g, b = self:GetColor("ThreatPullAggro")
|
||||||
if (self.settings.backgroundToggle) then
|
if (self.settings.backgroundToggle) then
|
||||||
|
@ -89,11 +89,11 @@ function Totems.prototype:GetOptions()
|
|||||||
end,
|
end,
|
||||||
order = 31
|
order = 31
|
||||||
}
|
}
|
||||||
--[[
|
|
||||||
opts["hideBlizz"] = {
|
opts["hideBlizz"] = {
|
||||||
type = "toggle",
|
type = "toggle",
|
||||||
name = L["Hide Blizzard Frame"],
|
name = L["Hide Blizzard Frame"],
|
||||||
desc = L["Hides Blizzard Rune frame and disables all events related to it"],
|
desc = L["Hides Blizzard frame and disables all events related to it.\n\nNOTE: Blizzard attaches this UI to the player's unitframe, so if you have that hidden in PlayerHealth, then this won't do anything."],
|
||||||
get = function()
|
get = function()
|
||||||
return self.moduleSettings.hideBlizz
|
return self.moduleSettings.hideBlizz
|
||||||
end,
|
end,
|
||||||
@ -110,7 +110,7 @@ function Totems.prototype:GetOptions()
|
|||||||
end,
|
end,
|
||||||
order = 32
|
order = 32
|
||||||
}
|
}
|
||||||
--]]
|
|
||||||
opts["displayMode"] = {
|
opts["displayMode"] = {
|
||||||
type = 'select',
|
type = 'select',
|
||||||
name = L["Totem orientation"],
|
name = L["Totem orientation"],
|
||||||
@ -193,7 +193,7 @@ function Totems.prototype:GetDefaultSettings()
|
|||||||
defaults["totemFontSize"] = 20
|
defaults["totemFontSize"] = 20
|
||||||
defaults["totemMode"] = "Graphical"
|
defaults["totemMode"] = "Graphical"
|
||||||
defaults["usesDogTagStrings"] = false
|
defaults["usesDogTagStrings"] = false
|
||||||
defaults["hideBlizz"] = true
|
defaults["hideBlizz"] = IceHUD.CanHookDestroyTotem
|
||||||
defaults["alwaysFullAlpha"] = false
|
defaults["alwaysFullAlpha"] = false
|
||||||
defaults["displayMode"] = "Horizontal"
|
defaults["displayMode"] = "Horizontal"
|
||||||
defaults["cooldownMode"] = "Cooldown"
|
defaults["cooldownMode"] = "Cooldown"
|
||||||
@ -265,7 +265,7 @@ end
|
|||||||
function Totems.prototype:CreateFrame()
|
function Totems.prototype:CreateFrame()
|
||||||
Totems.super.prototype.CreateFrame(self)
|
Totems.super.prototype.CreateFrame(self)
|
||||||
|
|
||||||
self.frame:SetFrameStrata("BACKGROUND")
|
self.frame:SetFrameStrata(IceHUD.IceCore:DetermineStrata("BACKGROUND"))
|
||||||
self.frame:SetWidth(self.totemSize*self.numTotems)
|
self.frame:SetWidth(self.totemSize*self.numTotems)
|
||||||
self.frame:SetHeight(1)
|
self.frame:SetHeight(1)
|
||||||
self.frame:ClearAllPoints()
|
self.frame:ClearAllPoints()
|
||||||
@ -349,7 +349,7 @@ function Totems.prototype:CreateTotem(i, name)
|
|||||||
self.frame.graphical[i].totem:SetAllPoints(self.frame.graphical[i])
|
self.frame.graphical[i].totem:SetAllPoints(self.frame.graphical[i])
|
||||||
end
|
end
|
||||||
|
|
||||||
self.frame.graphical[i]:SetFrameStrata("BACKGROUND")
|
self.frame.graphical[i]:SetFrameStrata(IceHUD.IceCore:DetermineStrata("BACKGROUND"))
|
||||||
self.frame.graphical[i]:SetWidth(self.totemSize)
|
self.frame.graphical[i]:SetWidth(self.totemSize)
|
||||||
self.frame.graphical[i]:SetHeight(self.totemSize)
|
self.frame.graphical[i]:SetHeight(self.totemSize)
|
||||||
|
|
||||||
@ -380,7 +380,7 @@ function Totems.prototype:CreateTotem(i, name)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
self.frame.graphical[i].cd:SetFrameStrata("BACKGROUND")
|
self.frame.graphical[i].cd:SetFrameStrata(IceHUD.IceCore:DetermineStrata("BACKGROUND"))
|
||||||
self.frame.graphical[i].cd:SetFrameLevel(self.frame.graphical[i]:GetFrameLevel()+1)
|
self.frame.graphical[i].cd:SetFrameLevel(self.frame.graphical[i]:GetFrameLevel()+1)
|
||||||
self.frame.graphical[i].cd:ClearAllPoints()
|
self.frame.graphical[i].cd:ClearAllPoints()
|
||||||
self.frame.graphical[i].cd:SetAllPoints(self.frame.graphical[i])
|
self.frame.graphical[i].cd:SetAllPoints(self.frame.graphical[i])
|
||||||
|
@ -3,6 +3,25 @@ local Vengeance = IceCore_CreateClass(IceUnitBar)
|
|||||||
|
|
||||||
local VENGEANCE_SPELL_ID = 93098
|
local VENGEANCE_SPELL_ID = 93098
|
||||||
|
|
||||||
|
local GetSpellInfo = GetSpellInfo
|
||||||
|
if not GetSpellInfo and C_Spell and C_Spell.GetSpellInfo then
|
||||||
|
GetSpellInfo = function(spellID)
|
||||||
|
if not spellID then
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
|
||||||
|
local spellInfo = C_Spell.GetSpellInfo(spellID)
|
||||||
|
if spellInfo then
|
||||||
|
return spellInfo.name, nil, spellInfo.iconID, spellInfo.castTime, spellInfo.minRange, spellInfo.maxRange, spellInfo.spellID, spellInfo.originalIconID
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local GetSpellName = GetSpellInfo
|
||||||
|
if C_Spell and C_Spell.GetSpellName then
|
||||||
|
GetSpellName = C_Spell.GetSpellName
|
||||||
|
end
|
||||||
|
|
||||||
Vengeance.prototype.current = nil
|
Vengeance.prototype.current = nil
|
||||||
Vengeance.prototype.max = nil
|
Vengeance.prototype.max = nil
|
||||||
|
|
||||||
@ -50,43 +69,25 @@ end
|
|||||||
-- scan the tooltip and extract the vengeance value
|
-- scan the tooltip and extract the vengeance value
|
||||||
do
|
do
|
||||||
-- making these local as they're not used anywhere else
|
-- making these local as they're not used anywhere else
|
||||||
local regions = {}
|
local spellName = GetSpellName(VENGEANCE_SPELL_ID)
|
||||||
local spellName = GetSpellInfo(VENGEANCE_SPELL_ID)
|
|
||||||
local tooltipBuffer = CreateFrame("GameTooltip","tooltipBuffer",nil,"GameTooltipTemplate")
|
|
||||||
tooltipBuffer:SetOwner(WorldFrame, "ANCHOR_NONE")
|
|
||||||
|
|
||||||
-- suggested by Antiarc as a way to repopulate the same table instead of repeatedly creating a new one
|
|
||||||
local function makeTable(t, ...)
|
|
||||||
wipe(t)
|
|
||||||
for i = 1, select("#", ...) do
|
|
||||||
t[i] = select(i, ...)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
function Vengeance.prototype:UpdateCurrent(event, unit)
|
function Vengeance.prototype:UpdateCurrent(event, unit)
|
||||||
if (unit and (unit ~= self.unit)) then
|
if (unit and (unit ~= self.unit)) then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
local name = UnitAura(self.unit, spellName)
|
if C_UnitAuras and C_UnitAuras.GetAuraDataBySpellName then
|
||||||
if name then
|
local data = C_UnitAuras.GetAuraDataBySpellName(self.unit, spellName)
|
||||||
-- Buff found, copy it into the buffer for scanning
|
if data and data.points and #data.points > 0 then
|
||||||
tooltipBuffer:ClearLines()
|
self.current = (data and data.points and #data.points > 0) and data.points[1] or 0
|
||||||
tooltipBuffer:SetUnitBuff(self.unit, name)
|
|
||||||
|
|
||||||
-- Grab all regions, stuff em into our table
|
|
||||||
makeTable(regions, tooltipBuffer:GetRegions())
|
|
||||||
|
|
||||||
-- Convert FontStrings to strings, replace anything else with ""
|
|
||||||
for i=1, #regions do
|
|
||||||
local region = regions[i]
|
|
||||||
regions[i] = region:GetObjectType() == "FontString" and region:GetText() or ""
|
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Find the number, save it
|
|
||||||
self.current = tonumber(string.match(table.concat(regions),"%d+")) or 0
|
|
||||||
else
|
else
|
||||||
self.current = 0
|
local _, idx = IceHUD:GetBuffCount(self.unit, spellName, true, true)
|
||||||
|
if idx then
|
||||||
|
self.current = select(17, IceHUD.UnitAura(self.unit, idx))
|
||||||
|
else
|
||||||
|
self.current = 0
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
self:Update()
|
self:Update()
|
||||||
|
151
this_version.md
151
this_version.md
@ -1,5 +1,156 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
v1.14.42:
|
||||||
|
|
||||||
|
- Fix Vengeance module in Cataclysm Classic
|
||||||
|
|
||||||
|
v1.14.41:
|
||||||
|
|
||||||
|
- Fix swapped DK runes in Cataclysm Classic
|
||||||
|
- Possible fix for castbar flashing sometimes when set to "Never"
|
||||||
|
- Fix IceHUD Vigor bar not showing up for some types of dragons such as the Algarian Stormrider
|
||||||
|
|
||||||
|
v1.14.40:
|
||||||
|
|
||||||
|
- Update TOC for Dragonflight to 10.2.7
|
||||||
|
|
||||||
|
v1.14.39:
|
||||||
|
|
||||||
|
- Support Cataclysm Classic 4.4.0
|
||||||
|
|
||||||
|
v1.14.38:
|
||||||
|
|
||||||
|
- Update TOCs
|
||||||
|
|
||||||
|
v1.14.37:
|
||||||
|
|
||||||
|
- Update LibRangeCheck version to address taint issues (wowace ticket #353)
|
||||||
|
|
||||||
|
v1.14.36:
|
||||||
|
|
||||||
|
- Really fix IceHUD stomping on other uses of the PowerBarContainer such as the Digging bar for the Archive event.
|
||||||
|
|
||||||
|
v1.14.35:
|
||||||
|
|
||||||
|
- Fix IceHUD stomping on other uses of the PowerBarContainer such as the Digging bar for the Archive event.
|
||||||
|
|
||||||
|
v1.14.34:
|
||||||
|
|
||||||
|
- Fix Vigor showing up sometimes when it shouldn't.
|
||||||
|
|
||||||
|
v1.14.33:
|
||||||
|
|
||||||
|
- Update TOC for Dragonflight to 10.2.5
|
||||||
|
|
||||||
|
v1.14.32:
|
||||||
|
|
||||||
|
- Enable GlobalCoolDown module in Classic Era 1.15.0+
|
||||||
|
- Enable tracking target buffs/debuffs in Classic Era 1.15.0+
|
||||||
|
|
||||||
|
v1.14.31:
|
||||||
|
|
||||||
|
- Fix nil concatenation error (wowace ticket #351)
|
||||||
|
|
||||||
|
v1.14.30:
|
||||||
|
|
||||||
|
- Update Classic-era TOC for 1.15.0
|
||||||
|
- Enable TargetCastBar module on Classic-era 1.15+
|
||||||
|
|
||||||
|
v1.14.29:
|
||||||
|
|
||||||
|
- Fix Stagger bar error for 10.2.0 (wowace ticket #348)
|
||||||
|
|
||||||
|
v1.14.28:
|
||||||
|
|
||||||
|
- Update TOC for Dragonflight to 10.2.0
|
||||||
|
|
||||||
|
v1.14.27:
|
||||||
|
|
||||||
|
- Update TOC for Dragonflight to 10.1.7
|
||||||
|
|
||||||
|
v1.14.26:
|
||||||
|
|
||||||
|
- Update TOC for classic-era to 1.14.4
|
||||||
|
|
||||||
|
v1.14.25:
|
||||||
|
|
||||||
|
- Fixed lua error that would appear when targetting webwrapped players in heroic alpha/beta titan rune dungeons.
|
||||||
|
- Added ability to adjust strata globally.
|
||||||
|
|
||||||
|
v1.14.24:
|
||||||
|
|
||||||
|
- Fixed an error when targeting a player and right-clicking a module that should show a menu in 10.1.5.
|
||||||
|
|
||||||
|
v1.14.23:
|
||||||
|
|
||||||
|
- Update Dragonflight TOC for 10.1.5
|
||||||
|
|
||||||
|
v1.14.22:
|
||||||
|
|
||||||
|
- Fixed reported issue with a Lua error on Wrath Classic clients. https://www.wowace.com/projects/ice-hud/issues/344
|
||||||
|
- Fixed Vigor module not working when riding Grotto Netherwing Drake (and theoretically all future Dragonriding mount types).
|
||||||
|
- Updated TOC for Wrath-Classic.
|
||||||
|
|
||||||
|
v1.14.21:
|
||||||
|
|
||||||
|
- Increased maximum scale/zoom to 400%, by request.
|
||||||
|
- Fixed TargetCC/FocusCC modules on Wrath Classic.
|
||||||
|
- Fixed disabled Buff/Debuff Watchers showing a static gray bar when set to When Missing or Always display modes.
|
||||||
|
- Fixed Buff/Debuff Watchers showing an empty bar when set to Missing mode. If the background was disabled, this looked like just a floating spell icon.
|
||||||
|
- Fixed spell icons sometimes not showing up for custom bars until the tracked spell had been cast once.
|
||||||
|
|
||||||
|
v1.14.20:
|
||||||
|
|
||||||
|
- Added Winding Slitherdrake as recognized for the Dragonriding Vigor module
|
||||||
|
|
||||||
|
v1.14.19:
|
||||||
|
|
||||||
|
- Updated TOCs for 10.1.0
|
||||||
|
- Added addon icon for 10.1.0 clients
|
||||||
|
- Fixed Dragonriding Vigor charges not showing up in 10.1.0
|
||||||
|
- Fixed Vigor not always updating correctly when loading into the game or a new zone
|
||||||
|
|
||||||
|
v1.14.18:
|
||||||
|
|
||||||
|
- Fixed Runic Power showing on a scale of 0-1000+ instead of 0-100+ with DogTags off
|
||||||
|
- Added option (enabled by default) to hide mod during cataloging.
|
||||||
|
- Fixed "Hide Blizzard Buffs" option on PlayerInfo causing errors and "?" icons when toggling off.
|
||||||
|
- Also hide Debuff frame if it exists (Dragonflight+) when enabling "Hide Blizzard Buffs" in the PlayerInfo module.
|
||||||
|
|
||||||
|
v1.14.17:
|
||||||
|
|
||||||
|
- Updated TOCs for 10.0.7
|
||||||
|
|
||||||
|
v1.14.16:
|
||||||
|
|
||||||
|
- Exposed the option in the Totems module to hide the Blizzard Totems frame or not, and changed the default value to not hide when on a version of the game that doesn't support right-clicking to destroy totems (any version after Wrath). This enables using the default Totems frame to cancel totems early.
|
||||||
|
- Fixed a reported error when playing Darkmoon Faire games.
|
||||||
|
- Added a few more Polymorph ranks to TargetCC for Classic. I'm sure there are more missing.
|
||||||
|
|
||||||
|
v1.14.15:
|
||||||
|
|
||||||
|
- Updated TOCs for 10.0.5
|
||||||
|
|
||||||
|
v1.14.14:
|
||||||
|
|
||||||
|
- Fixed PlayerAlternatePower bar showing up when it shouldn't have, such as when casting Power Word: Shield before ever having done anything to trigger a game-level "alternate power" event, such as mounting a Dragonriding mount.
|
||||||
|
|
||||||
|
v1.14.13:
|
||||||
|
|
||||||
|
- Fixed Vigor module hiding default Climbing, Film, etc. UIs. (wowace ticket #336)
|
||||||
|
|
||||||
|
v1.14.12:
|
||||||
|
|
||||||
|
- Added a module for showing Dragonriding Vigor points.
|
||||||
|
|
||||||
|
v1.14.11:
|
||||||
|
|
||||||
|
- Packaged a new version of LibDogTag-Unit to fix the Guild roster resetting its scroll position every 20 seconds.
|
||||||
|
|
||||||
|
v1.14.10:
|
||||||
|
|
||||||
|
- Fix an error in TargetTargetHealth/Mana and CustomHealth when Low Threshold Color was checked and Scale by Health % was un-checked.
|
||||||
|
|
||||||
v1.14.9:
|
v1.14.9:
|
||||||
|
|
||||||
- Fix Low Threshold to be usable even when Color By Health/Mana % is disabled. (ticket #334)
|
- Fix Low Threshold to be usable even when Color By Health/Mana % is disabled. (ticket #334)
|
||||||
|
Reference in New Issue
Block a user