mirror of
https://github.com/parnic/ice-hud.git
synced 2025-06-16 22:51:53 -05:00
Compare commits
71 Commits
Author | SHA1 | Date | |
---|---|---|---|
d9218343d5 | |||
e9020becc0 | |||
c0771ea8f4 | |||
5771f990c7 | |||
702ebbd86a | |||
f214c945af | |||
debaf7f1ff | |||
d05c1dac18 | |||
aec7852011 | |||
8fef3a2b8c | |||
2646481d11 | |||
c75ffcc6fc | |||
b487aaf351 | |||
2235364df9 | |||
a8b6f53a68 | |||
ba2f873b60 | |||
7221e78290 | |||
97d04c174a | |||
6f0ddb7f6d | |||
0188a3fc0b | |||
a3a6cbb7f4 | |||
9ed739fb1b | |||
ab1ad06185 | |||
7b3d910956 | |||
6906f3545d | |||
5d718a4d07 | |||
e7ddb66531 | |||
b328ad0739 | |||
b9cfe48d03 | |||
f9b4d7acbb | |||
e15dc1d226 | |||
c49e0ad84a | |||
e219dac245 | |||
975fd3fbf4 | |||
1b3b9a1bb9 | |||
6610de6814 | |||
45a8f66249 | |||
e1e216d9dd | |||
316ec05e78 | |||
3c3088aa16 | |||
e54c645b99 | |||
5fbf85811e | |||
9b5df60efa | |||
efc25bdb9c | |||
a9e96ca151 | |||
2a98dc961d | |||
3aef209816 | |||
c4adadb301 | |||
7421f916ad | |||
45686f5a36 | |||
30f3210d30 | |||
fe656f463d | |||
b9d1447698 | |||
2c93dbc365 | |||
e7717731cb | |||
fa64f46bc1 | |||
b6fe6b215d | |||
976047a9bc | |||
ad72976b24 | |||
4d20a073ae | |||
776bbf7ab3 | |||
7249f4ebcd | |||
8e13a8075d | |||
fc49de127a | |||
c0ca456c9c | |||
2126dc4bce | |||
2415f9a0e6 | |||
fc58eec85e | |||
ec38972f8c | |||
1dfbd13d67 | |||
d946fe36dd |
8
.pkgmeta
8
.pkgmeta
@ -43,11 +43,9 @@ externals:
|
|||||||
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
|
||||||
libs/LibDogTag-3.0:
|
libs/LibDogTag-3.0:
|
||||||
url: svn://svn.wowace.com/wow/libdogtag-3-0/mainline/trunk
|
url: git://git.wowace.com/wow/libdogtag-3-0/mainline.git
|
||||||
tag: latest
|
|
||||||
libs/LibDogTag-Unit-3.0:
|
libs/LibDogTag-Unit-3.0:
|
||||||
url: svn://svn.wowace.com/wow/libdogtag-unit-3-0/mainline/trunk
|
url: git://git.wowace.com/wow/libdogtag-unit-3-0/mainline.git
|
||||||
tag: latest
|
|
||||||
libs/LibDBIcon-1.0:
|
libs/LibDBIcon-1.0:
|
||||||
url: svn://svn.wowace.com/wow/libdbicon-1-0/mainline/trunk/LibDBIcon-1.0
|
url: svn://svn.wowace.com/wow/libdbicon-1-0/mainline/trunk/LibDBIcon-1.0
|
||||||
libs/LibDualSpec-1.0:
|
libs/LibDualSpec-1.0:
|
||||||
@ -62,4 +60,4 @@ move-folders:
|
|||||||
IceHUD/IceHUD_Options: IceHUD_Options
|
IceHUD/IceHUD_Options: IceHUD_Options
|
||||||
|
|
||||||
tools-used:
|
tools-used:
|
||||||
- libdatabroker-1-1
|
- libdatabroker-1-1
|
||||||
|
@ -1140,7 +1140,7 @@ function IceBarElement.prototype:Flip(side)
|
|||||||
end
|
end
|
||||||
|
|
||||||
-- Rokiyo: bar is the only required argument, scale & top are optional
|
-- Rokiyo: bar is the only required argument, scale & top are optional
|
||||||
function IceBarElement.prototype:SetBarCoord(barFrame, scale, top)
|
function IceBarElement.prototype:SetBarCoord(barFrame, scale, top, overrideReverse)
|
||||||
if not scale then scale = 0 end
|
if not scale then scale = 0 end
|
||||||
scale = IceHUD:Clamp(scale, 0, 1)
|
scale = IceHUD:Clamp(scale, 0, 1)
|
||||||
|
|
||||||
@ -1150,7 +1150,12 @@ function IceBarElement.prototype:SetBarCoord(barFrame, scale, top)
|
|||||||
local min_y, max_y
|
local min_y, max_y
|
||||||
local offset_y = 0
|
local offset_y = 0
|
||||||
|
|
||||||
if IceHUD:xor(self.moduleSettings.reverse, top) then
|
local reverse = self.moduleSettings.reverse
|
||||||
|
if overrideReverse then
|
||||||
|
reverse = false
|
||||||
|
end
|
||||||
|
|
||||||
|
if IceHUD:xor(reverse, top) then
|
||||||
if self.moduleSettings.inverse == "INVERSE" then
|
if self.moduleSettings.inverse == "INVERSE" then
|
||||||
min_y = 1 - scale
|
min_y = 1 - scale
|
||||||
max_y = 1
|
max_y = 1
|
||||||
|
@ -36,6 +36,7 @@ function IceCastBar.prototype:Enable(core)
|
|||||||
IceCastBar.super.prototype.Enable(self, core)
|
IceCastBar.super.prototype.Enable(self, core)
|
||||||
|
|
||||||
self:RegisterEvent("UNIT_SPELLCAST_SENT", "SpellCastSent") -- "player", spell, rank, target
|
self:RegisterEvent("UNIT_SPELLCAST_SENT", "SpellCastSent") -- "player", spell, rank, target
|
||||||
|
self:RegisterEvent("CURRENT_SPELL_CAST_CHANGED", "SpellCastChanged")
|
||||||
self:RegisterEvent("UNIT_SPELLCAST_START", "SpellCastStart") -- unit, spell, rank
|
self:RegisterEvent("UNIT_SPELLCAST_START", "SpellCastStart") -- unit, spell, rank
|
||||||
self:RegisterEvent("UNIT_SPELLCAST_STOP", "SpellCastStop") -- unit, spell, rank
|
self:RegisterEvent("UNIT_SPELLCAST_STOP", "SpellCastStop") -- unit, spell, rank
|
||||||
|
|
||||||
@ -256,7 +257,7 @@ end
|
|||||||
function IceCastBar.prototype:MyOnUpdate()
|
function IceCastBar.prototype:MyOnUpdate()
|
||||||
-- safety catch
|
-- safety catch
|
||||||
if (self.action == IceCastBar.Actions.None) then
|
if (self.action == IceCastBar.Actions.None) then
|
||||||
IceHUD:Debug("Stopping action ", self.action)
|
--IceHUD:Debug("Stopping action ", self.action)
|
||||||
self:StopBar()
|
self:StopBar()
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
@ -414,9 +415,12 @@ end
|
|||||||
|
|
||||||
function IceCastBar.prototype:SpellCastSent(event, unit, spell, rank, target)
|
function IceCastBar.prototype:SpellCastSent(event, unit, spell, rank, target)
|
||||||
if (unit ~= self.unit) then return end
|
if (unit ~= self.unit) then return end
|
||||||
--IceHUD:Debug("SpellCastSent", unit, spell, rank, target)
|
IceHUD:Debug("SpellCastSent", unit, spell, rank, target)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function IceCastBar.prototype:SpellCastChanged(event, arg1)
|
||||||
|
IceHUD:Debug("SpellCastChanged", arg1)
|
||||||
|
end
|
||||||
|
|
||||||
function IceCastBar.prototype:SpellCastStart(event, unit, spell, rank)
|
function IceCastBar.prototype:SpellCastStart(event, unit, spell, rank)
|
||||||
if (unit ~= self.unit) then return end
|
if (unit ~= self.unit) then return end
|
||||||
|
55
IceCore.lua
55
IceCore.lua
@ -93,6 +93,7 @@ function IceCore.prototype:SetupDefaults()
|
|||||||
TextDecoration = "Shadow",
|
TextDecoration = "Shadow",
|
||||||
|
|
||||||
bHideDuringPetBattles = true,
|
bHideDuringPetBattles = true,
|
||||||
|
bHideInBarberShop = true,
|
||||||
},
|
},
|
||||||
global = {
|
global = {
|
||||||
lastRunVersion = 0,
|
lastRunVersion = 0,
|
||||||
@ -141,7 +142,7 @@ function IceCore.prototype:CheckDisplayUpdateMessage()
|
|||||||
thisVersion = @project-date-integer@
|
thisVersion = @project-date-integer@
|
||||||
--@end-non-debug@]===]
|
--@end-non-debug@]===]
|
||||||
--@debug@
|
--@debug@
|
||||||
thisVersion = 9999
|
thisVersion = 99999999999999
|
||||||
--@end-debug@
|
--@end-debug@
|
||||||
if self.accountSettings.lastRunVersion < thisVersion then
|
if self.accountSettings.lastRunVersion < thisVersion then
|
||||||
if self.accountSettings.lastRunVersion < 549 then
|
if self.accountSettings.lastRunVersion < 549 then
|
||||||
@ -166,6 +167,12 @@ function IceCore.prototype:CheckDisplayUpdateMessage()
|
|||||||
self.settings.modules["LacerateCount"] = {}
|
self.settings.modules["LacerateCount"] = {}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
if self.accountSettings.lastRunVersion <= 20160527053225 then
|
||||||
|
if self.settings.modules["DruidMana"] ~= nil then
|
||||||
|
self.settings.modules["PlayerAltMana"] = self.settings.modules["DruidMana"]
|
||||||
|
self.settings.modules["DruidMana"] = nil
|
||||||
|
end
|
||||||
|
end
|
||||||
self.accountSettings.lastRunVersion = thisVersion
|
self.accountSettings.lastRunVersion = thisVersion
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -202,31 +209,25 @@ function IceCore.prototype:Enable(userToggle)
|
|||||||
end
|
end
|
||||||
|
|
||||||
for k,v in pairs(self.settings.modules) do
|
for k,v in pairs(self.settings.modules) do
|
||||||
|
local newModule
|
||||||
|
|
||||||
if self.settings.modules[k].customBarType == "Bar" and IceCustomBar ~= nil then
|
if self.settings.modules[k].customBarType == "Bar" and IceCustomBar ~= nil then
|
||||||
local newBar
|
newModule = IceCustomBar:new()
|
||||||
newBar = IceCustomBar:new()
|
|
||||||
newBar.elementName = k
|
|
||||||
self:AddNewDynamicModule(newBar, true)
|
|
||||||
elseif self.settings.modules[k].customBarType == "Counter" and IceCustomCount ~= nil then
|
elseif self.settings.modules[k].customBarType == "Counter" and IceCustomCount ~= nil then
|
||||||
local newCounter
|
newModule = IceCustomCount:new()
|
||||||
newCounter = IceCustomCount:new()
|
elseif self.settings.modules[k].customBarType == "CounterBar" and IceCustomCounterBar ~= nil then
|
||||||
newCounter.elementName = k
|
newModule = IceCustomCounterBar:new()
|
||||||
self:AddNewDynamicModule(newCounter, true)
|
|
||||||
elseif self.settings.modules[k].customBarType == "CD" and IceCustomCDBar ~= nil then
|
elseif self.settings.modules[k].customBarType == "CD" and IceCustomCDBar ~= nil then
|
||||||
local newCD
|
newModule = IceCustomCDBar:new()
|
||||||
newCD = IceCustomCDBar:new()
|
|
||||||
newCD.elementName = k
|
|
||||||
self:AddNewDynamicModule(newCD, true)
|
|
||||||
elseif self.settings.modules[k].customBarType == "Health" and IceCustomHealth ~= nil then
|
elseif self.settings.modules[k].customBarType == "Health" and IceCustomHealth ~= nil then
|
||||||
local newHealth
|
newModule = IceCustomHealth:new()
|
||||||
newHealth = IceCustomHealth:new()
|
|
||||||
newHealth.elementName = k
|
|
||||||
self:AddNewDynamicModule(newHealth, true)
|
|
||||||
elseif self.settings.modules[k].customBarType == "Mana" and IceCustomMana ~= nil then
|
elseif self.settings.modules[k].customBarType == "Mana" and IceCustomMana ~= nil then
|
||||||
local newMana
|
newModule = IceCustomMana:new()
|
||||||
newMana = IceCustomMana:new()
|
end
|
||||||
newMana.elementName = k
|
|
||||||
self:AddNewDynamicModule(newMana, true)
|
if newModule ~= nil then
|
||||||
|
newModule.elementName = k
|
||||||
|
self:AddNewDynamicModule(newModule, true)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -244,6 +245,8 @@ function IceCore.prototype:Enable(userToggle)
|
|||||||
|
|
||||||
self.IceHUDFrame:RegisterEvent("PET_BATTLE_OPENING_START")
|
self.IceHUDFrame:RegisterEvent("PET_BATTLE_OPENING_START")
|
||||||
self.IceHUDFrame:RegisterEvent("PET_BATTLE_OVER")
|
self.IceHUDFrame:RegisterEvent("PET_BATTLE_OVER")
|
||||||
|
self.IceHUDFrame:RegisterEvent("BARBER_SHOP_OPEN")
|
||||||
|
self.IceHUDFrame:RegisterEvent("BARBER_SHOP_CLOSE")
|
||||||
self.IceHUDFrame:SetScript("OnEvent", function(self, event, ...)
|
self.IceHUDFrame:SetScript("OnEvent", function(self, event, ...)
|
||||||
if (event == "PET_BATTLE_OPENING_START") then
|
if (event == "PET_BATTLE_OPENING_START") then
|
||||||
if IceHUD.IceCore.settings.bHideDuringPetBattles then
|
if IceHUD.IceCore.settings.bHideDuringPetBattles then
|
||||||
@ -253,6 +256,14 @@ function IceCore.prototype:Enable(userToggle)
|
|||||||
if IceHUD.IceCore.settings.bHideDuringPetBattles then
|
if IceHUD.IceCore.settings.bHideDuringPetBattles then
|
||||||
self:Show()
|
self:Show()
|
||||||
end
|
end
|
||||||
|
elseif (event == "BARBER_SHOP_OPEN") then
|
||||||
|
if IceHUD.IceCore.settings.bHideInBarberShop then
|
||||||
|
self:Hide()
|
||||||
|
end
|
||||||
|
elseif (event == "BARBER_SHOP_CLOSE") then
|
||||||
|
if IceHUD.IceCore.settings.bHideInBarberShop then
|
||||||
|
self:Show()
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
@ -489,6 +500,8 @@ function IceCore.prototype:Disable(userToggle)
|
|||||||
|
|
||||||
self.IceHUDFrame:UnregisterEvent("PET_BATTLE_OPENING_START")
|
self.IceHUDFrame:UnregisterEvent("PET_BATTLE_OPENING_START")
|
||||||
self.IceHUDFrame:UnregisterEvent("PET_BATTLE_OVER")
|
self.IceHUDFrame:UnregisterEvent("PET_BATTLE_OVER")
|
||||||
|
self.IceHUDFrame:UnregisterEvent("BARBER_SHOP_OPEN")
|
||||||
|
self.IceHUDFrame:UnregisterEvent("BARBER_SHOP_CLOSE")
|
||||||
self.IceHUDFrame:SetScript("OnEvent", nil)
|
self.IceHUDFrame:SetScript("OnEvent", nil)
|
||||||
|
|
||||||
self.enabled = false
|
self.enabled = false
|
||||||
|
@ -130,6 +130,8 @@ function IceElement.prototype:GetBarTypeDescription(barType)
|
|||||||
retval = L["(De)Buff watcher"]
|
retval = L["(De)Buff watcher"]
|
||||||
elseif barType == "Counter" then
|
elseif barType == "Counter" then
|
||||||
retval = L["Counter"]
|
retval = L["Counter"]
|
||||||
|
elseif barType == "CounterBar" then
|
||||||
|
retval = L["CounterBar"]
|
||||||
elseif barType == "Health" then
|
elseif barType == "Health" then
|
||||||
retval = HEALTH
|
retval = HEALTH
|
||||||
elseif barType == "Mana" then
|
elseif barType == "Mana" then
|
||||||
|
32
IceHUD.lua
32
IceHUD.lua
@ -20,7 +20,7 @@ IceHUD.WowVer = select(4, GetBuildInfo())
|
|||||||
|
|
||||||
IceHUD.validBarList = { "Bar", "HiBar", "RoundBar", "ColorBar", "RivetBar", "RivetBar2", "CleanCurves", "GlowArc",
|
IceHUD.validBarList = { "Bar", "HiBar", "RoundBar", "ColorBar", "RivetBar", "RivetBar2", "CleanCurves", "GlowArc",
|
||||||
"BloodGlaives", "ArcHUD", "FangRune", "DHUD", "CleanCurvesOut", "CleanTank", "PillTank", "GemTank" }
|
"BloodGlaives", "ArcHUD", "FangRune", "DHUD", "CleanCurvesOut", "CleanTank", "PillTank", "GemTank" }
|
||||||
IceHUD.validCustomModules = {Bar="Buff/Debuff watcher", Counter="Buff/Debuff stack counter", CD="Cooldown bar", Health="Health bar", Mana="Mana bar"}
|
IceHUD.validCustomModules = {Bar="Buff/Debuff watcher", Counter="Buff/Debuff stack counter", CD="Cooldown bar", Health="Health bar", Mana="Mana bar", CounterBar="Stack count bar"}
|
||||||
|
|
||||||
--@debug@
|
--@debug@
|
||||||
IceHUD.optionsLoaded = true
|
IceHUD.optionsLoaded = true
|
||||||
@ -78,6 +78,21 @@ StaticPopupDialogs["ICEHUD_CUSTOM_COUNTER_CREATED"] =
|
|||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
StaticPopupDialogs["ICEHUD_CUSTOM_COUNTER_BAR_CREATED"] =
|
||||||
|
{
|
||||||
|
text = L["A custom counter bar has been created and can be configured through Module Settings => MyCustomCounterBar. It is highly recommended that you change the bar name of this module so that it's easier to identify."],
|
||||||
|
button1 = OKAY,
|
||||||
|
timeout = 0,
|
||||||
|
whileDead = 1,
|
||||||
|
hideOnEscape = 0,
|
||||||
|
OnShow = function(self)
|
||||||
|
self:SetFrameStrata("TOOLTIP")
|
||||||
|
end,
|
||||||
|
OnHide = function(self)
|
||||||
|
self:SetFrameStrata("DIALOG")
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
||||||
StaticPopupDialogs["ICEHUD_CUSTOM_CD_CREATED"] =
|
StaticPopupDialogs["ICEHUD_CUSTOM_CD_CREATED"] =
|
||||||
{
|
{
|
||||||
text = L["A custom cooldown bar has been created and can be configured through Module Settings => MyCustomCD. It is highly recommended that you change the bar name of this module so that it's easier to identify."],
|
text = L["A custom cooldown bar has been created and can be configured through Module Settings => MyCustomCD. It is highly recommended that you change the bar name of this module so that it's easier to identify."],
|
||||||
@ -257,10 +272,10 @@ function IceHUD:OnEnable(isFirst)
|
|||||||
IceHUD_Options:OnLoad()
|
IceHUD_Options:OnLoad()
|
||||||
--@end-debug@
|
--@end-debug@
|
||||||
|
|
||||||
if isFirst then
|
-- if isFirst then
|
||||||
self:SetDebugging(self.IceCore:GetDebug())
|
self:SetDebugging(self.IceCore:GetDebug())
|
||||||
self.debugFrame = ChatFrame2
|
self.debugFrame = ChatFrame1
|
||||||
end
|
-- end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- add settings changes/updates here so that existing users don't lose their settings
|
-- add settings changes/updates here so that existing users don't lose their settings
|
||||||
@ -343,8 +358,12 @@ function IceHUD:LoadOptions()
|
|||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
function IceHUD:Debug(msg)
|
function IceHUD:Debug(...)
|
||||||
if self.debugging then
|
if self.debugging then
|
||||||
|
local msg = ""
|
||||||
|
for n=1,select('#', ...) do
|
||||||
|
msg = msg .. tostring(select(n, ...)) .. " "
|
||||||
|
end
|
||||||
self.debugFrame:AddMessage(msg)
|
self.debugFrame:AddMessage(msg)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -536,6 +555,9 @@ function IceHUD:CreateCustomModuleAndNotify(moduleKey, settings)
|
|||||||
elseif moduleKey == "Counter" then -- custom counter
|
elseif moduleKey == "Counter" then -- custom counter
|
||||||
newMod = IceCustomCount:new()
|
newMod = IceCustomCount:new()
|
||||||
popupMsg = "ICEHUD_CUSTOM_COUNTER_CREATED"
|
popupMsg = "ICEHUD_CUSTOM_COUNTER_CREATED"
|
||||||
|
elseif moduleKey == "CounterBar" then -- custom counter bar
|
||||||
|
newMod = IceCustomCounterBar:new()
|
||||||
|
popupMsg = "ICEHUD_CUSTOM_COUNTER_BAR_CREATED"
|
||||||
elseif moduleKey == "CD" then -- cooldown bar
|
elseif moduleKey == "CD" then -- cooldown bar
|
||||||
newMod = IceCustomCDBar:new()
|
newMod = IceCustomCDBar:new()
|
||||||
popupMsg = "ICEHUD_CUSTOM_CD_CREATED"
|
popupMsg = "ICEHUD_CUSTOM_CD_CREATED"
|
||||||
|
12
IceHUD.toc
12
IceHUD.toc
@ -1,4 +1,4 @@
|
|||||||
## Interface: 60100
|
## Interface: 70000
|
||||||
## 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
|
||||||
@ -6,9 +6,9 @@
|
|||||||
## Version: @project-version@
|
## Version: @project-version@
|
||||||
## 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
|
## 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
|
||||||
## X-Compatible-With: 50400
|
## X-Compatible-With: 60200
|
||||||
## X-Category: HUDs
|
## X-Category: HUDs
|
||||||
## X-Website: http://www.wowace.com/projects/ice-hud/
|
## X-Website: http://www.wowace.com/addons/ice-hud/
|
||||||
## X-WoWI-ID: 8149
|
## X-WoWI-ID: 8149
|
||||||
|
|
||||||
#@no-lib-strip@
|
#@no-lib-strip@
|
||||||
@ -26,6 +26,7 @@ IceElement.lua
|
|||||||
IceBarElement.lua
|
IceBarElement.lua
|
||||||
IceUnitBar.lua
|
IceUnitBar.lua
|
||||||
IceCastBar.lua
|
IceCastBar.lua
|
||||||
|
IceStackCounter.lua
|
||||||
|
|
||||||
# IceHUD modules
|
# IceHUD modules
|
||||||
# - Feel free to comment these out if you like
|
# - Feel free to comment these out if you like
|
||||||
@ -35,7 +36,6 @@ modules\TargetHealth.lua
|
|||||||
modules\TargetMana.lua
|
modules\TargetMana.lua
|
||||||
modules\PetHealth.lua
|
modules\PetHealth.lua
|
||||||
modules\PetMana.lua
|
modules\PetMana.lua
|
||||||
modules\DruidMana.lua
|
|
||||||
modules\TargetInfo.lua
|
modules\TargetInfo.lua
|
||||||
modules\TargetOfTarget.lua
|
modules\TargetOfTarget.lua
|
||||||
modules\ComboPoints.lua
|
modules\ComboPoints.lua
|
||||||
@ -59,6 +59,7 @@ modules\FocusThreat.lua
|
|||||||
modules\RangeCheck.lua
|
modules\RangeCheck.lua
|
||||||
modules\CustomBar.lua
|
modules\CustomBar.lua
|
||||||
modules\CustomCount.lua
|
modules\CustomCount.lua
|
||||||
|
modules\CustomCounterBar.lua
|
||||||
# - make sure PlayerInfo loads after TargetInfo since it inherits
|
# - make sure PlayerInfo loads after TargetInfo since it inherits
|
||||||
modules\PlayerInfo.lua
|
modules\PlayerInfo.lua
|
||||||
modules\PetInfo.lua
|
modules\PetInfo.lua
|
||||||
@ -81,12 +82,13 @@ modules\Vengeance.lua
|
|||||||
modules\Resolve.lua
|
modules\Resolve.lua
|
||||||
modules\PlayerAlternatePower.lua
|
modules\PlayerAlternatePower.lua
|
||||||
modules\HarmonyPower.lua
|
modules\HarmonyPower.lua
|
||||||
modules\MonkManaBar.lua
|
|
||||||
modules\ShadowOrbs.lua
|
modules\ShadowOrbs.lua
|
||||||
modules\TargetAbsorb.lua
|
modules\TargetAbsorb.lua
|
||||||
modules\PlayerAbsorb.lua
|
modules\PlayerAbsorb.lua
|
||||||
modules\FocusAbsorb.lua
|
modules\FocusAbsorb.lua
|
||||||
modules\Stagger.lua
|
modules\Stagger.lua
|
||||||
|
modules\PlayerAltMana.lua
|
||||||
|
modules\ArcaneCharges.lua
|
||||||
|
|
||||||
#@do-not-package@
|
#@do-not-package@
|
||||||
IceHUD_Options\Options.lua
|
IceHUD_Options\Options.lua
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
## Interface: 60100
|
## Interface: 70000
|
||||||
## Title: IceHUD |cff7fff7f-Options-|r
|
## Title: IceHUD |cff7fff7f-Options-|r
|
||||||
## Author: Parnic
|
## Author: Parnic
|
||||||
## Version: @project-version@
|
## Version: @project-version@
|
||||||
|
@ -374,7 +374,24 @@ IceHUD is not responsible for this countdown text and cannot control it. The 6.0
|
|||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
order = 34,
|
order = 34,
|
||||||
}
|
},
|
||||||
|
|
||||||
|
bHideInBarberShop = {
|
||||||
|
type = 'toggle',
|
||||||
|
name = L["Hide in barbershops"],
|
||||||
|
desc = L["This will hide the entire mod when interacting with a barbershop."],
|
||||||
|
width = 'double',
|
||||||
|
get = function()
|
||||||
|
return IceHUD.IceCore.settings.bHideInBarberShop
|
||||||
|
end,
|
||||||
|
set = function(info, value)
|
||||||
|
IceHUD.IceCore.settings.bHideInBarberShop = value
|
||||||
|
if not value then
|
||||||
|
IceHUD.IceCore.IceHUDFrame:Show()
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
order = 35,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
175
IceStackCounter.lua
Normal file
175
IceStackCounter.lua
Normal file
@ -0,0 +1,175 @@
|
|||||||
|
local L = LibStub("AceLocale-3.0"):GetLocale("IceHUD", false)
|
||||||
|
|
||||||
|
local validUnits = {"player", "target", "focus", "pet", "vehicle", "targettarget", "main hand weapon", "off hand weapon"}
|
||||||
|
local buffOrDebuff = {"buff", "debuff", "charges", "spell count"}
|
||||||
|
|
||||||
|
-- OVERRIDE
|
||||||
|
function IceStackCounter_GetOptions(frame, opts)
|
||||||
|
opts["customHeader"] = {
|
||||||
|
type = 'header',
|
||||||
|
name = L["Aura settings"],
|
||||||
|
order = 30.1,
|
||||||
|
}
|
||||||
|
|
||||||
|
opts["auraTarget"] = {
|
||||||
|
type = 'select',
|
||||||
|
values = validUnits,
|
||||||
|
name = L["Unit to track"],
|
||||||
|
desc = L["Select which unit that this bar should be looking for buffs/debuffs on"],
|
||||||
|
get = function(info)
|
||||||
|
return IceHUD:GetSelectValue(info, frame.moduleSettings.auraTarget)
|
||||||
|
end,
|
||||||
|
set = function(info, v)
|
||||||
|
frame.moduleSettings.auraTarget = info.option.values[v]
|
||||||
|
frame.unit = info.option.values[v]
|
||||||
|
frame:Redraw()
|
||||||
|
IceHUD:NotifyOptionsChange()
|
||||||
|
end,
|
||||||
|
disabled = function()
|
||||||
|
return not frame.moduleSettings.enabled or frame.moduleSettings.auraType == "charges" or frame.moduleSettings.auraType == "spell count"
|
||||||
|
end,
|
||||||
|
order = 30.4,
|
||||||
|
}
|
||||||
|
|
||||||
|
opts["auraType"] = {
|
||||||
|
type = 'select',
|
||||||
|
values = buffOrDebuff,
|
||||||
|
name = L["Buff or debuff?"],
|
||||||
|
desc = L["Whether we are tracking a buff or debuff"],
|
||||||
|
get = function(info)
|
||||||
|
return IceHUD:GetSelectValue(info, frame.moduleSettings.auraType)
|
||||||
|
end,
|
||||||
|
set = function(info, v)
|
||||||
|
frame.moduleSettings.auraType = info.option.values[v]
|
||||||
|
frame:Redraw()
|
||||||
|
end,
|
||||||
|
disabled = function()
|
||||||
|
return not frame.moduleSettings.enabled or frame.unit == "main hand weapon" or frame.unit == "off hand weapon"
|
||||||
|
end,
|
||||||
|
order = 30.5,
|
||||||
|
}
|
||||||
|
|
||||||
|
opts["auraName"] = {
|
||||||
|
type = 'input',
|
||||||
|
name = L["Aura to track"],
|
||||||
|
desc = L["Which buff/debuff this counter will be tracking. \n\nRemember to press ENTER after filling out this box with the name you want or it will not save."],
|
||||||
|
get = function()
|
||||||
|
return frame.moduleSettings.auraName
|
||||||
|
end,
|
||||||
|
set = function(info, v)
|
||||||
|
frame.moduleSettings.auraName = v
|
||||||
|
frame:Redraw()
|
||||||
|
end,
|
||||||
|
disabled = function()
|
||||||
|
return not frame.moduleSettings.enabled or frame.unit == "main hand weapon" or frame.unit == "off hand weapon"
|
||||||
|
end,
|
||||||
|
usage = "<which aura to track>",
|
||||||
|
order = 30.6,
|
||||||
|
}
|
||||||
|
|
||||||
|
opts["trackOnlyMine"] = {
|
||||||
|
type = 'toggle',
|
||||||
|
name = L["Only track auras by me"],
|
||||||
|
desc = L["Checking this means that only buffs or debuffs that the player applied will trigger this bar"],
|
||||||
|
get = function()
|
||||||
|
return frame.moduleSettings.onlyMine
|
||||||
|
end,
|
||||||
|
set = function(info, v)
|
||||||
|
frame.moduleSettings.onlyMine = v
|
||||||
|
frame:Redraw()
|
||||||
|
end,
|
||||||
|
disabled = function()
|
||||||
|
return not frame.moduleSettings.enabled or frame.unit == "main hand weapon" or frame.unit == "off hand weapon"
|
||||||
|
or frame.moduleSettings.auraType == "charges" or frame.moduleSettings.auraType == "spell count"
|
||||||
|
end,
|
||||||
|
order = 30.7,
|
||||||
|
}
|
||||||
|
|
||||||
|
opts["maxCount"] = {
|
||||||
|
type = 'input',
|
||||||
|
name = L["Maximum applications"],
|
||||||
|
desc = L["How many total applications of this buff/debuff can be applied. For example, only 5 sunders can ever be on a target, so this would be set to 5 for tracking Sunder.\n\nRemember to press ENTER after filling out this box with the name you want or it will not save."],
|
||||||
|
get = function()
|
||||||
|
return tostring(frame.moduleSettings.maxCount)
|
||||||
|
end,
|
||||||
|
set = function(info, v)
|
||||||
|
if not v or not tonumber(v) or tonumber(v) <= 0 then
|
||||||
|
v = 5
|
||||||
|
end
|
||||||
|
frame.moduleSettings.maxCount = tonumber(v)
|
||||||
|
frame:Redraw()
|
||||||
|
end,
|
||||||
|
disabled = function()
|
||||||
|
return not frame.moduleSettings.enabled or frame.moduleSettings.auraType == "charges"
|
||||||
|
end,
|
||||||
|
usage = "<the maximum number of valid applications>",
|
||||||
|
order = 30.9,
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
function IceStackCounter_GetMaxCount(frame)
|
||||||
|
if frame.moduleSettings.auraType == "charges" then
|
||||||
|
local _, max = GetSpellCharges(frame.moduleSettings.auraName)
|
||||||
|
return max or 1
|
||||||
|
else
|
||||||
|
return frame.moduleSettings.maxCount
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function IceStackCounter_GetDefaultSettings(defaults)
|
||||||
|
defaults["maxCount"] = 5
|
||||||
|
defaults["auraTarget"] = "player"
|
||||||
|
defaults["auraName"] = ""
|
||||||
|
defaults["onlyMine"] = true
|
||||||
|
defaults["auraType"] = "buff"
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
function IceStackCounter_Enable(frame)
|
||||||
|
frame:RegisterEvent("UNIT_AURA", "UpdateCustomCount")
|
||||||
|
frame:RegisterEvent("UNIT_PET", "UpdateCustomCount")
|
||||||
|
frame:RegisterEvent("PLAYER_PET_CHANGED", "UpdateCustomCount")
|
||||||
|
frame:RegisterEvent("PLAYER_FOCUS_CHANGED", "UpdateCustomCount")
|
||||||
|
frame:RegisterEvent("PLAYER_TARGET_CHANGED", "UpdateCustomCount")
|
||||||
|
frame:RegisterEvent("PLAYER_DEAD", "UpdateCustomCount")
|
||||||
|
frame:RegisterEvent("SPELL_UPDATE_CHARGES", "UpdateCustomCount")
|
||||||
|
|
||||||
|
frame.unit = frame.moduleSettings.auraTarget or "player"
|
||||||
|
|
||||||
|
if not tonumber(frame.moduleSettings.maxCount) or tonumber(frame.moduleSettings.maxCount) <= 0 then
|
||||||
|
frame.moduleSettings.maxCount = 5
|
||||||
|
frame:Redraw()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function IceStackCounter_GetCount(frame)
|
||||||
|
if not frame.moduleSettings.auraName then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local points
|
||||||
|
if IceHUD.IceCore:IsInConfigMode() then
|
||||||
|
points = tonumber(frame.moduleSettings.maxCount)
|
||||||
|
else
|
||||||
|
if frame.moduleSettings.auraType == "charges" then
|
||||||
|
points = GetSpellCharges(frame.moduleSettings.auraName) or 0
|
||||||
|
elseif frame.moduleSettings.auraType == "spell count" then
|
||||||
|
points = GetSpellCount(frame.moduleSettings.auraName) or 0
|
||||||
|
else
|
||||||
|
points = IceHUD:GetAuraCount(frame.moduleSettings.auraType == "buff" and "HELPFUL" or "HARMFUL",
|
||||||
|
frame.unit, frame.moduleSettings.auraName, frame.moduleSettings.onlyMine, true)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
frame.lastPoints = points
|
||||||
|
|
||||||
|
if (points == 0) then
|
||||||
|
points = nil
|
||||||
|
end
|
||||||
|
|
||||||
|
return points
|
||||||
|
end
|
||||||
|
|
||||||
|
function IceStackCounter_UseTargetAlpha(frame)
|
||||||
|
return frame.lastPoints ~= nil and frame.lastPoints > 0
|
||||||
|
end
|
@ -213,14 +213,18 @@ end
|
|||||||
function IceUnitBar.prototype:Update()
|
function IceUnitBar.prototype:Update()
|
||||||
IceUnitBar.super.prototype.Update(self)
|
IceUnitBar.super.prototype.Update(self)
|
||||||
|
|
||||||
self.tapped = UnitIsTapped(self.unit) and (not UnitIsTappedByPlayer(self.unit))
|
if IceHUD.WowVer < 70000 then
|
||||||
|
self.tapped = UnitIsTapped(self.unit) and (not UnitIsTappedByPlayer(self.unit))
|
||||||
|
else
|
||||||
|
self.tapped = UnitIsTapDenied(self.unit)
|
||||||
|
end
|
||||||
|
|
||||||
self.health = UnitHealth(self.unit)
|
self.health = UnitHealth(self.unit)
|
||||||
self.maxHealth = UnitHealthMax(self.unit)
|
self.maxHealth = UnitHealthMax(self.unit)
|
||||||
self.healthPercentage = self.maxHealth ~= 0 and (self.health/self.maxHealth) or 0
|
self.healthPercentage = self.maxHealth ~= 0 and (self.health/self.maxHealth) or 0
|
||||||
|
|
||||||
self.mana = UnitPower(self.unit)
|
self.mana = UnitPower(self.unit, UnitPowerType(self.unit))
|
||||||
self.maxMana = UnitPowerMax(self.unit)
|
self.maxMana = UnitPowerMax(self.unit, UnitPowerType(self.unit))
|
||||||
self.manaPercentage = self.maxMana ~= 0 and (self.mana/self.maxMana) or 0
|
self.manaPercentage = self.maxMana ~= 0 and (self.mana/self.maxMana) or 0
|
||||||
|
|
||||||
local locClass
|
local locClass
|
||||||
|
61
modules/ArcaneCharges.lua
Normal file
61
modules/ArcaneCharges.lua
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
local L = LibStub("AceLocale-3.0"):GetLocale("IceHUD", false)
|
||||||
|
local ArcaneCharges = IceCore_CreateClass(IceClassPowerCounter)
|
||||||
|
|
||||||
|
function ArcaneCharges.prototype:init()
|
||||||
|
ArcaneCharges.super.prototype.init(self, "ArcaneCharges")
|
||||||
|
|
||||||
|
self:SetDefaultColor("ArcaneChargesNumeric", 150, 150, 255)
|
||||||
|
|
||||||
|
self.unit = "player"
|
||||||
|
self.numericColor = "ArcaneChargesNumeric"
|
||||||
|
self.unitPower = SPELL_POWER_ARCANE_CHARGES
|
||||||
|
self.minLevel = 0
|
||||||
|
self.bTreatEmptyAsFull = true
|
||||||
|
self.runeWidth = self.runeHeight
|
||||||
|
self.requiredSpec = SPEC_MAGE_ARCANE
|
||||||
|
end
|
||||||
|
|
||||||
|
function ArcaneCharges.prototype:Enable(core)
|
||||||
|
self.numRunes = UnitPowerMax(self.unit, SPELL_POWER_ARCANE_CHARGES)
|
||||||
|
self.runeCoords = { }
|
||||||
|
for i = 1, self.numRunes do
|
||||||
|
self.runeCoords[#self.runeCoords + 1] = {0, 1, 0, 1}
|
||||||
|
end
|
||||||
|
|
||||||
|
ArcaneCharges.super.prototype.Enable(self, core)
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
function ArcaneCharges.prototype:GetOptions()
|
||||||
|
local opts = ArcaneCharges.super.prototype.GetOptions(self)
|
||||||
|
|
||||||
|
opts.hideBlizz.desc = L["Hides Blizzard Arcane Charges frame and disables all events related to it.\n\nNOTE: Blizzard attaches the arcane charges UI to the player's unitframe, so if you have that hidden in PlayerHealth, then this won't do anything."]
|
||||||
|
|
||||||
|
return opts
|
||||||
|
end
|
||||||
|
|
||||||
|
function ArcaneCharges.prototype:GetRuneAtlas(rune)
|
||||||
|
return "Mage-ArcaneCharge"
|
||||||
|
end
|
||||||
|
|
||||||
|
function ArcaneCharges.prototype:GetShineAtlas(rune)
|
||||||
|
return "Mage-ArcaneCharge-SmallSpark"
|
||||||
|
end
|
||||||
|
|
||||||
|
function ArcaneCharges.prototype:ShowBlizz()
|
||||||
|
MageArcaneChargesFrame:Show()
|
||||||
|
|
||||||
|
MageArcaneChargesFrame:GetScript("OnLoad")(MageArcaneChargesFrame)
|
||||||
|
end
|
||||||
|
|
||||||
|
function ArcaneCharges.prototype:HideBlizz()
|
||||||
|
MageArcaneChargesFrame:Hide()
|
||||||
|
|
||||||
|
MageArcaneChargesFrame:UnregisterAllEvents()
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Load us up
|
||||||
|
local _, unitClass = UnitClass("player")
|
||||||
|
if (unitClass == "MAGE" and IceHUD.WowVer >= 70000) then
|
||||||
|
IceHUD.ArcaneCharges = ArcaneCharges:new()
|
||||||
|
end
|
@ -3,9 +3,8 @@ local CastBar = IceCore_CreateClass(IceCastBar)
|
|||||||
|
|
||||||
local IceHUD = _G.IceHUD
|
local IceHUD = _G.IceHUD
|
||||||
|
|
||||||
CastBar.prototype.lagBar = nil
|
|
||||||
CastBar.prototype.spellCastSent = nil
|
CastBar.prototype.spellCastSent = nil
|
||||||
|
CastBar.prototype.sentSpell = nil
|
||||||
|
|
||||||
-- Constructor --
|
-- Constructor --
|
||||||
function CastBar.prototype:init()
|
function CastBar.prototype:init()
|
||||||
@ -35,6 +34,7 @@ function CastBar.prototype:GetDefaultSettings()
|
|||||||
settings["usesDogTagStrings"] = false
|
settings["usesDogTagStrings"] = false
|
||||||
settings["rangeColor"] = true
|
settings["rangeColor"] = true
|
||||||
settings["bAllowExpand"] = false
|
settings["bAllowExpand"] = false
|
||||||
|
settings["respectLagTolerance"] = true
|
||||||
|
|
||||||
return settings
|
return settings
|
||||||
end
|
end
|
||||||
@ -119,6 +119,24 @@ function CastBar.prototype:GetOptions()
|
|||||||
order = 43
|
order = 43
|
||||||
}
|
}
|
||||||
|
|
||||||
|
opts["respectLagTolerance"] =
|
||||||
|
{
|
||||||
|
type = 'toggle',
|
||||||
|
name = L["Respect lag tolerance"],
|
||||||
|
desc = L["When checked, if a 'Custom Lag Tolerance' is set in the game's Combat options, the lag indicator will always use that tolerance value. Otherwise, it uses the computed latency."],
|
||||||
|
get = function()
|
||||||
|
return self.moduleSettings.respectLagTolerance
|
||||||
|
end,
|
||||||
|
set = function(info, value)
|
||||||
|
self.moduleSettings.respectLagTolerance = value
|
||||||
|
self:CVarUpdate()
|
||||||
|
end,
|
||||||
|
disabled = function()
|
||||||
|
return not self.moduleSettings.enabled or GetCVar("reducedLagTolerance") == "0"
|
||||||
|
end,
|
||||||
|
order = 42.1,
|
||||||
|
}
|
||||||
|
|
||||||
opts["barVisible"] = {
|
opts["barVisible"] = {
|
||||||
type = 'toggle',
|
type = 'toggle',
|
||||||
name = L["Bar visible"],
|
name = L["Bar visible"],
|
||||||
@ -339,7 +357,7 @@ function CastBar.prototype:CheckVehicle()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function CastBar.prototype:CVarUpdate(...)
|
function CastBar.prototype:CVarUpdate(...)
|
||||||
self.useFixedLatency = GetCVar("reducedLagTolerance") == "1"
|
self.useFixedLatency = self.moduleSettings.respectLagTolerance and GetCVar("reducedLagTolerance") == "1"
|
||||||
self.fixedLatency = tonumber(GetCVar("maxSpellStartRecoveryoffset")) / 1000
|
self.fixedLatency = tonumber(GetCVar("maxSpellStartRecoveryoffset")) / 1000
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -373,15 +391,14 @@ end
|
|||||||
|
|
||||||
|
|
||||||
function CastBar.prototype:CreateLagBar()
|
function CastBar.prototype:CreateLagBar()
|
||||||
self.lagBar = self:BarFactory(self.lagBar, "LOW","BACKGROUND")
|
self.lagBar = self:BarFactory(self.lagBar, "LOW", "OVERLAY")
|
||||||
self:SetBarCoord(self.lagBar, 0 , true)
|
|
||||||
|
|
||||||
local r, g, b = self:GetColor("CastLag")
|
local r, g, b = self:GetColor("CastLag")
|
||||||
if (self.settings.backgroundToggle) then
|
if (self.settings.backgroundToggle) then
|
||||||
r, g, b = self:GetColor("CastCasting")
|
r, g, b = self:GetColor("CastCasting")
|
||||||
end
|
end
|
||||||
self.lagBar.bar:SetVertexColor(r, g, b, self.moduleSettings.lagAlpha)
|
|
||||||
|
|
||||||
|
self.lagBar.bar:SetVertexColor(r, g, b, self.moduleSettings.lagAlpha)
|
||||||
self.lagBar.bar:Hide()
|
self.lagBar.bar:Hide()
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -391,7 +408,18 @@ function CastBar.prototype:SpellCastSent(event, unit, spell, rank, target)
|
|||||||
CastBar.super.prototype.SpellCastSent(self, event, unit, spell, rank, target)
|
CastBar.super.prototype.SpellCastSent(self, event, unit, spell, rank, target)
|
||||||
if (unit ~= self.unit) then return end
|
if (unit ~= self.unit) then return end
|
||||||
|
|
||||||
self.spellCastSent = GetTime()
|
if IceHUD.WowVer < 70000 then
|
||||||
|
self.spellCastSent = GetTime()
|
||||||
|
end
|
||||||
|
self.sentSpell = spell
|
||||||
|
end
|
||||||
|
|
||||||
|
-- OVERRIDE
|
||||||
|
function CastBar.prototype:SpellCastChanged(event, arg1)
|
||||||
|
CastBar.super.prototype.SpellCastChanged(self, event, arg1)
|
||||||
|
if IceHUD.WowVer >= 70000 then
|
||||||
|
self.spellCastSent = GetTime()
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- OVERRIDE
|
-- OVERRIDE
|
||||||
@ -403,6 +431,10 @@ function CastBar.prototype:SpellCastStart(event, unit, spell, rank)
|
|||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if self.sentSpell ~= spell then
|
||||||
|
self.spellCastSent = nil
|
||||||
|
end
|
||||||
|
|
||||||
local scale
|
local scale
|
||||||
if self.unit == "vehicle" then
|
if self.unit == "vehicle" then
|
||||||
scale = 0
|
scale = 0
|
||||||
@ -414,8 +446,7 @@ function CastBar.prototype:SpellCastStart(event, unit, spell, rank)
|
|||||||
scale = IceHUD:Clamp(lag / self.actionDuration, 0, 1)
|
scale = IceHUD:Clamp(lag / self.actionDuration, 0, 1)
|
||||||
end
|
end
|
||||||
|
|
||||||
self.lagBar:SetFrameStrata("BACKGROUND")
|
self:SetBarCoord(self.lagBar, scale, true, true)
|
||||||
self:SetBarCoord(self.lagBar, scale, true)
|
|
||||||
|
|
||||||
self.spellCastSent = nil
|
self.spellCastSent = nil
|
||||||
end
|
end
|
||||||
@ -443,8 +474,7 @@ function CastBar.prototype:SpellCastChannelStart(event, unit)
|
|||||||
|
|
||||||
local top = not self.moduleSettings.reverseChannel
|
local top = not self.moduleSettings.reverseChannel
|
||||||
|
|
||||||
self.lagBar:SetFrameStrata("MEDIUM")
|
self:SetBarCoord(self.lagBar, scale, top, true)
|
||||||
self:SetBarCoord(self.lagBar, scale, top)
|
|
||||||
|
|
||||||
self.spellCastSent = nil
|
self.spellCastSent = nil
|
||||||
end
|
end
|
||||||
|
@ -17,6 +17,7 @@ IceClassPowerCounter.prototype.DesiredAnimPause = 0.5
|
|||||||
IceClassPowerCounter.prototype.requiredSpec = nil
|
IceClassPowerCounter.prototype.requiredSpec = nil
|
||||||
IceClassPowerCounter.prototype.shouldShowUnmodified = false
|
IceClassPowerCounter.prototype.shouldShowUnmodified = false
|
||||||
IceClassPowerCounter.prototype.unmodifiedMaxPerRune = 10
|
IceClassPowerCounter.prototype.unmodifiedMaxPerRune = 10
|
||||||
|
IceClassPowerCounter.prototype.unit = "player"
|
||||||
|
|
||||||
IceClassPowerCounter.prototype.growModes = { width = 1, height = 2 }
|
IceClassPowerCounter.prototype.growModes = { width = 1, height = 2 }
|
||||||
IceClassPowerCounter.prototype.currentGrowMode = nil
|
IceClassPowerCounter.prototype.currentGrowMode = nil
|
||||||
@ -418,6 +419,11 @@ end
|
|||||||
function IceClassPowerCounter.prototype:Enable(core)
|
function IceClassPowerCounter.prototype:Enable(core)
|
||||||
IceClassPowerCounter.super.prototype.Enable(self, core)
|
IceClassPowerCounter.super.prototype.Enable(self, core)
|
||||||
|
|
||||||
|
if IceHUD.WowVer >= 70000 then
|
||||||
|
self.numRunes = UnitPowerMax(self.unit, self.unitPower)
|
||||||
|
end
|
||||||
|
self:CreateFrame()
|
||||||
|
|
||||||
self:CheckValidLevel(nil, UnitLevel("player"))
|
self:CheckValidLevel(nil, UnitLevel("player"))
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -483,6 +489,14 @@ function IceClassPowerCounter.prototype:UpdateRunePower(event, arg1, arg2)
|
|||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if IceHUD.WowVer >= 70000 then
|
||||||
|
local numMax = UnitPowerMax(self.unit, self.unitPower)
|
||||||
|
if numMax ~= self.numRunes then
|
||||||
|
self.numRunes = numMax
|
||||||
|
self:CreateFrame()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
local numReady = UnitPower("player", self.unitPower)
|
local numReady = UnitPower("player", self.unitPower)
|
||||||
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
|
||||||
|
|
||||||
@ -624,9 +638,20 @@ function IceClassPowerCounter.prototype:ShineFinished(rune)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function IceClassPowerCounter.prototype:GetRuneTexture(rune)
|
function IceClassPowerCounter.prototype:GetRuneTexture(rune)
|
||||||
assert(false, "Must override GetRuneTexture in child classes")
|
return nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function IceClassPowerCounter.prototype:GetRuneAtlas(rune)
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
|
||||||
|
function IceClassPowerCounter.prototype:UseAtlasSize(rune)
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
function IceClassPowerCounter.prototype:GetShineAtlas(rune)
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
|
||||||
function IceClassPowerCounter.prototype:CreateFrame()
|
function IceClassPowerCounter.prototype:CreateFrame()
|
||||||
IceClassPowerCounter.super.prototype.CreateFrame(self)
|
IceClassPowerCounter.super.prototype.CreateFrame(self)
|
||||||
@ -703,9 +728,13 @@ function IceClassPowerCounter.prototype:CreateRune(i)
|
|||||||
self:SetupRuneTexture(i)
|
self:SetupRuneTexture(i)
|
||||||
|
|
||||||
self.frame.graphical[i].shine = self.frame.graphical[i]:CreateTexture(nil, "OVERLAY")
|
self.frame.graphical[i].shine = self.frame.graphical[i]:CreateTexture(nil, "OVERLAY")
|
||||||
self.frame.graphical[i].shine:SetTexture("Interface\\ComboFrame\\ComboPoint")
|
if self:GetShineAtlas(i) then
|
||||||
self.frame.graphical[i].shine:SetBlendMode("ADD")
|
self.frame.graphical[i].shine:SetAtlas(self:GetShineAtlas(i))
|
||||||
|
else
|
||||||
|
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
|
||||||
|
self.frame.graphical[i].shine:SetBlendMode("ADD")
|
||||||
self.frame.graphical[i].shine:ClearAllPoints()
|
self.frame.graphical[i].shine:ClearAllPoints()
|
||||||
self.frame.graphical[i].shine:SetPoint("CENTER", self.frame.graphical[i], "CENTER")
|
self.frame.graphical[i].shine:SetPoint("CENTER", self.frame.graphical[i], "CENTER")
|
||||||
|
|
||||||
@ -756,7 +785,12 @@ function IceClassPowerCounter.prototype:SetupRuneTexture(rune)
|
|||||||
end
|
end
|
||||||
|
|
||||||
if self:GetRuneMode() == "Graphical" then
|
if self:GetRuneMode() == "Graphical" then
|
||||||
self.frame.graphical[rune].rune:SetTexture(self:GetRuneTexture(rune))
|
local tex = self:GetRuneTexture(rune)
|
||||||
|
if tex then
|
||||||
|
self.frame.graphical[rune].rune:SetTexture(self:GetRuneTexture(rune))
|
||||||
|
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
|
||||||
@ -766,7 +800,11 @@ function IceClassPowerCounter.prototype:SetupRuneTexture(rune)
|
|||||||
elseif self:GetRuneMode() == "Graphical Clean Circle" then
|
elseif self:GetRuneMode() == "Graphical Clean Circle" then
|
||||||
self.frame.graphical[rune].rune:SetTexture(IceElement.TexturePath .. "ComboCleanCurves")
|
self.frame.graphical[rune].rune:SetTexture(IceElement.TexturePath .. "ComboCleanCurves")
|
||||||
end
|
end
|
||||||
self.frame.graphical[rune].runebg:SetTexture(self.frame.graphical[rune].rune:GetTexture())
|
if tex then
|
||||||
|
self.frame.graphical[rune].runebg:SetTexture(self.frame.graphical[rune].rune:GetTexture())
|
||||||
|
else
|
||||||
|
self.frame.graphical[rune].runebg:SetAtlas(self.frame.graphical[rune].rune:GetAtlas())
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function IceClassPowerCounter.prototype:GetAlphaAdd()
|
function IceClassPowerCounter.prototype:GetAlphaAdd()
|
||||||
|
@ -3,7 +3,6 @@ local ComboPoints = IceCore_CreateClass(IceElement)
|
|||||||
|
|
||||||
local IceHUD = _G.IceHUD
|
local IceHUD = _G.IceHUD
|
||||||
|
|
||||||
local AnticipationAuraName = "Anticipation"
|
|
||||||
local AnticipationSpellId = 114015
|
local AnticipationSpellId = 114015
|
||||||
|
|
||||||
ComboPoints.prototype.comboSize = 20
|
ComboPoints.prototype.comboSize = 20
|
||||||
@ -18,6 +17,15 @@ function ComboPoints.prototype:init()
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
function ComboPoints.prototype:GetMaxComboPoints()
|
||||||
|
local retval = UnitPowerMax("player", SPELL_POWER_COMBO_POINTS)
|
||||||
|
if retval == 0 then -- accommodate non-rogues who still need combo point displays for some specific encounters/quests
|
||||||
|
retval = 5
|
||||||
|
end
|
||||||
|
|
||||||
|
return retval
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
-- 'Public' methods -----------------------------------------------------------
|
-- 'Public' methods -----------------------------------------------------------
|
||||||
|
|
||||||
@ -150,28 +158,30 @@ function ComboPoints.prototype:GetOptions()
|
|||||||
order = 33.2
|
order = 33.2
|
||||||
}
|
}
|
||||||
|
|
||||||
opts["anticipation"] = {
|
if IceHUD.WowVer < 70000 then
|
||||||
type = "toggle",
|
opts["anticipation"] = {
|
||||||
name = L["Show Anticipation"],
|
type = "toggle",
|
||||||
desc = L["Show points stored by the Anticipation talent"],
|
name = L["Show Anticipation"],
|
||||||
get = function()
|
desc = L["Show points stored by the Anticipation talent"],
|
||||||
return self.moduleSettings.showAnticipation
|
get = function()
|
||||||
end,
|
return self.moduleSettings.showAnticipation
|
||||||
set = function(info, v)
|
end,
|
||||||
self.moduleSettings.showAnticipation = v
|
set = function(info, v)
|
||||||
self:AddAnticipation() -- This will activate or deactivate as needed
|
self.moduleSettings.showAnticipation = v
|
||||||
self:Redraw()
|
self:AddAnticipation() -- This will activate or deactivate as needed
|
||||||
end,
|
self:Redraw()
|
||||||
disabled = function()
|
end,
|
||||||
return not self.moduleSettings.enabled
|
disabled = function()
|
||||||
end,
|
return not self.moduleSettings.enabled
|
||||||
order = 33.3
|
end,
|
||||||
}
|
order = 33.3
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
opts["gradient"] = {
|
opts["gradient"] = {
|
||||||
type = "toggle",
|
type = "toggle",
|
||||||
name = L["Change color"],
|
name = L["Change color"],
|
||||||
desc = L["1 combo point: yellow, 5 combo points: red"],
|
desc = L["1 combo point: yellow, max combo points: red"],
|
||||||
get = function()
|
get = function()
|
||||||
return self.moduleSettings.gradient
|
return self.moduleSettings.gradient
|
||||||
end,
|
end,
|
||||||
@ -239,11 +249,18 @@ function ComboPoints.prototype:Enable(core)
|
|||||||
|
|
||||||
self:RegisterEvent("PLAYER_TARGET_CHANGED", "UpdateComboPoints")
|
self:RegisterEvent("PLAYER_TARGET_CHANGED", "UpdateComboPoints")
|
||||||
if IceHUD.WowVer >= 30000 then
|
if IceHUD.WowVer >= 30000 then
|
||||||
self:RegisterEvent("UNIT_COMBO_POINTS", "UpdateComboPoints")
|
if IceHUD.WowVer < 70000 then
|
||||||
|
self:RegisterEvent("UNIT_COMBO_POINTS", "UpdateComboPoints")
|
||||||
|
else
|
||||||
|
self:RegisterEvent("UNIT_POWER", "UpdateComboPoints")
|
||||||
|
self:RegisterEvent("UNIT_MAXPOWER", "UpdateMaxComboPoints")
|
||||||
|
end
|
||||||
self:RegisterEvent("UNIT_ENTERED_VEHICLE", "UpdateComboPoints")
|
self:RegisterEvent("UNIT_ENTERED_VEHICLE", "UpdateComboPoints")
|
||||||
self:RegisterEvent("UNIT_EXITED_VEHICLE", "UpdateComboPoints")
|
self:RegisterEvent("UNIT_EXITED_VEHICLE", "UpdateComboPoints")
|
||||||
self:RegisterEvent("PLAYER_TALENT_UPDATE", "AddAnticipation")
|
if IceHUD.WowVer < 70000 then
|
||||||
self:AddAnticipation()
|
self:RegisterEvent("PLAYER_TALENT_UPDATE", "AddAnticipation")
|
||||||
|
self:AddAnticipation()
|
||||||
|
end
|
||||||
else
|
else
|
||||||
self:RegisterEvent("PLAYER_COMBO_POINTS", "UpdateComboPoints")
|
self:RegisterEvent("PLAYER_COMBO_POINTS", "UpdateComboPoints")
|
||||||
end
|
end
|
||||||
@ -255,7 +272,15 @@ function ComboPoints.prototype:Enable(core)
|
|||||||
self:CreateComboFrame(true)
|
self:CreateComboFrame(true)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function ComboPoints.prototype:UpdateMaxComboPoints(event, unit, powerType)
|
||||||
|
if unit == "player" and powerType == "COMBO_POINTS" then
|
||||||
|
for i = 1, #self.frame.graphical do
|
||||||
|
self.frame.graphicalBG[i]:Hide()
|
||||||
|
self.frame.graphical[i]:Hide()
|
||||||
|
end
|
||||||
|
self:Redraw()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
-- 'Protected' methods --------------------------------------------------------
|
-- 'Protected' methods --------------------------------------------------------
|
||||||
|
|
||||||
@ -265,11 +290,11 @@ function ComboPoints.prototype:CreateFrame()
|
|||||||
|
|
||||||
self.frame:SetFrameStrata("BACKGROUND")
|
self.frame:SetFrameStrata("BACKGROUND")
|
||||||
if self.moduleSettings.graphicalLayout == "Horizontal" then
|
if self.moduleSettings.graphicalLayout == "Horizontal" then
|
||||||
self.frame:SetWidth(self.comboSize*5)
|
self.frame:SetWidth((self.comboSize - 5)*self:GetMaxComboPoints())
|
||||||
self.frame:SetHeight(1)
|
self.frame:SetHeight(1)
|
||||||
else
|
else
|
||||||
self.frame:SetWidth(1)
|
self.frame:SetWidth(1)
|
||||||
self.frame:SetHeight(self.comboSize*5)
|
self.frame:SetHeight(self.comboSize*self:GetMaxComboPoints())
|
||||||
end
|
end
|
||||||
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)
|
||||||
@ -298,9 +323,10 @@ function ComboPoints.prototype:CreateComboFrame(forceTextureUpdate)
|
|||||||
end
|
end
|
||||||
|
|
||||||
local i
|
local i
|
||||||
|
local maxComboPoints = self:GetMaxComboPoints()
|
||||||
|
|
||||||
-- create backgrounds
|
-- create backgrounds
|
||||||
for i = 1, 5 do
|
for i = 1, maxComboPoints do
|
||||||
if (not self.frame.graphicalBG[i]) then
|
if (not self.frame.graphicalBG[i]) then
|
||||||
local frame = CreateFrame("Frame", nil, self.frame)
|
local frame = CreateFrame("Frame", nil, self.frame)
|
||||||
self.frame.graphicalBG[i] = frame
|
self.frame.graphicalBG[i] = frame
|
||||||
@ -324,9 +350,9 @@ function ComboPoints.prototype:CreateComboFrame(forceTextureUpdate)
|
|||||||
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
|
||||||
self.frame.graphicalBG[i]:SetPoint("TOPLEFT", ((i-1) * (self.comboSize-5)) + (i-1) + ((i-1) * self.moduleSettings.comboGap), 0)
|
self.frame.graphicalBG[i]:SetPoint("TOPLEFT", ((i-1) * (self.comboSize-5)) - 2.5 + ((i-1) * self.moduleSettings.comboGap), 0)
|
||||||
else
|
else
|
||||||
self.frame.graphicalBG[i]:SetPoint("TOPLEFT", 0, -1 * (((i-1) * (self.comboSize-5)) + (i-1) + ((i-1) * self.moduleSettings.comboGap)))
|
self.frame.graphicalBG[i]:SetPoint("TOPLEFT", 0, -1 * (((i-1) * (self.comboSize-5)) - 2.5 + ((i-1) * self.moduleSettings.comboGap)))
|
||||||
end
|
end
|
||||||
self.frame.graphicalBG[i]:SetAlpha(0.15)
|
self.frame.graphicalBG[i]:SetAlpha(0.15)
|
||||||
self.frame.graphicalBG[i].texture:SetVertexColor(self:GetColor("ComboPoints"))
|
self.frame.graphicalBG[i].texture:SetVertexColor(self:GetColor("ComboPoints"))
|
||||||
@ -335,7 +361,7 @@ function ComboPoints.prototype:CreateComboFrame(forceTextureUpdate)
|
|||||||
end
|
end
|
||||||
|
|
||||||
-- create combo points
|
-- create combo points
|
||||||
for i = 1, 5 do
|
for i = 1, maxComboPoints do
|
||||||
if (not self.frame.graphical[i]) then
|
if (not self.frame.graphical[i]) then
|
||||||
local frame = CreateFrame("Frame", nil, self.frame)
|
local frame = CreateFrame("Frame", nil, self.frame)
|
||||||
self.frame.graphical[i] = frame
|
self.frame.graphical[i] = frame
|
||||||
@ -360,7 +386,7 @@ function ComboPoints.prototype:CreateComboFrame(forceTextureUpdate)
|
|||||||
|
|
||||||
local r, g, b = self:GetColor("ComboPoints")
|
local r, g, b = self:GetColor("ComboPoints")
|
||||||
if (self.moduleSettings.gradient) then
|
if (self.moduleSettings.gradient) then
|
||||||
g = g - (0.15*i)
|
g = g - ((1 / maxComboPoints)*i)
|
||||||
end
|
end
|
||||||
self.frame.graphical[i].texture:SetVertexColor(r, g, b)
|
self.frame.graphical[i].texture:SetVertexColor(r, g, b)
|
||||||
|
|
||||||
@ -368,58 +394,68 @@ function ComboPoints.prototype:CreateComboFrame(forceTextureUpdate)
|
|||||||
end
|
end
|
||||||
|
|
||||||
-- create Anticipation points
|
-- create Anticipation points
|
||||||
for i = 1, 5 do
|
if IceHUD.WowVer < 70000 then
|
||||||
if (not self.frame.graphicalAnt[i]) then
|
for i = 1, 5 do
|
||||||
local frame = CreateFrame("Frame", nil, self.frame)
|
if (not self.frame.graphicalAnt[i]) then
|
||||||
self.frame.graphicalAnt[i] = frame
|
local frame = CreateFrame("Frame", nil, self.frame)
|
||||||
frame.texture = frame:CreateTexture()
|
self.frame.graphicalAnt[i] = frame
|
||||||
frame.texture:SetAllPoints(frame)
|
frame.texture = frame:CreateTexture()
|
||||||
end
|
frame.texture:SetAllPoints(frame)
|
||||||
|
|
||||||
if forceTextureUpdate then
|
|
||||||
if self.moduleSettings.comboMode == "Graphical Bar" then
|
|
||||||
self.frame.graphicalAnt[i].texture:SetTexture(IceElement.TexturePath .. "Combo")
|
|
||||||
elseif self.moduleSettings.comboMode == "Graphical Circle" then
|
|
||||||
self.frame.graphicalAnt[i].texture:SetTexture(IceElement.TexturePath .. "ComboRound")
|
|
||||||
elseif self.moduleSettings.comboMode == "Graphical Glow" then
|
|
||||||
self.frame.graphicalAnt[i].texture:SetTexture(IceElement.TexturePath .. "ComboGlow")
|
|
||||||
elseif self.moduleSettings.comboMode == "Graphical Clean Circle" then
|
|
||||||
self.frame.graphicalAnt[i].texture:SetTexture(IceElement.TexturePath .. "ComboCleanCurves")
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if forceTextureUpdate then
|
||||||
|
if self.moduleSettings.comboMode == "Graphical Bar" then
|
||||||
|
self.frame.graphicalAnt[i].texture:SetTexture(IceElement.TexturePath .. "Combo")
|
||||||
|
elseif self.moduleSettings.comboMode == "Graphical Circle" then
|
||||||
|
self.frame.graphicalAnt[i].texture:SetTexture(IceElement.TexturePath .. "ComboRound")
|
||||||
|
elseif self.moduleSettings.comboMode == "Graphical Glow" then
|
||||||
|
self.frame.graphicalAnt[i].texture:SetTexture(IceElement.TexturePath .. "ComboGlow")
|
||||||
|
elseif self.moduleSettings.comboMode == "Graphical Clean Circle" then
|
||||||
|
self.frame.graphicalAnt[i].texture:SetTexture(IceElement.TexturePath .. "ComboCleanCurves")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
self.frame.graphicalAnt[i]:SetFrameStrata("LOW")
|
||||||
|
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]:SetHeight(math.floor(self.comboSize / 2))
|
||||||
|
|
||||||
|
self.frame.graphicalAnt[i]:SetPoint("CENTER", self.frame.graphical[i], "CENTER")
|
||||||
|
|
||||||
|
local r, g, b = self:GetColor("AnticipationPoints")
|
||||||
|
if (self.moduleSettings.gradient) then
|
||||||
|
r = r - 0.25 * (i - 1) -- Go to straight blue, which is most visible against the redorange
|
||||||
|
end
|
||||||
|
self.frame.graphicalAnt[i].texture:SetVertexColor(r, g, b)
|
||||||
|
|
||||||
|
self.frame.graphicalAnt[i]:Hide()
|
||||||
end
|
end
|
||||||
|
|
||||||
self.frame.graphicalAnt[i]:SetFrameStrata("LOW")
|
|
||||||
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]:SetHeight(math.floor(self.comboSize / 2))
|
|
||||||
|
|
||||||
self.frame.graphicalAnt[i]:SetPoint("CENTER", self.frame.graphical[i], "CENTER")
|
|
||||||
|
|
||||||
local r, g, b = self:GetColor("AnticipationPoints")
|
|
||||||
if (self.moduleSettings.gradient) then
|
|
||||||
r = r - 0.25 * (i - 1) -- Go to straight blue, which is most visible against the redorange
|
|
||||||
end
|
|
||||||
self.frame.graphicalAnt[i].texture:SetVertexColor(r, g, b)
|
|
||||||
|
|
||||||
self.frame.graphicalAnt[i]:Hide()
|
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function ComboPoints.prototype:UpdateComboPoints()
|
function ComboPoints.prototype:UpdateComboPoints(...)
|
||||||
|
if select('#', ...) >= 3 and select(1, ...) == "UNIT_POWER" and select(3, ...) ~= "COMBO_POINTS" then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
local points, anticipate, _
|
local points, anticipate, _
|
||||||
if IceHUD.IceCore:IsInConfigMode() then
|
if IceHUD.IceCore:IsInConfigMode() then
|
||||||
points = 5
|
points = self:GetMaxComboPoints()
|
||||||
elseif IceHUD.WowVer >= 30000 then
|
elseif IceHUD.WowVer >= 30000 then
|
||||||
-- Parnic: apparently some fights have combo points while the player is in a vehicle?
|
-- Parnic: apparently some fights have combo points while the player is in a vehicle?
|
||||||
local isInVehicle = UnitHasVehicleUI("player")
|
local isInVehicle = UnitHasVehicleUI("player")
|
||||||
local checkUnit = isInVehicle and "vehicle" or "player"
|
local checkUnit = isInVehicle and "vehicle" or "player"
|
||||||
if IceHUD.WowVer >= 60000 then
|
if IceHUD.WowVer >= 60000 then
|
||||||
points = UnitPower(checkUnit, 4)
|
points = UnitPower(checkUnit, SPELL_POWER_COMBO_POINTS)
|
||||||
else
|
else
|
||||||
points = GetComboPoints(checkUnit, "target")
|
points = GetComboPoints(checkUnit, "target")
|
||||||
end
|
end
|
||||||
_, _, _, anticipate = UnitAura("player", AnticipationAuraName)
|
|
||||||
|
if IceHUD.WowVer < 70000 then
|
||||||
|
_, _, _, anticipate = UnitAura("player", GetSpellInfo(AnticipationSpellId))
|
||||||
|
else
|
||||||
|
anticipate = 0
|
||||||
|
end
|
||||||
else
|
else
|
||||||
points = GetComboPoints("target")
|
points = GetComboPoints("target")
|
||||||
end
|
end
|
||||||
@ -427,10 +463,14 @@ function ComboPoints.prototype:UpdateComboPoints()
|
|||||||
points = points or 0
|
points = points or 0
|
||||||
anticipate = self.moduleSettings.showAnticipation and anticipate or 0
|
anticipate = self.moduleSettings.showAnticipation and anticipate or 0
|
||||||
|
|
||||||
|
if self:GetMaxComboPoints() > #self.frame.graphical then
|
||||||
|
self:CreateFrame()
|
||||||
|
end
|
||||||
|
|
||||||
if (self.moduleSettings.comboMode == "Numeric") then
|
if (self.moduleSettings.comboMode == "Numeric") then
|
||||||
local r, g, b = self:GetColor("ComboPoints")
|
local r, g, b = self:GetColor("ComboPoints")
|
||||||
if (self.moduleSettings.gradient and points) then
|
if (self.moduleSettings.gradient and points) then
|
||||||
g = g - (0.15*points)
|
g = g - ((1 / self:GetMaxComboPoints())*points)
|
||||||
end
|
end
|
||||||
self.frame.numeric:SetTextColor(r, g, b, 0.7)
|
self.frame.numeric:SetTextColor(r, g, b, 0.7)
|
||||||
|
|
||||||
@ -447,7 +487,7 @@ function ComboPoints.prototype:UpdateComboPoints()
|
|||||||
else
|
else
|
||||||
self.frame.numeric:SetText()
|
self.frame.numeric:SetText()
|
||||||
|
|
||||||
for i = 1, table.getn(self.frame.graphical) do
|
for i = 1, self:GetMaxComboPoints() do
|
||||||
local hideIfNoTarget = not UnitExists("target") and not self.moduleSettings.bShowWithNoTarget
|
local hideIfNoTarget = not UnitExists("target") and not self.moduleSettings.bShowWithNoTarget
|
||||||
|
|
||||||
if ((points > 0) or (anticipate > 0)) and not hideIfNoTarget then
|
if ((points > 0) or (anticipate > 0)) and not hideIfNoTarget then
|
||||||
@ -462,10 +502,12 @@ function ComboPoints.prototype:UpdateComboPoints()
|
|||||||
self.frame.graphical[i]:Hide()
|
self.frame.graphical[i]:Hide()
|
||||||
end
|
end
|
||||||
|
|
||||||
if (i <= anticipate) and not hideIfNoTarget then
|
if i <= #self.frame.graphicalAnt then
|
||||||
self.frame.graphicalAnt[i]:Show()
|
if (i <= anticipate) and not hideIfNoTarget then
|
||||||
else
|
self.frame.graphicalAnt[i]:Show()
|
||||||
self.frame.graphicalAnt[i]:Hide()
|
else
|
||||||
|
self.frame.graphicalAnt[i]:Hide()
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -476,7 +518,7 @@ do
|
|||||||
|
|
||||||
function ComboPoints.prototype:CheckAnticipation(e, unit) -- UNIT_AURA handler
|
function ComboPoints.prototype:CheckAnticipation(e, unit) -- UNIT_AURA handler
|
||||||
if UnitIsUnit(unit, "player") then
|
if UnitIsUnit(unit, "player") then
|
||||||
local _, _, _, newAntStacks = UnitAura("player", AnticipationAuraName)
|
local _, _, _, newAntStacks = UnitAura("player", GetSpellInfo(AnticipationSpellId))
|
||||||
if newAntStacks ~= antStacks then
|
if newAntStacks ~= antStacks then
|
||||||
antStacks = newAntStacks
|
antStacks = newAntStacks
|
||||||
self:UpdateComboPoints()
|
self:UpdateComboPoints()
|
||||||
|
@ -66,7 +66,11 @@ function ComboPointsBar.prototype:Enable(core)
|
|||||||
|
|
||||||
self:RegisterEvent("PLAYER_TARGET_CHANGED", "UpdateComboPoints")
|
self:RegisterEvent("PLAYER_TARGET_CHANGED", "UpdateComboPoints")
|
||||||
if IceHUD.WowVer >= 30000 then
|
if IceHUD.WowVer >= 30000 then
|
||||||
self:RegisterEvent("UNIT_COMBO_POINTS", "UpdateComboPoints")
|
if IceHUD.WowVer < 70000 then
|
||||||
|
self:RegisterEvent("UNIT_COMBO_POINTS", "UpdateComboPoints")
|
||||||
|
else
|
||||||
|
self:RegisterEvent("UNIT_POWER", "UpdateComboPoints")
|
||||||
|
end
|
||||||
self:RegisterEvent("UNIT_ENTERED_VEHICLE", "UpdateComboPoints")
|
self:RegisterEvent("UNIT_ENTERED_VEHICLE", "UpdateComboPoints")
|
||||||
self:RegisterEvent("UNIT_EXITED_VEHICLE", "UpdateComboPoints")
|
self:RegisterEvent("UNIT_EXITED_VEHICLE", "UpdateComboPoints")
|
||||||
else
|
else
|
||||||
@ -80,16 +84,22 @@ function ComboPointsBar.prototype:CreateFrame()
|
|||||||
self:UpdateComboPoints()
|
self:UpdateComboPoints()
|
||||||
end
|
end
|
||||||
|
|
||||||
function ComboPointsBar.prototype:UpdateComboPoints()
|
local color = {}
|
||||||
|
|
||||||
|
function ComboPointsBar.prototype:UpdateComboPoints(...)
|
||||||
|
if select('#', ...) >= 3 and select(1, ...) == "UNIT_POWER" and select(3, ...) ~= "COMBO_POINTS" then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
local points
|
local points
|
||||||
if IceHUD.IceCore:IsInConfigMode() then
|
if IceHUD.IceCore:IsInConfigMode() then
|
||||||
points = 5
|
points = UnitPowerMax("player", SPELL_POWER_COMBO_POINTS)
|
||||||
elseif IceHUD.WowVer >= 30000 then
|
elseif IceHUD.WowVer >= 30000 then
|
||||||
-- Parnic: apparently some fights have combo points while the player is in a vehicle?
|
-- Parnic: apparently some fights have combo points while the player is in a vehicle?
|
||||||
local isInVehicle = UnitHasVehicleUI("player")
|
local isInVehicle = UnitHasVehicleUI("player")
|
||||||
local checkUnit = isInVehicle and "vehicle" or "player"
|
local checkUnit = isInVehicle and "vehicle" or "player"
|
||||||
if IceHUD.WowVer >= 60000 then
|
if IceHUD.WowVer >= 60000 then
|
||||||
points = UnitPower(checkUnit, 4)
|
points = UnitPower(checkUnit, SPELL_POWER_COMBO_POINTS)
|
||||||
else
|
else
|
||||||
points = GetComboPoints(checkUnit, "target")
|
points = GetComboPoints(checkUnit, "target")
|
||||||
end
|
end
|
||||||
@ -106,9 +116,8 @@ function ComboPointsBar.prototype:UpdateComboPoints()
|
|||||||
self:UpdateBar(0, "undef")
|
self:UpdateBar(0, "undef")
|
||||||
else
|
else
|
||||||
self:Show(true)
|
self:Show(true)
|
||||||
local color = {}
|
|
||||||
self:SetScaledColor(color, (points - 1) / 4.0, self.settings.colors["ComboPointsBarMax"], self.settings.colors["ComboPointsBarMin"])
|
self:SetScaledColor(color, (points - 1) / 4.0, self.settings.colors["ComboPointsBarMax"], self.settings.colors["ComboPointsBarMin"])
|
||||||
self:UpdateBar(points / 5.0, "undef")
|
self:UpdateBar(points / UnitPowerMax("player", SPELL_POWER_COMBO_POINTS), "undef")
|
||||||
self.barFrame.bar:SetVertexColor(color.r, color.g, color.b, self.alpha)
|
self.barFrame.bar:SetVertexColor(color.r, color.g, color.b, self.alpha)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -6,9 +6,6 @@ local IceHUD = _G.IceHUD
|
|||||||
IceCustomCount.prototype.countSize = 20
|
IceCustomCount.prototype.countSize = 20
|
||||||
IceCustomCount.prototype.lastPoints = 0
|
IceCustomCount.prototype.lastPoints = 0
|
||||||
|
|
||||||
local validUnits = {"player", "target", "focus", "pet", "vehicle", "targettarget", "main hand weapon", "off hand weapon"}
|
|
||||||
local buffOrDebuff = {"buff", "debuff", "charges", "spell count"}
|
|
||||||
|
|
||||||
-- Constructor --
|
-- Constructor --
|
||||||
function IceCustomCount.prototype:init()
|
function IceCustomCount.prototype:init()
|
||||||
IceCustomCount.super.prototype.init(self, "CustomCount")
|
IceCustomCount.super.prototype.init(self, "CustomCount")
|
||||||
@ -20,12 +17,7 @@ end
|
|||||||
-- OVERRIDE
|
-- OVERRIDE
|
||||||
function IceCustomCount.prototype:GetOptions()
|
function IceCustomCount.prototype:GetOptions()
|
||||||
local opts = IceCustomCount.super.prototype.GetOptions(self)
|
local opts = IceCustomCount.super.prototype.GetOptions(self)
|
||||||
|
IceStackCounter_GetOptions(self, opts)
|
||||||
opts["customHeader"] = {
|
|
||||||
type = 'header',
|
|
||||||
name = L["Aura settings"],
|
|
||||||
order = 30.1,
|
|
||||||
}
|
|
||||||
|
|
||||||
opts["deleteme"] = {
|
opts["deleteme"] = {
|
||||||
type = 'execute',
|
type = 'execute',
|
||||||
@ -75,80 +67,6 @@ function IceCustomCount.prototype:GetOptions()
|
|||||||
order = 30.3,
|
order = 30.3,
|
||||||
}
|
}
|
||||||
|
|
||||||
opts["auraTarget"] = {
|
|
||||||
type = 'select',
|
|
||||||
values = validUnits,
|
|
||||||
name = L["Unit to track"],
|
|
||||||
desc = L["Select which unit that this bar should be looking for buffs/debuffs on"],
|
|
||||||
get = function(info)
|
|
||||||
return IceHUD:GetSelectValue(info, self.moduleSettings.auraTarget)
|
|
||||||
end,
|
|
||||||
set = function(info, v)
|
|
||||||
self.moduleSettings.auraTarget = info.option.values[v]
|
|
||||||
self.unit = info.option.values[v]
|
|
||||||
self:Redraw()
|
|
||||||
IceHUD:NotifyOptionsChange()
|
|
||||||
end,
|
|
||||||
disabled = function()
|
|
||||||
return not self.moduleSettings.enabled or self.moduleSettings.auraType == "charges" or self.moduleSettings.auraType == "spell count"
|
|
||||||
end,
|
|
||||||
order = 30.4,
|
|
||||||
}
|
|
||||||
|
|
||||||
opts["auraType"] = {
|
|
||||||
type = 'select',
|
|
||||||
values = buffOrDebuff,
|
|
||||||
name = L["Buff or debuff?"],
|
|
||||||
desc = L["Whether we are tracking a buff or debuff"],
|
|
||||||
get = function(info)
|
|
||||||
return IceHUD:GetSelectValue(info, self.moduleSettings.auraType)
|
|
||||||
end,
|
|
||||||
set = function(info, v)
|
|
||||||
self.moduleSettings.auraType = info.option.values[v]
|
|
||||||
self:Redraw()
|
|
||||||
end,
|
|
||||||
disabled = function()
|
|
||||||
return not self.moduleSettings.enabled or self.unit == "main hand weapon" or self.unit == "off hand weapon"
|
|
||||||
end,
|
|
||||||
order = 30.5,
|
|
||||||
}
|
|
||||||
|
|
||||||
opts["auraName"] = {
|
|
||||||
type = 'input',
|
|
||||||
name = L["Aura to track"],
|
|
||||||
desc = L["Which buff/debuff this counter will be tracking. \n\nRemember to press ENTER after filling out this box with the name you want or it will not save."],
|
|
||||||
get = function()
|
|
||||||
return self.moduleSettings.auraName
|
|
||||||
end,
|
|
||||||
set = function(info, v)
|
|
||||||
self.moduleSettings.auraName = v
|
|
||||||
self:Redraw()
|
|
||||||
end,
|
|
||||||
disabled = function()
|
|
||||||
return not self.moduleSettings.enabled or self.unit == "main hand weapon" or self.unit == "off hand weapon"
|
|
||||||
end,
|
|
||||||
usage = "<which aura to track>",
|
|
||||||
order = 30.6,
|
|
||||||
}
|
|
||||||
|
|
||||||
opts["trackOnlyMine"] = {
|
|
||||||
type = 'toggle',
|
|
||||||
name = L["Only track auras by me"],
|
|
||||||
desc = L["Checking this means that only buffs or debuffs that the player applied will trigger this bar"],
|
|
||||||
get = function()
|
|
||||||
return self.moduleSettings.onlyMine
|
|
||||||
end,
|
|
||||||
set = function(info, v)
|
|
||||||
self.moduleSettings.onlyMine = v
|
|
||||||
self:Redraw()
|
|
||||||
end,
|
|
||||||
disabled = function()
|
|
||||||
return not self.moduleSettings.enabled or self.unit == "main hand weapon" or self.unit == "off hand weapon"
|
|
||||||
or self.moduleSettings.auraType == "charges" or self.moduleSettings.auraType == "spell count"
|
|
||||||
end,
|
|
||||||
order = 30.7,
|
|
||||||
}
|
|
||||||
|
|
||||||
opts["countColor"] = {
|
opts["countColor"] = {
|
||||||
type = 'color',
|
type = 'color',
|
||||||
name = L["Count color"],
|
name = L["Count color"],
|
||||||
@ -187,28 +105,6 @@ function IceCustomCount.prototype:GetOptions()
|
|||||||
order = 30.81,
|
order = 30.81,
|
||||||
}
|
}
|
||||||
|
|
||||||
opts["maxCount"] = {
|
|
||||||
type = 'input',
|
|
||||||
name = L["Maximum applications"],
|
|
||||||
desc = L["How many total applications of this buff/debuff can be applied. For example, only 5 sunders can ever be on a target, so this would be set to 5 for tracking Sunder.\n\nRemember to press ENTER after filling out this box with the name you want or it will not save."],
|
|
||||||
get = function()
|
|
||||||
return tostring(self.moduleSettings.maxCount)
|
|
||||||
end,
|
|
||||||
set = function(info, v)
|
|
||||||
if not v or not tonumber(v) or tonumber(v) <= 0 then
|
|
||||||
v = 5
|
|
||||||
end
|
|
||||||
self.moduleSettings.maxCount = tonumber(v)
|
|
||||||
self:CreateCustomFrame(true)
|
|
||||||
self:Redraw()
|
|
||||||
end,
|
|
||||||
disabled = function()
|
|
||||||
return not self.moduleSettings.enabled or self.moduleSettings.auraType == "charges"
|
|
||||||
end,
|
|
||||||
usage = "<the maximum number of valid applications>",
|
|
||||||
order = 30.9,
|
|
||||||
}
|
|
||||||
|
|
||||||
opts["normalHeader"] = {
|
opts["normalHeader"] = {
|
||||||
type = 'header',
|
type = 'header',
|
||||||
name = L["Counter look and feel"],
|
name = L["Counter look and feel"],
|
||||||
@ -284,7 +180,6 @@ function IceCustomCount.prototype:GetOptions()
|
|||||||
end,
|
end,
|
||||||
set = function(info, v)
|
set = function(info, v)
|
||||||
self.moduleSettings.countMode = info.option.values[v]
|
self.moduleSettings.countMode = info.option.values[v]
|
||||||
self:CreateCustomFrame(true)
|
|
||||||
self:Redraw()
|
self:Redraw()
|
||||||
IceHUD:NotifyOptionsChange()
|
IceHUD:NotifyOptionsChange()
|
||||||
end,
|
end,
|
||||||
@ -361,18 +256,10 @@ function IceCustomCount.prototype:GetCustomMinColor()
|
|||||||
return self.moduleSettings.countMinColor.r, self.moduleSettings.countMinColor.g, self.moduleSettings.countMinColor.b, self.alpha
|
return self.moduleSettings.countMinColor.r, self.moduleSettings.countMinColor.g, self.moduleSettings.countMinColor.b, self.alpha
|
||||||
end
|
end
|
||||||
|
|
||||||
function IceCustomCount.prototype:GetMaxCount()
|
|
||||||
if self.moduleSettings.auraType == "charges" then
|
|
||||||
local _, max = GetSpellCharges(self.moduleSettings.auraName)
|
|
||||||
return max or 1
|
|
||||||
else
|
|
||||||
return self.moduleSettings.maxCount
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
-- OVERRIDE
|
|
||||||
function IceCustomCount.prototype:GetDefaultSettings()
|
function IceCustomCount.prototype:GetDefaultSettings()
|
||||||
local defaults = IceCustomCount.super.prototype.GetDefaultSettings(self)
|
local defaults = IceCustomCount.super.prototype.GetDefaultSettings(self)
|
||||||
|
IceStackCounter_GetDefaultSettings(defaults)
|
||||||
|
|
||||||
defaults["vpos"] = 0
|
defaults["vpos"] = 0
|
||||||
defaults["hpos"] = 0
|
defaults["hpos"] = 0
|
||||||
defaults["countFontSize"] = 20
|
defaults["countFontSize"] = 20
|
||||||
@ -382,14 +269,10 @@ function IceCustomCount.prototype:GetDefaultSettings()
|
|||||||
defaults["alwaysFullAlpha"] = true
|
defaults["alwaysFullAlpha"] = true
|
||||||
defaults["graphicalLayout"] = "Horizontal"
|
defaults["graphicalLayout"] = "Horizontal"
|
||||||
defaults["countGap"] = 0
|
defaults["countGap"] = 0
|
||||||
defaults["maxCount"] = 5
|
|
||||||
defaults["auraTarget"] = "player"
|
|
||||||
defaults["auraName"] = ""
|
|
||||||
defaults["onlyMine"] = true
|
|
||||||
defaults["customBarType"] = "Counter"
|
defaults["customBarType"] = "Counter"
|
||||||
defaults["countMinColor"] = {r=1, g=1, b=0, a=1}
|
defaults["countMinColor"] = {r=1, g=1, b=0, a=1}
|
||||||
defaults["countColor"] = {r=1, g=0, b=0, a=1}
|
defaults["countColor"] = {r=1, g=0, b=0, a=1}
|
||||||
defaults["auraType"] = "buff"
|
|
||||||
return defaults
|
return defaults
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -399,6 +282,7 @@ function IceCustomCount.prototype:Redraw()
|
|||||||
IceCustomCount.super.prototype.Redraw(self)
|
IceCustomCount.super.prototype.Redraw(self)
|
||||||
|
|
||||||
self:CreateFrame()
|
self:CreateFrame()
|
||||||
|
self:CreateCustomFrame(true)
|
||||||
self:UpdateCustomCount()
|
self:UpdateCustomCount()
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -407,23 +291,8 @@ end
|
|||||||
function IceCustomCount.prototype:Enable(core)
|
function IceCustomCount.prototype:Enable(core)
|
||||||
IceCustomCount.super.prototype.Enable(self, core)
|
IceCustomCount.super.prototype.Enable(self, core)
|
||||||
|
|
||||||
self:RegisterEvent("UNIT_AURA", "UpdateCustomCount")
|
self:CreateCustomFrame(true)
|
||||||
self:RegisterEvent("UNIT_PET", "UpdateCustomCount")
|
IceStackCounter_Enable(self)
|
||||||
self:RegisterEvent("PLAYER_PET_CHANGED", "UpdateCustomCount")
|
|
||||||
self:RegisterEvent("PLAYER_FOCUS_CHANGED", "UpdateCustomCount")
|
|
||||||
self:RegisterEvent("PLAYER_TARGET_CHANGED", "UpdateCustomCount")
|
|
||||||
self:RegisterEvent("PLAYER_DEAD", "UpdateCustomCount")
|
|
||||||
self:RegisterEvent("SPELL_UPDATE_CHARGES", "UpdateCustomCount")
|
|
||||||
|
|
||||||
self.unit = self.moduleSettings.auraTarget or "player"
|
|
||||||
|
|
||||||
if not tonumber(self.moduleSettings.maxCount) or tonumber(self.moduleSettings.maxCount) <= 0 then
|
|
||||||
self.moduleSettings.maxCount = 5
|
|
||||||
self:CreateCustomFrame(true)
|
|
||||||
self:Redraw()
|
|
||||||
else
|
|
||||||
self:CreateCustomFrame(true)
|
|
||||||
end
|
|
||||||
self:UpdateCustomCount()
|
self:UpdateCustomCount()
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -437,11 +306,11 @@ function IceCustomCount.prototype:CreateFrame()
|
|||||||
|
|
||||||
self.frame:SetFrameStrata("BACKGROUND")
|
self.frame:SetFrameStrata("BACKGROUND")
|
||||||
if self.moduleSettings.graphicalLayout == "Horizontal" then
|
if self.moduleSettings.graphicalLayout == "Horizontal" then
|
||||||
self.frame:SetWidth((self.countSize + self.moduleSettings.countGap)*self:GetMaxCount())
|
self.frame:SetWidth((self.countSize + self.moduleSettings.countGap)*IceStackCounter_GetMaxCount(self))
|
||||||
self.frame:SetHeight(1)
|
self.frame:SetHeight(1)
|
||||||
else
|
else
|
||||||
self.frame:SetWidth(1)
|
self.frame:SetWidth(1)
|
||||||
self.frame:SetHeight((self.countSize + self.moduleSettings.countGap)*self:GetMaxCount())
|
self.frame:SetHeight((self.countSize + self.moduleSettings.countGap)*IceStackCounter_GetMaxCount(self))
|
||||||
end
|
end
|
||||||
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)
|
||||||
@ -468,7 +337,7 @@ function IceCustomCount.prototype:CreateCustomFrame(doTextureUpdate)
|
|||||||
self.frame.graphical = {}
|
self.frame.graphical = {}
|
||||||
end
|
end
|
||||||
|
|
||||||
local max = self:GetMaxCount()
|
local max = IceStackCounter_GetMaxCount(self)
|
||||||
|
|
||||||
-- create backgrounds
|
-- create backgrounds
|
||||||
for i = 1, max do
|
for i = 1, max do
|
||||||
@ -536,7 +405,7 @@ end
|
|||||||
|
|
||||||
|
|
||||||
function IceCustomCount.prototype:SetCustomColor()
|
function IceCustomCount.prototype:SetCustomColor()
|
||||||
for i=1, self:GetMaxCount() do
|
for i=1, IceStackCounter_GetMaxCount(self) do
|
||||||
self.frame.graphicalBG[i].texture:SetVertexColor(self:GetCustomColor())
|
self.frame.graphicalBG[i].texture:SetVertexColor(self:GetCustomColor())
|
||||||
|
|
||||||
local r, g, b = self:GetCustomColor()
|
local r, g, b = self:GetCustomColor()
|
||||||
@ -548,7 +417,7 @@ function IceCustomCount.prototype:SetCustomColor()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function IceCustomCount.prototype:GetGradientColor(curr)
|
function IceCustomCount.prototype:GetGradientColor(curr)
|
||||||
local max = self:GetMaxCount()
|
local max = IceStackCounter_GetMaxCount(self)
|
||||||
local r, g, b = self:GetCustomColor()
|
local r, g, b = self:GetCustomColor()
|
||||||
local mr, mg, mb = self:GetCustomMinColor()
|
local mr, mg, mb = self:GetCustomMinColor()
|
||||||
local scale = max > 1 and ((curr-1)/(max-1)) or 1
|
local scale = max > 1 and ((curr-1)/(max-1)) or 1
|
||||||
@ -566,25 +435,7 @@ function IceCustomCount.prototype:UpdateCustomCount()
|
|||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
local points
|
local points = IceStackCounter_GetCount(self)
|
||||||
if IceHUD.IceCore:IsInConfigMode() then
|
|
||||||
points = tonumber(self.moduleSettings.maxCount)
|
|
||||||
else
|
|
||||||
if self.moduleSettings.auraType == "charges" then
|
|
||||||
points = GetSpellCharges(self.moduleSettings.auraName) or 0
|
|
||||||
elseif self.moduleSettings.auraType == "spell count" then
|
|
||||||
points = GetSpellCount(self.moduleSettings.auraName) or 0
|
|
||||||
else
|
|
||||||
points = IceHUD:GetAuraCount(self.moduleSettings.auraType == "buff" and "HELPFUL" or "HARMFUL",
|
|
||||||
self.unit, self.moduleSettings.auraName, self.moduleSettings.onlyMine, true)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
self.lastPoints = points
|
|
||||||
|
|
||||||
if (points == 0) then
|
|
||||||
points = nil
|
|
||||||
end
|
|
||||||
|
|
||||||
if (self.moduleSettings.countMode == "Numeric") then
|
if (self.moduleSettings.countMode == "Numeric") then
|
||||||
local r, g, b = self:GetCustomColor()
|
local r, g, b = self:GetCustomColor()
|
||||||
@ -616,5 +467,5 @@ function IceCustomCount.prototype:UpdateCustomCount()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function IceCustomCount.prototype:UseTargetAlpha(scale)
|
function IceCustomCount.prototype:UseTargetAlpha(scale)
|
||||||
return self.lastPoints ~= nil and self.lastPoints > 0
|
return IceStackCounter_UseTargetAlpha(self)
|
||||||
end
|
end
|
||||||
|
345
modules/CustomCounterBar.lua
Normal file
345
modules/CustomCounterBar.lua
Normal file
@ -0,0 +1,345 @@
|
|||||||
|
local L = LibStub("AceLocale-3.0"):GetLocale("IceHUD", false)
|
||||||
|
IceCustomCounterBar = IceCore_CreateClass(IceBarElement)
|
||||||
|
|
||||||
|
IceCustomCounterBar.prototype.currColor = {}
|
||||||
|
|
||||||
|
local AuraIconWidth = 20
|
||||||
|
local AuraIconHeight = 20
|
||||||
|
local DefaultAuraIcon = "Interface\\Icons\\Spell_Frost_Frost"
|
||||||
|
|
||||||
|
function IceCustomCounterBar.prototype:init()
|
||||||
|
IceCustomCounterBar.super.prototype.init(self, "CustomCounterBar")
|
||||||
|
|
||||||
|
self.bTreatEmptyAsFull = true
|
||||||
|
end
|
||||||
|
|
||||||
|
function IceCustomCounterBar.prototype:GetOptions()
|
||||||
|
local opts = IceCustomCounterBar.super.prototype.GetOptions(self)
|
||||||
|
IceStackCounter_GetOptions(self, opts)
|
||||||
|
|
||||||
|
opts["deleteme"] = {
|
||||||
|
type = 'execute',
|
||||||
|
name = L["Delete me"],
|
||||||
|
desc = L["Deletes this custom module and all associated settings. Cannot be undone!"],
|
||||||
|
func = function()
|
||||||
|
local dialog = StaticPopup_Show("ICEHUD_DELETE_CUSTOM_MODULE")
|
||||||
|
if dialog then
|
||||||
|
dialog.data = self
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
order = 20.1,
|
||||||
|
}
|
||||||
|
|
||||||
|
opts["duplicateme"] = {
|
||||||
|
type = 'execute',
|
||||||
|
name = L["Duplicate me"],
|
||||||
|
desc = L["Creates a new module of this same type and with all the same settings."],
|
||||||
|
func = function()
|
||||||
|
IceHUD:CreateCustomModuleAndNotify(self.moduleSettings.customBarType, self.moduleSettings)
|
||||||
|
end,
|
||||||
|
order = 20.2,
|
||||||
|
}
|
||||||
|
|
||||||
|
opts["type"] = {
|
||||||
|
type = "description",
|
||||||
|
name = string.format("%s %s", L["Module type:"], tostring(self:GetBarTypeDescription(self.moduleSettings.customBarType))),
|
||||||
|
order = 21,
|
||||||
|
}
|
||||||
|
|
||||||
|
opts["name"] = {
|
||||||
|
type = 'input',
|
||||||
|
name = L["Counter name"],
|
||||||
|
desc = L["The name of this counter (must be unique!). \n\nRemember to press ENTER after filling out this box with the name you want or it will not save."],
|
||||||
|
get = function()
|
||||||
|
return self.elementName
|
||||||
|
end,
|
||||||
|
set = function(info, v)
|
||||||
|
if v ~= "" then
|
||||||
|
IceHUD.IceCore:RenameDynamicModule(self, v)
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
disabled = function()
|
||||||
|
return not self.moduleSettings.enabled
|
||||||
|
end,
|
||||||
|
usage = "<a name for this bar>",
|
||||||
|
order = 29.91,
|
||||||
|
}
|
||||||
|
|
||||||
|
opts["countColor"] = {
|
||||||
|
type = 'color',
|
||||||
|
name = L["Count color"],
|
||||||
|
desc = L["The color for this counter"],
|
||||||
|
get = function()
|
||||||
|
return self.moduleSettings.countColor.r, self.moduleSettings.countColor.g, self.moduleSettings.countColor.b, 1
|
||||||
|
end,
|
||||||
|
set = function(info, r,g,b)
|
||||||
|
self.moduleSettings.countColor.r = r
|
||||||
|
self.moduleSettings.countColor.g = g
|
||||||
|
self.moduleSettings.countColor.b = b
|
||||||
|
self:Redraw()
|
||||||
|
end,
|
||||||
|
disabled = function()
|
||||||
|
return not self.moduleSettings.enabled
|
||||||
|
end,
|
||||||
|
order = 29.95,
|
||||||
|
}
|
||||||
|
|
||||||
|
opts["countMinColor"] = {
|
||||||
|
type = 'color',
|
||||||
|
name = L["Count minimum color"],
|
||||||
|
desc = L["The minimum color for this counter (only used if Change Color is enabled)"],
|
||||||
|
get = function()
|
||||||
|
return self.moduleSettings.countMinColor.r, self.moduleSettings.countMinColor.g,self.moduleSettings.countMinColor.b, 1
|
||||||
|
end,
|
||||||
|
set = function(info, r,g,b)
|
||||||
|
self.moduleSettings.countMinColor.r = r
|
||||||
|
self.moduleSettings.countMinColor.g = g
|
||||||
|
self.moduleSettings.countMinColor.b = b
|
||||||
|
self:Redraw()
|
||||||
|
end,
|
||||||
|
disabled = function()
|
||||||
|
return not self.moduleSettings.enabled or not self.moduleSettings.gradient
|
||||||
|
end,
|
||||||
|
order = 29.96,
|
||||||
|
}
|
||||||
|
|
||||||
|
opts["gradient"] = {
|
||||||
|
type = "toggle",
|
||||||
|
name = L["Change color"],
|
||||||
|
desc = L["This will fade the graphical representation from the min color specified to the regular color\n\n(e.g. if the min color is yellow, the color is red, and there are 3 total applications, then the first would be yellow, second orange, and third red)"],
|
||||||
|
get = function()
|
||||||
|
return self.moduleSettings.gradient
|
||||||
|
end,
|
||||||
|
set = function(info, v)
|
||||||
|
self.moduleSettings.gradient = v
|
||||||
|
self:Redraw()
|
||||||
|
end,
|
||||||
|
disabled = function()
|
||||||
|
return not self.moduleSettings.enabled
|
||||||
|
end,
|
||||||
|
order = 29.97
|
||||||
|
}
|
||||||
|
|
||||||
|
opts["iconSettings"] = {
|
||||||
|
type = 'group',
|
||||||
|
name = "|c"..self.configColor..L["Icon Settings"].."|r",
|
||||||
|
args = {
|
||||||
|
displayAuraIcon = {
|
||||||
|
type = 'toggle',
|
||||||
|
name = L["Display aura icon"],
|
||||||
|
desc = L["Whether or not to display an icon for the aura that this bar is tracking"],
|
||||||
|
get = function()
|
||||||
|
return self.moduleSettings.displayAuraIcon
|
||||||
|
end,
|
||||||
|
set = function(info, v)
|
||||||
|
self.moduleSettings.displayAuraIcon = v
|
||||||
|
if self.barFrame.icon then
|
||||||
|
if v then
|
||||||
|
self.barFrame.icon:Show()
|
||||||
|
else
|
||||||
|
self.barFrame.icon:Hide()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
disabled = function()
|
||||||
|
return not self.moduleSettings.enabled
|
||||||
|
end,
|
||||||
|
order = 40.1,
|
||||||
|
},
|
||||||
|
|
||||||
|
auraIconXOffset = {
|
||||||
|
type = 'range',
|
||||||
|
min = -250,
|
||||||
|
max = 250,
|
||||||
|
step = 1,
|
||||||
|
name = L["Aura icon horizontal offset"],
|
||||||
|
desc = L["Adjust the horizontal position of the aura icon"],
|
||||||
|
get = function()
|
||||||
|
return self.moduleSettings.auraIconXOffset
|
||||||
|
end,
|
||||||
|
set = function(info, v)
|
||||||
|
self.moduleSettings.auraIconXOffset = v
|
||||||
|
self:PositionIcons()
|
||||||
|
end,
|
||||||
|
disabled = function()
|
||||||
|
return not self.moduleSettings.enabled or not self.moduleSettings.displayAuraIcon
|
||||||
|
end,
|
||||||
|
order = 40.2,
|
||||||
|
},
|
||||||
|
|
||||||
|
auraIconYOffset = {
|
||||||
|
type = 'range',
|
||||||
|
min = -250,
|
||||||
|
max = 250,
|
||||||
|
step = 1,
|
||||||
|
name = L["Aura icon vertical offset"],
|
||||||
|
desc = L["Adjust the vertical position of the aura icon"],
|
||||||
|
get = function()
|
||||||
|
return self.moduleSettings.auraIconYOffset
|
||||||
|
end,
|
||||||
|
set = function(info, v)
|
||||||
|
self.moduleSettings.auraIconYOffset = v
|
||||||
|
self:PositionIcons()
|
||||||
|
end,
|
||||||
|
disabled = function()
|
||||||
|
return not self.moduleSettings.enabled or not self.moduleSettings.displayAuraIcon
|
||||||
|
end,
|
||||||
|
order = 40.3,
|
||||||
|
},
|
||||||
|
|
||||||
|
auraIconScale = {
|
||||||
|
type = 'range',
|
||||||
|
min = 0.1,
|
||||||
|
max = 3.0,
|
||||||
|
step = 0.05,
|
||||||
|
name = L["Aura icon scale"],
|
||||||
|
desc = L["Adjusts the size of the aura icon for this bar"],
|
||||||
|
get = function()
|
||||||
|
return self.moduleSettings.auraIconScale
|
||||||
|
end,
|
||||||
|
set = function(info, v)
|
||||||
|
self.moduleSettings.auraIconScale = v
|
||||||
|
self:PositionIcons()
|
||||||
|
end,
|
||||||
|
disabled = function()
|
||||||
|
return not self.moduleSettings.enabled or not self.moduleSettings.displayAuraIcon
|
||||||
|
end,
|
||||||
|
order = 40.4,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
return opts
|
||||||
|
end
|
||||||
|
|
||||||
|
function IceCustomCounterBar.prototype:GetDefaultSettings()
|
||||||
|
local defaults = IceCustomCounterBar.super.prototype.GetDefaultSettings(self)
|
||||||
|
IceStackCounter_GetDefaultSettings(defaults)
|
||||||
|
|
||||||
|
defaults.textVisible['lower'] = false
|
||||||
|
defaults.offset = 9
|
||||||
|
defaults.desiredLerpTime = 0.1
|
||||||
|
defaults.customBarType = "CounterBar"
|
||||||
|
defaults.countMinColor = {r=1, g=1, b=0, a=1}
|
||||||
|
defaults.countColor = {r=1, g=0, b=0, a=1}
|
||||||
|
defaults.gradient = false
|
||||||
|
defaults.usesDogTagStrings = false
|
||||||
|
defaults.displayAuraIcon = false
|
||||||
|
defaults.auraIconXOffset = 40
|
||||||
|
defaults.auraIconYOffset = 0
|
||||||
|
defaults.auraIconScale = 1
|
||||||
|
|
||||||
|
return defaults
|
||||||
|
end
|
||||||
|
|
||||||
|
function IceCustomCounterBar.prototype:Enable(core)
|
||||||
|
IceCustomCounterBar.super.prototype.Enable(self, core)
|
||||||
|
|
||||||
|
if self.moduleSettings.auraIconScale == nil then
|
||||||
|
self.moduleSettings.auraIconScale = 1
|
||||||
|
end
|
||||||
|
if self.moduleSettings.auraIconXOffset == nil then
|
||||||
|
self.moduleSettings.auraIconXOffset = 40
|
||||||
|
end
|
||||||
|
if self.moduleSettings.auraIconYOffset == nil then
|
||||||
|
self.moduleSettings.auraIconYOffset = 0
|
||||||
|
end
|
||||||
|
|
||||||
|
self:UpdateAuraIcon()
|
||||||
|
|
||||||
|
IceStackCounter_Enable(self)
|
||||||
|
end
|
||||||
|
|
||||||
|
function IceCustomCounterBar.prototype:Redraw()
|
||||||
|
IceCustomCounterBar.super.prototype.Redraw(self)
|
||||||
|
|
||||||
|
self:UpdateAuraIcon()
|
||||||
|
self:UpdateCustomCount()
|
||||||
|
end
|
||||||
|
|
||||||
|
function IceCustomCounterBar.prototype:PositionIcons()
|
||||||
|
if not self.barFrame or not self.barFrame.icon then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
self.barFrame.icon:ClearAllPoints()
|
||||||
|
self.barFrame.icon:SetPoint("TOPLEFT", self.frame, "TOPLEFT", self.moduleSettings.auraIconXOffset, self.moduleSettings.auraIconYOffset)
|
||||||
|
self.barFrame.icon:SetWidth(AuraIconWidth * (self.moduleSettings.auraIconScale or 1))
|
||||||
|
self.barFrame.icon:SetHeight(AuraIconHeight * (self.moduleSettings.auraIconScale or 1))
|
||||||
|
end
|
||||||
|
|
||||||
|
function IceCustomCounterBar.prototype:CreateFrame()
|
||||||
|
IceCustomCounterBar.super.prototype.CreateFrame(self)
|
||||||
|
|
||||||
|
if not self.barFrame.icon then
|
||||||
|
self.barFrame.icon = self.masterFrame:CreateTexture(nil, "LOW")
|
||||||
|
self.barFrame.icon:SetTexture(DefaultAuraIcon)
|
||||||
|
self.barFrame.icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
|
||||||
|
self.barFrame.icon:SetDrawLayer("OVERLAY")
|
||||||
|
self.barFrame.icon:Hide()
|
||||||
|
end
|
||||||
|
self:PositionIcons()
|
||||||
|
|
||||||
|
self:UpdateCustomCount()
|
||||||
|
end
|
||||||
|
|
||||||
|
function IceCustomCounterBar.prototype:Show(bShouldShow)
|
||||||
|
IceCustomCounterBar.super.prototype.Show(self, bShouldShow)
|
||||||
|
|
||||||
|
if self.moduleSettings.displayAuraIcon then
|
||||||
|
self.barFrame.icon:Show()
|
||||||
|
else
|
||||||
|
self.barFrame.icon:Hide()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function IceCustomCounterBar.prototype:UpdateAuraIcon()
|
||||||
|
if not self.barFrame or not self.barFrame.icon then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local auraIcon, _
|
||||||
|
_, _, auraIcon = GetSpellInfo(self.moduleSettings.auraName)
|
||||||
|
|
||||||
|
if auraIcon == nil then
|
||||||
|
auraIcon = "Interface\\Icons\\Spell_Frost_Frost"
|
||||||
|
end
|
||||||
|
|
||||||
|
self.barFrame.icon:SetTexture(auraIcon)
|
||||||
|
end
|
||||||
|
|
||||||
|
function IceCustomCounterBar.prototype:UpdateCustomCount()
|
||||||
|
local points = IceStackCounter_GetCount(self) or 0
|
||||||
|
local max = IceStackCounter_GetMaxCount(self) or 1
|
||||||
|
local percent = IceHUD:Clamp(1.0 * points / (max > 0 and max or 1), 0, 1)
|
||||||
|
|
||||||
|
if IceHUD.IceCore:IsInConfigMode() then
|
||||||
|
points = IceStackCounter_GetMaxCount(self)
|
||||||
|
percent = 1
|
||||||
|
self.barFrame.icon:Show()
|
||||||
|
end
|
||||||
|
|
||||||
|
if points == nil or points == 0 then
|
||||||
|
self:Show(false)
|
||||||
|
self:UpdateBar(0, "undef")
|
||||||
|
else
|
||||||
|
self:Show(true)
|
||||||
|
|
||||||
|
self.currColor.r = self.moduleSettings.countColor.r
|
||||||
|
self.currColor.g = self.moduleSettings.countColor.g
|
||||||
|
self.currColor.b = self.moduleSettings.countColor.b
|
||||||
|
|
||||||
|
if self.moduleSettings.gradient then
|
||||||
|
self:SetScaledColor(self.currColor, percent, self.moduleSettings.countColor, self.moduleSettings.countMinColor)
|
||||||
|
end
|
||||||
|
|
||||||
|
self:UpdateBar(percent, "undef")
|
||||||
|
self.barFrame.bar:SetVertexColor(self.currColor.r, self.currColor.g, self.currColor.b, self.alpha)
|
||||||
|
end
|
||||||
|
|
||||||
|
self:SetBottomText1(points or "0")
|
||||||
|
end
|
||||||
|
|
||||||
|
function IceCustomCounterBar.prototype:Update()
|
||||||
|
self:UpdateCustomCount()
|
||||||
|
end
|
@ -1,76 +0,0 @@
|
|||||||
local L = LibStub("AceLocale-3.0"):GetLocale("IceHUD", false)
|
|
||||||
local DruidMana = IceCore_CreateClass(IceUnitBar)
|
|
||||||
|
|
||||||
DruidMana.prototype.druidMana = nil
|
|
||||||
DruidMana.prototype.druidManaMax = nil
|
|
||||||
|
|
||||||
local MANA_POWER_INDEX = SPELL_POWER_MANA
|
|
||||||
|
|
||||||
-- Constructor --
|
|
||||||
function DruidMana.prototype:init()
|
|
||||||
DruidMana.super.prototype.init(self, "DruidMana", "player")
|
|
||||||
|
|
||||||
self.side = IceCore.Side.Right
|
|
||||||
self.offset = 0
|
|
||||||
|
|
||||||
self:SetDefaultColor("DruidMana", 87, 82, 141)
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
function DruidMana.prototype:GetDefaultSettings()
|
|
||||||
local settings = DruidMana.super.prototype.GetDefaultSettings(self)
|
|
||||||
|
|
||||||
settings["side"] = IceCore.Side.Right
|
|
||||||
settings["offset"] = 0
|
|
||||||
settings["textVisible"] = {upper = true, lower = false}
|
|
||||||
settings["upperText"] = "[PercentDruidMP:Round]"
|
|
||||||
settings["lowerText"] = "[FractionalDruidMP:Color('3071bf'):Bracket]"
|
|
||||||
|
|
||||||
return settings
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
function DruidMana.prototype:Enable(core)
|
|
||||||
DruidMana.super.prototype.Enable(self, core)
|
|
||||||
|
|
||||||
self:RegisterEvent("UPDATE_SHAPESHIFT_FORM", "Update")
|
|
||||||
if IceHUD.WowVer >= 40000 then
|
|
||||||
self:RegisterEvent("UNIT_POWER", "Update")
|
|
||||||
self:RegisterEvent("UNIT_MAXPOWER", "Update")
|
|
||||||
else
|
|
||||||
self:RegisterEvent("UNIT_MAXMANA", "Update")
|
|
||||||
self:RegisterEvent("UNIT_MANA", "Update")
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
function DruidMana.prototype:Disable(core)
|
|
||||||
DruidMana.super.prototype.Disable(self, core)
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
function DruidMana.prototype:Update()
|
|
||||||
DruidMana.super.prototype.Update(self)
|
|
||||||
|
|
||||||
local forms = (UnitPowerType(self.unit) ~= 0)
|
|
||||||
|
|
||||||
self.druidMana = UnitPower(self.unit, MANA_POWER_INDEX)
|
|
||||||
self.druidManaMax = UnitPowerMax(self.unit, MANA_POWER_INDEX)
|
|
||||||
|
|
||||||
if (not self.alive or not forms or not self.druidMana or not self.druidManaMax or self.druidManaMax == 0) then
|
|
||||||
self:Show(false)
|
|
||||||
return
|
|
||||||
else
|
|
||||||
self:Show(true)
|
|
||||||
end
|
|
||||||
|
|
||||||
self:UpdateBar(self.druidManaMax ~= 0 and self.druidMana / self.druidManaMax or 0, "DruidMana")
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-- Load us up (if we are a druid)
|
|
||||||
local _, unitClass = UnitClass("player")
|
|
||||||
if (unitClass == "DRUID") then
|
|
||||||
IceHUD.DruidMana = DruidMana:new()
|
|
||||||
end
|
|
@ -190,6 +190,6 @@ function EclipseBar.prototype:MyOnUpdate()
|
|||||||
end
|
end
|
||||||
|
|
||||||
local _, unitClass = UnitClass("player")
|
local _, unitClass = UnitClass("player")
|
||||||
if (unitClass == "DRUID" and IceHUD.WowVer >= 40000) then
|
if (unitClass == "DRUID" and IceHUD.WowVer >= 40000 and IceHUD.WowVer < 70000) then
|
||||||
IceHUD.EclipseBar = EclipseBar:new()
|
IceHUD.EclipseBar = EclipseBar:new()
|
||||||
end
|
end
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
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 maxSpellCastSkipTimeMs = 1500
|
|
||||||
|
|
||||||
-- Constructor --
|
-- Constructor --
|
||||||
function GlobalCoolDown.prototype:init()
|
function GlobalCoolDown.prototype:init()
|
||||||
GlobalCoolDown.super.prototype.init(self, "GlobalCoolDown")
|
GlobalCoolDown.super.prototype.init(self, "GlobalCoolDown")
|
||||||
@ -18,27 +16,36 @@ end
|
|||||||
function GlobalCoolDown.prototype:Enable(core)
|
function GlobalCoolDown.prototype:Enable(core)
|
||||||
GlobalCoolDown.super.prototype.Enable(self, core)
|
GlobalCoolDown.super.prototype.Enable(self, core)
|
||||||
|
|
||||||
|
if self.moduleSettings.inverse == "EXPAND" then
|
||||||
|
self.moduleSettings.inverse = "NORMAL"
|
||||||
|
end
|
||||||
|
|
||||||
|
self:RegisterEvent("UNIT_SPELLCAST_SENT","SpellCastSent")
|
||||||
|
|
||||||
--self:RegisterEvent("ACTIONBAR_UPDATE_COOLDOWN", "CooldownStateChanged")
|
--self:RegisterEvent("ACTIONBAR_UPDATE_COOLDOWN", "CooldownStateChanged")
|
||||||
self:RegisterEvent("UNIT_SPELLCAST_START","CooldownStateChanged")
|
self:RegisterEvent("UNIT_SPELLCAST_START","CooldownStateChanged")
|
||||||
|
self:RegisterEvent("UNIT_SPELLCAST_CHANNEL_START","CooldownStateChanged")
|
||||||
self:RegisterEvent("UNIT_SPELLCAST_SUCCEEDED","CooldownStateChanged")
|
self:RegisterEvent("UNIT_SPELLCAST_SUCCEEDED","CooldownStateChanged")
|
||||||
|
|
||||||
self:RegisterEvent("UNIT_SPELLCAST_INTERRUPTED","CooldownAborted")
|
self:RegisterEvent("UNIT_SPELLCAST_CHANNEL_STOP","SpellCastStop")
|
||||||
self:RegisterEvent("UNIT_SPELLCAST_FAILED","CooldownAborted")
|
self:RegisterEvent("UNIT_SPELLCAST_INTERRUPTED","SpellCastStop")
|
||||||
|
self:RegisterEvent("UNIT_SPELLCAST_FAILED","SpellCastStop")
|
||||||
|
self:RegisterEvent("UNIT_SPELLCAST_STOP","SpellCastStop")
|
||||||
|
|
||||||
|
self:RegisterEvent("CVAR_UPDATE", "CVarUpdate")
|
||||||
|
|
||||||
|
self:CVarUpdate()
|
||||||
|
|
||||||
self:Show(false)
|
self:Show(false)
|
||||||
|
|
||||||
self.frame:SetFrameStrata("TOOLTIP")
|
self.frame:SetFrameStrata("LOW")
|
||||||
|
|
||||||
self.CDSpellId = self:GetSpellId()
|
self.CDSpellId = self:GetSpellId()
|
||||||
end
|
end
|
||||||
|
|
||||||
function GlobalCoolDown.prototype:CooldownAborted(event, unit, spell)
|
function GlobalCoolDown.prototype:CVarUpdate()
|
||||||
if unit ~= "player" or not spell or not self.CurrSpell or self.CurrSpell ~= spell then
|
self.useFixedLatency = self.moduleSettings.respectLagTolerance and GetCVar("reducedLagTolerance") == "1"
|
||||||
return
|
self.fixedLatency = tonumber(GetCVar("maxSpellStartRecoveryoffset")) / 1000.0
|
||||||
end
|
|
||||||
|
|
||||||
self.CurrLerpTime = self.moduleSettings.desiredLerpTime
|
|
||||||
self.CurrSpell = nil
|
|
||||||
end
|
end
|
||||||
|
|
||||||
-- OVERRIDE
|
-- OVERRIDE
|
||||||
@ -57,6 +64,9 @@ function GlobalCoolDown.prototype:GetDefaultSettings()
|
|||||||
settings["bHideMarkerSettings"] = true
|
settings["bHideMarkerSettings"] = true
|
||||||
settings["showDuringCast"] = true
|
settings["showDuringCast"] = true
|
||||||
settings["barVisible"]["bg"] = false
|
settings["barVisible"]["bg"] = false
|
||||||
|
settings["bAllowExpand"] = false
|
||||||
|
settings["lagAlpha"] = 0.7
|
||||||
|
settings["respectLagTolerance"] = true
|
||||||
|
|
||||||
return settings
|
return settings
|
||||||
end
|
end
|
||||||
@ -84,6 +94,45 @@ function GlobalCoolDown.prototype:GetOptions()
|
|||||||
order = 21,
|
order = 21,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
opts["lagAlpha"] =
|
||||||
|
{
|
||||||
|
type = 'range',
|
||||||
|
name = L["Lag Indicator alpha"],
|
||||||
|
desc = L["Lag indicator alpha (0 is disabled)"],
|
||||||
|
min = 0,
|
||||||
|
max = 1,
|
||||||
|
step = 0.1,
|
||||||
|
get = function()
|
||||||
|
return self.moduleSettings.lagAlpha
|
||||||
|
end,
|
||||||
|
set = function(info, value)
|
||||||
|
self.moduleSettings.lagAlpha = value
|
||||||
|
self:Redraw()
|
||||||
|
end,
|
||||||
|
disabled = function()
|
||||||
|
return not self.moduleSettings.enabled
|
||||||
|
end,
|
||||||
|
order = 42
|
||||||
|
}
|
||||||
|
|
||||||
|
opts["respectLagTolerance"] =
|
||||||
|
{
|
||||||
|
type = 'toggle',
|
||||||
|
name = L["Respect lag tolerance"],
|
||||||
|
desc = L["When checked, if a 'Custom Lag Tolerance' is set in the game's Combat options, the lag indicator will always use that tolerance value. Otherwise, it uses the computed latency."],
|
||||||
|
get = function()
|
||||||
|
return self.moduleSettings.respectLagTolerance
|
||||||
|
end,
|
||||||
|
set = function(info, value)
|
||||||
|
self.moduleSettings.respectLagTolerance = value
|
||||||
|
self:CVarUpdate()
|
||||||
|
end,
|
||||||
|
disabled = function()
|
||||||
|
return not self.moduleSettings.enabled or GetCVar("reducedLagTolerance") == "0"
|
||||||
|
end,
|
||||||
|
order = 42.1,
|
||||||
|
}
|
||||||
|
|
||||||
return opts
|
return opts
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -91,6 +140,26 @@ function GlobalCoolDown.prototype:IsFull(scale)
|
|||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function GlobalCoolDown.prototype:SpellCastSent(event, unit, spell)
|
||||||
|
if unit ~= "player" or not spell then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
self.spellCastSent = GetTime()
|
||||||
|
end
|
||||||
|
|
||||||
|
function GlobalCoolDown.prototype:SpellCastStop(event, unit, spell, _, _, spellId)
|
||||||
|
if unit ~= "player" or not spellId or not self.CurrSpellId or self.CurrSpellId ~= spellId then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
self.CurrSpellId = nil
|
||||||
|
|
||||||
|
if event == "UNIT_SPELLCAST_INTERRUPTED" or event == "UNIT_SPELLCAST_FAILED" then
|
||||||
|
self.CurrLerpTime = self.moduleSettings.desiredLerpTime
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
function GlobalCoolDown.prototype:GetSpellCastTime(spell)
|
function GlobalCoolDown.prototype:GetSpellCastTime(spell)
|
||||||
if not spell then
|
if not spell then
|
||||||
return nil, nil
|
return nil, nil
|
||||||
@ -110,20 +179,31 @@ function GlobalCoolDown.prototype:GetSpellCastTime(spell)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function GlobalCoolDown.prototype:CooldownStateChanged(event, unit, spell)
|
function GlobalCoolDown.prototype:CooldownStateChanged(event, unit, spell, _, _, spellId)
|
||||||
if unit ~= "player" or not spell then
|
if unit ~= "player" or not spellId then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
if not self.moduleSettings.showDuringCast then
|
-- Ignore all events unrelated to the spell currently being cast
|
||||||
local castTime = self:GetSpellCastTime(spell)
|
if self.CurrSpellId and self.CurrSpellId ~= spellId then
|
||||||
if castTime and castTime > maxSpellCastSkipTimeMs then
|
return
|
||||||
return
|
end
|
||||||
end
|
|
||||||
|
-- Update the current spell ID for all events indicating a spellcast is starting
|
||||||
|
if event ~= "UNIT_SPELLCAST_SUCCEEDED" then
|
||||||
|
self.CurrSpellId = spellId
|
||||||
end
|
end
|
||||||
|
|
||||||
local start, dur = GetSpellCooldown(self.CDSpellId)
|
local start, dur = GetSpellCooldown(self.CDSpellId)
|
||||||
|
|
||||||
|
if not self.moduleSettings.showDuringCast then
|
||||||
|
local castTime = self:GetSpellCastTime(spellId)
|
||||||
|
local channeledSpellName = UnitChannelInfo(unit)
|
||||||
|
if (castTime and castTime >= dur*1000) or channeledSpellName then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
if start and dur ~= nil and dur > 0 and dur <= 1.5 then
|
if start and dur ~= nil and dur > 0 and dur <= 1.5 then
|
||||||
local bRestart = not self.startTime or start > self.startTime + 0.5
|
local bRestart = not self.startTime or start > self.startTime + 0.5
|
||||||
if bRestart then
|
if bRestart then
|
||||||
@ -136,15 +216,23 @@ function GlobalCoolDown.prototype:CooldownStateChanged(event, unit, spell)
|
|||||||
self.CurrLerpTime = 0
|
self.CurrLerpTime = 0
|
||||||
self.lastLerpTime = GetTime()
|
self.lastLerpTime = GetTime()
|
||||||
self.moduleSettings.desiredLerpTime = dur or 1
|
self.moduleSettings.desiredLerpTime = dur or 1
|
||||||
self.CurrSpell = spell
|
|
||||||
|
|
||||||
self:UpdateBar(0, "GlobalCoolDown")
|
self:UpdateBar(0, "GlobalCoolDown")
|
||||||
self:Show(true)
|
self:Show(true)
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
if event == "UNIT_SPELLCAST_SUCCEEDED" then
|
-- Update latency indicator
|
||||||
self.CurrSpell = nil
|
local scale = 0
|
||||||
|
if self.useFixedLatency then
|
||||||
|
scale = IceHUD:Clamp(self.fixedLatency / self.duration, 0, 1)
|
||||||
|
else
|
||||||
|
local now = GetTime()
|
||||||
|
local lag = now - (self.spellCastSent or now)
|
||||||
|
scale = IceHUD:Clamp(lag / self.duration, 0, 1)
|
||||||
|
end
|
||||||
|
|
||||||
|
self:SetBarCoord(self.lagBar, scale, false, true)
|
||||||
|
self.spellCastSent = nil
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -163,9 +251,25 @@ function GlobalCoolDown.prototype:CreateFrame()
|
|||||||
self.barFrame.bar:SetVertexColor(self:GetColor("GlobalCoolDown", 0.8))
|
self.barFrame.bar:SetVertexColor(self:GetColor("GlobalCoolDown", 0.8))
|
||||||
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
|
||||||
self.frame.bg:SetVertexColor(r, g, b, 0.6)
|
self.frame.bg:SetVertexColor(r, g, b, 0.6)
|
||||||
|
|
||||||
|
self:CreateLagBar()
|
||||||
|
end
|
||||||
|
|
||||||
|
function GlobalCoolDown.prototype:CreateLagBar()
|
||||||
|
self.lagBar = self:BarFactory(self.lagBar, "LOW", "OVERLAY")
|
||||||
|
|
||||||
|
local r, g, b = self:GetColor("CastLag")
|
||||||
|
if (self.settings.backgroundToggle) then
|
||||||
|
r, g, b = self:GetColor("CastCasting")
|
||||||
|
end
|
||||||
|
|
||||||
|
self.lagBar.bar:SetVertexColor(r, g, b, self.moduleSettings.lagAlpha)
|
||||||
|
self.lagBar.bar:Hide()
|
||||||
end
|
end
|
||||||
|
|
||||||
function GlobalCoolDown.prototype:GetSpellId()
|
function GlobalCoolDown.prototype:GetSpellId()
|
||||||
|
return 61304
|
||||||
|
--[[
|
||||||
local defaultSpells
|
local defaultSpells
|
||||||
|
|
||||||
defaultSpells = {
|
defaultSpells = {
|
||||||
@ -184,6 +288,7 @@ function GlobalCoolDown.prototype:GetSpellId()
|
|||||||
|
|
||||||
local _, unitClass = UnitClass("player")
|
local _, unitClass = UnitClass("player")
|
||||||
return defaultSpells[unitClass]
|
return defaultSpells[unitClass]
|
||||||
|
]]
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Load us up
|
-- Load us up
|
||||||
|
@ -23,6 +23,9 @@ function HarmonyPower.prototype:init()
|
|||||||
else
|
else
|
||||||
self.unitPower = SPELL_POWER_LIGHT_FORCE
|
self.unitPower = SPELL_POWER_LIGHT_FORCE
|
||||||
end
|
end
|
||||||
|
if IceHUD.WowVer >= 70000 then
|
||||||
|
self.requiredSpec = SPEC_MONK_WINDWALKER
|
||||||
|
end
|
||||||
self.minLevel = 0
|
self.minLevel = 0
|
||||||
self.bTreatEmptyAsFull = true
|
self.bTreatEmptyAsFull = true
|
||||||
self.unit = "player"
|
self.unit = "player"
|
||||||
@ -33,8 +36,6 @@ function HarmonyPower.prototype:Enable(core)
|
|||||||
HarmonyPower.super.prototype.Enable(self, core)
|
HarmonyPower.super.prototype.Enable(self, core)
|
||||||
|
|
||||||
self:RegisterEvent("UNIT_POWER_FREQUENT", "UpdateRunePower")
|
self:RegisterEvent("UNIT_POWER_FREQUENT", "UpdateRunePower")
|
||||||
|
|
||||||
self:Redraw()
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function HarmonyPower.prototype:UpdateRunePower(event, arg1, arg2)
|
function HarmonyPower.prototype:UpdateRunePower(event, arg1, arg2)
|
||||||
@ -48,10 +49,6 @@ function HarmonyPower.prototype:UpdateRunePower(event, arg1, arg2)
|
|||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
if self.fakeNumRunes ~= nil and self.fakeNumRunes > 0 then
|
|
||||||
numRunes = self.fakeNumRunes
|
|
||||||
end
|
|
||||||
|
|
||||||
if numRunes ~= self.numRunes then
|
if numRunes ~= self.numRunes then
|
||||||
if numRunes < self.numRunes and #self.frame.graphical >= numRunes then
|
if numRunes < self.numRunes and #self.frame.graphical >= numRunes then
|
||||||
for i=numRunes + 1, #self.frame.graphical do
|
for i=numRunes + 1, #self.frame.graphical do
|
||||||
|
@ -27,6 +27,9 @@ function HolyPower.prototype:init()
|
|||||||
self.numericColor = "HolyPowerNumeric"
|
self.numericColor = "HolyPowerNumeric"
|
||||||
self.unitPower = SPELL_POWER_HOLY_POWER
|
self.unitPower = SPELL_POWER_HOLY_POWER
|
||||||
self.minLevel = PALADINPOWERBAR_SHOW_LEVEL
|
self.minLevel = PALADINPOWERBAR_SHOW_LEVEL
|
||||||
|
if IceHUD.WowVer >= 70000 then
|
||||||
|
self.requiredSpec = SPEC_PALADIN_RETRIBUTION
|
||||||
|
end
|
||||||
self.bTreatEmptyAsFull = true
|
self.bTreatEmptyAsFull = true
|
||||||
self.unit = "player"
|
self.unit = "player"
|
||||||
self.numRunes = 5
|
self.numRunes = 5
|
||||||
|
@ -1,53 +0,0 @@
|
|||||||
local MonkManaBar = IceCore_CreateClass(IceHUDPlayerAlternatePower)
|
|
||||||
|
|
||||||
function MonkManaBar.prototype:init(moduleName, unit)
|
|
||||||
MonkManaBar.super.prototype.init(self, "MonkMana", unit)
|
|
||||||
|
|
||||||
self.bTreatEmptyAsFull = false
|
|
||||||
end
|
|
||||||
|
|
||||||
function MonkManaBar.prototype:GetDefaultSettings()
|
|
||||||
local settings = MonkManaBar.super.prototype.GetDefaultSettings(self)
|
|
||||||
|
|
||||||
settings["upperText"] = "[PercentMonkMP:Round]"
|
|
||||||
settings["lowerText"] = "[Concatenate(MonkMP:Short, \"/\", MaxMonkMP:Short):Bracket]"
|
|
||||||
|
|
||||||
return settings
|
|
||||||
end
|
|
||||||
|
|
||||||
function MonkManaBar.prototype:GetOptions()
|
|
||||||
local opts = MonkManaBar.super.prototype.GetOptions(self)
|
|
||||||
|
|
||||||
opts.showBlizz = nil
|
|
||||||
opts.hideBlizz = nil
|
|
||||||
|
|
||||||
return opts
|
|
||||||
end
|
|
||||||
|
|
||||||
function MonkManaBar.prototype:Enable(core)
|
|
||||||
self.specRestriction = SPEC_MONK_MISTWEAVER
|
|
||||||
self.powerIndex = SPELL_POWER_MANA
|
|
||||||
self:RegisterEvent("PLAYER_SPECIALIZATION_CHANGED", "CheckShouldShowOnSpecChange")
|
|
||||||
self:RegisterEvent("UNIT_DISPLAYPOWER", "CheckShouldShowOnSpecChange")
|
|
||||||
|
|
||||||
MonkManaBar.super.prototype.Enable(self, core)
|
|
||||||
|
|
||||||
self:CheckShouldShowOnSpecChange(nil, self.unit)
|
|
||||||
end
|
|
||||||
|
|
||||||
function MonkManaBar.prototype:CheckShouldShowOnSpecChange(event, unit)
|
|
||||||
if unit ~= self.unit and event ~= "PLAYER_SPECIALIZATION_CHANGED" then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
if GetSpecialization() == self.specRestriction then
|
|
||||||
self:PowerBarShow(event, self.unit)
|
|
||||||
else
|
|
||||||
self:PowerBarHide(event, self.unit)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Load us up
|
|
||||||
if select(2, UnitClass("player")) == "MONK" then
|
|
||||||
IceHUD.MonkManaBar = MonkManaBar:new()
|
|
||||||
end
|
|
95
modules/PlayerAltMana.lua
Normal file
95
modules/PlayerAltMana.lua
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
local L = LibStub("AceLocale-3.0"):GetLocale("IceHUD", false)
|
||||||
|
local PlayerAltMana = IceCore_CreateClass(IceUnitBar)
|
||||||
|
|
||||||
|
PlayerAltMana.prototype.PlayerAltMana = nil
|
||||||
|
PlayerAltMana.prototype.PlayerAltManaMax = nil
|
||||||
|
|
||||||
|
local _, unitClass = UnitClass("player")
|
||||||
|
|
||||||
|
-- Constructor --
|
||||||
|
function PlayerAltMana.prototype:init()
|
||||||
|
PlayerAltMana.super.prototype.init(self, "PlayerAltMana", "player")
|
||||||
|
|
||||||
|
self.side = IceCore.Side.Right
|
||||||
|
self.offset = 0
|
||||||
|
|
||||||
|
self:SetDefaultColor("PlayerAltMana", 87, 82, 141)
|
||||||
|
end
|
||||||
|
|
||||||
|
function PlayerAltMana.prototype:GetDefaultSettings()
|
||||||
|
local settings = PlayerAltMana.super.prototype.GetDefaultSettings(self)
|
||||||
|
|
||||||
|
settings["side"] = IceCore.Side.Right
|
||||||
|
settings["offset"] = 0
|
||||||
|
settings["textVisible"] = {upper = true, lower = false}
|
||||||
|
settings["upperText"] = "[PercentMana:Round]"
|
||||||
|
settings["lowerText"] = "[FractionalMana:Color('3071bf'):Bracket]"
|
||||||
|
|
||||||
|
return settings
|
||||||
|
end
|
||||||
|
|
||||||
|
function GetEventsToRegister()
|
||||||
|
return {"UNIT_DISPLAYPOWER"}
|
||||||
|
--[[ if unitClass == "PRIEST" then
|
||||||
|
return {"PLAYER_SPECIALIZATION_CHANGED"}
|
||||||
|
elseif unitClass == "SHAMAN" then
|
||||||
|
return {"PLAYER_SPECIALIZATION_CHANGED"}
|
||||||
|
elseif unitClass == "DRUID" then
|
||||||
|
return {"UPDATE_SHAPESHIFT_FORM"}
|
||||||
|
end
|
||||||
|
]]-- probably not necessary, but could use as a fallback
|
||||||
|
end
|
||||||
|
|
||||||
|
function PlayerAltMana.prototype:Enable(core)
|
||||||
|
PlayerAltMana.super.prototype.Enable(self, core)
|
||||||
|
|
||||||
|
local eventsToRegister = GetEventsToRegister()
|
||||||
|
for i = 1, #eventsToRegister do
|
||||||
|
self:RegisterEvent(eventsToRegister[i], "Update")
|
||||||
|
end
|
||||||
|
self:RegisterEvent("UNIT_POWER_FREQUENT", "Update")
|
||||||
|
self:RegisterEvent("UNIT_MAXPOWER", "Update")
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
function PlayerAltMana.prototype:Disable(core)
|
||||||
|
PlayerAltMana.super.prototype.Disable(self, core)
|
||||||
|
end
|
||||||
|
|
||||||
|
function ShouldShow(unit)
|
||||||
|
if unitClass == "MONK" then
|
||||||
|
return GetSpecialization() == SPEC_MONK_MISTWEAVER
|
||||||
|
end
|
||||||
|
return UnitPowerType(unit) ~= SPELL_POWER_MANA
|
||||||
|
--[[ if unitClass == "PRIEST" then
|
||||||
|
return UnitPowerType(unit) == SPELL_POWER_INSANITY
|
||||||
|
elseif unitClass == "SHAMAN" then
|
||||||
|
return GetSpecialization() ~= SPEC_SHAMAN_RESTORATION
|
||||||
|
elseif unitClass == "DRUID" then
|
||||||
|
return UnitPowerType(unit) ~= SPELL_POWER_MANA
|
||||||
|
end
|
||||||
|
]]-- probably not necessary, but could use as a fallback
|
||||||
|
end
|
||||||
|
|
||||||
|
function PlayerAltMana.prototype:Update()
|
||||||
|
PlayerAltMana.super.prototype.Update(self)
|
||||||
|
|
||||||
|
self.PlayerAltMana = UnitPower(self.unit, SPELL_POWER_MANA)
|
||||||
|
self.PlayerAltManaMax = UnitPowerMax(self.unit, SPELL_POWER_MANA)
|
||||||
|
|
||||||
|
if (not self.alive or not ShouldShow(self.unit) or not self.PlayerAltMana or not self.PlayerAltManaMax or self.PlayerAltManaMax == 0) then
|
||||||
|
self:Show(false)
|
||||||
|
return
|
||||||
|
else
|
||||||
|
self:Show(true)
|
||||||
|
end
|
||||||
|
|
||||||
|
self:UpdateBar(self.PlayerAltManaMax ~= 0 and self.PlayerAltMana / self.PlayerAltManaMax or 0, "PlayerAltMana")
|
||||||
|
end
|
||||||
|
|
||||||
|
if (unitClass == "PRIEST" and IceHUD.WowVer >= 70000)
|
||||||
|
or (unitClass == "DRUID")
|
||||||
|
or (unitClass == "SHAMAN" and IceHUD.WowVer >= 70000)
|
||||||
|
or (unitClass == "MONK" and IceHUD.WowVer < 70000) then
|
||||||
|
IceHUD.PlayerAltMana = PlayerAltMana:new()
|
||||||
|
end
|
@ -16,6 +16,10 @@ function PlayerMana.prototype:init()
|
|||||||
self:SetDefaultColor("PlayerEnergy", 218, 231, 31)
|
self:SetDefaultColor("PlayerEnergy", 218, 231, 31)
|
||||||
self:SetDefaultColor("PlayerFocus", 242, 149, 98)
|
self:SetDefaultColor("PlayerFocus", 242, 149, 98)
|
||||||
self:SetDefaultColor("PlayerRunicPower", 62, 54, 152)
|
self:SetDefaultColor("PlayerRunicPower", 62, 54, 152)
|
||||||
|
if IceHUD.WowVer >= 70000 then
|
||||||
|
self:SetDefaultColor("PlayerInsanity", 150, 50, 255)
|
||||||
|
self:SetDefaultColor("PlayerFury", 255, 50, 255)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
@ -289,6 +293,10 @@ function PlayerMana.prototype:Update(unit, powertype)
|
|||||||
color = "PlayerRunicPower"
|
color = "PlayerRunicPower"
|
||||||
elseif (self.manaType == SPELL_POWER_FOCUS) then
|
elseif (self.manaType == SPELL_POWER_FOCUS) then
|
||||||
color = "PlayerFocus"
|
color = "PlayerFocus"
|
||||||
|
elseif (IceHUD.WowVer >= 70000 and self.manaType == SPELL_POWER_INSANITY) then
|
||||||
|
color = "PlayerInsanity"
|
||||||
|
elseif (IceHUD.WowVer >= 70000 and self.manaType == SPELL_POWER_FURY) then
|
||||||
|
color = "PlayerFury"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -347,13 +355,13 @@ function PlayerMana.prototype:UpdateEnergy(event, unit)
|
|||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
self.previousEnergy = UnitPower(self.unit)
|
self.previousEnergy = UnitPower(self.unit, UnitPowerType(self.unit))
|
||||||
if IceHUD.WowVer < 40000 then
|
if IceHUD.WowVer < 40000 then
|
||||||
self:Update(unit)
|
self:Update(unit)
|
||||||
end
|
end
|
||||||
|
|
||||||
if self:ShouldUseTicker() and
|
if self:ShouldUseTicker() and
|
||||||
((not (self.previousEnergy) or (self.previousEnergy <= UnitPower(self.unit))) and
|
((not (self.previousEnergy) or (self.previousEnergy <= UnitPower(self.unit, UnitPowerType(self.unit)))) and
|
||||||
(self.moduleSettings.tickerEnabled) and self.manaType == SPELL_POWER_ENERGY) then
|
(self.moduleSettings.tickerEnabled) and self.manaType == SPELL_POWER_ENERGY) then
|
||||||
self.tickStart = GetTime()
|
self.tickStart = GetTime()
|
||||||
self.tickerFrame:Show()
|
self.tickerFrame:Show()
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
local L = LibStub("AceLocale-3.0"):GetLocale("IceHUD", false)
|
local L = LibStub("AceLocale-3.0"):GetLocale("IceHUD", false)
|
||||||
local Resolve = IceCore_CreateClass(IceUnitBar)
|
local Resolve = IceCore_CreateClass(IceUnitBar)
|
||||||
|
|
||||||
local RESOLVE_SPELL_ID = 158298
|
local RESOLVE_SPELL_ID = 158300
|
||||||
local RESOLVE_MAX = 240
|
local RESOLVE_MAX = 240
|
||||||
|
|
||||||
Resolve.prototype.current = nil
|
Resolve.prototype.current = nil
|
||||||
@ -49,45 +49,14 @@ end
|
|||||||
|
|
||||||
-- scan the tooltip and extract the Resolve value
|
-- scan the tooltip and extract the Resolve value
|
||||||
do
|
do
|
||||||
-- making these local as they're not used anywhere else
|
|
||||||
local regions = {}
|
|
||||||
local spellName = GetSpellInfo(RESOLVE_SPELL_ID)
|
local spellName = GetSpellInfo(RESOLVE_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 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
|
||||||
|
|
||||||
local name = UnitAura(self.unit, spellName)
|
self.current = select(15, UnitAura(self.unit, spellName)) or 0
|
||||||
if name then
|
|
||||||
-- Buff found, copy it into the buffer for scanning
|
|
||||||
tooltipBuffer:ClearLines()
|
|
||||||
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
|
|
||||||
|
|
||||||
-- Find the number, save it
|
|
||||||
self.current = tonumber(string.match(table.concat(regions),"%d+")) or 0
|
|
||||||
else
|
|
||||||
self.current = 0
|
|
||||||
end
|
|
||||||
|
|
||||||
self:Update()
|
self:Update()
|
||||||
end
|
end
|
||||||
|
@ -3,12 +3,23 @@ local Runes = IceCore_CreateClass(IceElement)
|
|||||||
|
|
||||||
local IceHUD = _G.IceHUD
|
local IceHUD = _G.IceHUD
|
||||||
|
|
||||||
|
local CooldownFrame_SetTimer = CooldownFrame_SetTimer
|
||||||
|
if IceHUD.WowVer >= 70000 then
|
||||||
|
CooldownFrame_SetTimer = CooldownFrame_Set
|
||||||
|
end
|
||||||
|
|
||||||
-- blizzard cracks me up. the below block is copied verbatim from RuneFrame.lua ;)
|
-- blizzard cracks me up. the below block is copied verbatim from RuneFrame.lua ;)
|
||||||
--Readability == win
|
--Readability == win
|
||||||
local RUNETYPE_BLOOD = 1;
|
local RUNETYPE_BLOOD = 1;
|
||||||
local RUNETYPE_DEATH = 2;
|
local RUNETYPE_DEATH = 2;
|
||||||
local RUNETYPE_FROST = 3;
|
local RUNETYPE_FROST = 3;
|
||||||
local RUNETYPE_CHROMATIC = 4;
|
local RUNETYPE_CHROMATIC = 4;
|
||||||
|
local RUNETYPE_LEGION = 5; -- not real, but makes for an easy update
|
||||||
|
|
||||||
|
local GetRuneType = GetRuneType
|
||||||
|
if IceHUD.WowVer >= 70000 then
|
||||||
|
GetRuneType = function() return RUNETYPE_LEGION end
|
||||||
|
end
|
||||||
|
|
||||||
-- setup the names to be more easily readable
|
-- setup the names to be more easily readable
|
||||||
Runes.prototype.runeNames = {
|
Runes.prototype.runeNames = {
|
||||||
@ -16,6 +27,7 @@ Runes.prototype.runeNames = {
|
|||||||
[RUNETYPE_DEATH] = "Unholy",
|
[RUNETYPE_DEATH] = "Unholy",
|
||||||
[RUNETYPE_FROST] = "Frost",
|
[RUNETYPE_FROST] = "Frost",
|
||||||
[RUNETYPE_CHROMATIC] = "Death",
|
[RUNETYPE_CHROMATIC] = "Death",
|
||||||
|
[RUNETYPE_LEGION] = "SingleRune",
|
||||||
}
|
}
|
||||||
|
|
||||||
Runes.prototype.runeSize = 25
|
Runes.prototype.runeSize = 25
|
||||||
@ -26,10 +38,14 @@ Runes.prototype.numRunes = 6
|
|||||||
function Runes.prototype:init()
|
function Runes.prototype:init()
|
||||||
Runes.super.prototype.init(self, "Runes")
|
Runes.super.prototype.init(self, "Runes")
|
||||||
|
|
||||||
self:SetDefaultColor("Runes"..self.runeNames[RUNETYPE_BLOOD], 255, 0, 0)
|
if IceHUD.WowVer < 70000 then
|
||||||
self:SetDefaultColor("Runes"..self.runeNames[RUNETYPE_DEATH], 0, 207, 0)
|
self:SetDefaultColor("Runes"..self.runeNames[RUNETYPE_BLOOD], 255, 0, 0)
|
||||||
self:SetDefaultColor("Runes"..self.runeNames[RUNETYPE_FROST], 0, 255, 255)
|
self:SetDefaultColor("Runes"..self.runeNames[RUNETYPE_DEATH], 0, 207, 0)
|
||||||
self:SetDefaultColor("Runes"..self.runeNames[RUNETYPE_CHROMATIC], 204, 26, 255)
|
self:SetDefaultColor("Runes"..self.runeNames[RUNETYPE_FROST], 0, 255, 255)
|
||||||
|
self:SetDefaultColor("Runes"..self.runeNames[RUNETYPE_CHROMATIC], 204, 26, 255)
|
||||||
|
else
|
||||||
|
self:SetDefaultColor("Runes"..self.runeNames[RUNETYPE_LEGION], 204, 204, 255)
|
||||||
|
end
|
||||||
self.scalingEnabled = true
|
self.scalingEnabled = true
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -192,11 +208,16 @@ end
|
|||||||
|
|
||||||
-- OVERRIDE
|
-- OVERRIDE
|
||||||
function Runes.prototype:Enable(core)
|
function Runes.prototype:Enable(core)
|
||||||
|
if IceHUD.WowVer >= 70000 then
|
||||||
|
self.numRunes = UnitPowerMax("player", SPELL_POWER_RUNES)
|
||||||
|
end
|
||||||
|
|
||||||
Runes.super.prototype.Enable(self, core)
|
Runes.super.prototype.Enable(self, core)
|
||||||
|
|
||||||
self:RegisterEvent("RUNE_POWER_UPDATE", "UpdateRunePower")
|
self:RegisterEvent("RUNE_POWER_UPDATE", "UpdateRunePower")
|
||||||
self:RegisterEvent("RUNE_TYPE_UPDATE", "UpdateRuneType")
|
self:RegisterEvent("RUNE_TYPE_UPDATE", "UpdateRuneType")
|
||||||
self:RegisterEvent("PLAYER_ENTERING_WORLD", "ResetRuneAvailability")
|
self:RegisterEvent("PLAYER_ENTERING_WORLD", "ResetRuneAvailability")
|
||||||
|
self:RegisterEvent("UNIT_MAXPOWER", "CheckMaxNumRunes")
|
||||||
|
|
||||||
if (self.moduleSettings.hideBlizz) then
|
if (self.moduleSettings.hideBlizz) then
|
||||||
self:HideBlizz()
|
self:HideBlizz()
|
||||||
@ -211,6 +232,20 @@ function Runes.prototype:Disable(core)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function Runes.prototype:CheckMaxNumRunes(event, unit, powerType)
|
||||||
|
if unit ~= "player" then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
if UnitPowerMax("player", SPELL_POWER_RUNES) ~= self.numRunes then
|
||||||
|
self.numRunes = UnitPowerMax("player", SPELL_POWER_RUNES)
|
||||||
|
for i = 1, #self.frame.graphical do
|
||||||
|
self.frame.graphical[i]:Hide()
|
||||||
|
end
|
||||||
|
self:Redraw()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
function Runes.prototype:ResetRuneAvailability()
|
function Runes.prototype:ResetRuneAvailability()
|
||||||
for i=1, self.numRunes do
|
for i=1, self.numRunes do
|
||||||
self:UpdateRunePower(nil, i, true)
|
self:UpdateRunePower(nil, i, true)
|
||||||
@ -224,10 +259,10 @@ function Runes.prototype:UpdateRunePower(event, rune, dontFlash)
|
|||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
-- DEFAULT_CHAT_FRAME:AddMessage("Runes.prototype:UpdateRunePower: rune="..rune.." usable="..(usable and "yes" or "no").." GetRuneType(rune)="..GetRuneType(rune));
|
|
||||||
|
|
||||||
local start, duration, usable = GetRuneCooldown(rune)
|
local start, duration, usable = GetRuneCooldown(rune)
|
||||||
|
|
||||||
|
-- print("Runes.prototype:UpdateRunePower: rune="..rune.." usable="..(usable and "yes" or "no").." GetRuneType(rune)="..GetRuneType(rune));
|
||||||
|
|
||||||
if usable then
|
if usable then
|
||||||
if self.moduleSettings.cooldownMode == "Cooldown" then
|
if self.moduleSettings.cooldownMode == "Cooldown" then
|
||||||
self.frame.graphical[rune].cd:Hide()
|
self.frame.graphical[rune].cd:Hide()
|
||||||
@ -247,14 +282,14 @@ function Runes.prototype:UpdateRunePower(event, rune, dontFlash)
|
|||||||
}
|
}
|
||||||
UIFrameFade(self.frame.graphical[rune].shine, fadeInfo);
|
UIFrameFade(self.frame.graphical[rune].shine, fadeInfo);
|
||||||
end
|
end
|
||||||
else
|
elseif start ~= nil and duration ~= nil then
|
||||||
if self.moduleSettings.cooldownMode == "Cooldown" then
|
if self.moduleSettings.cooldownMode == "Cooldown" then
|
||||||
self.frame.graphical[rune].cd:SetCooldown(GetRuneCooldown(rune))
|
CooldownFrame_SetTimer(self.frame.graphical[rune].cd, start, duration, true)
|
||||||
self.frame.graphical[rune].cd:Show()
|
self.frame.graphical[rune].cd:Show()
|
||||||
elseif self.moduleSettings.cooldownMode == "Alpha" then
|
elseif self.moduleSettings.cooldownMode == "Alpha" then
|
||||||
self.frame.graphical[rune]:SetAlpha(0.2)
|
self.frame.graphical[rune]:SetAlpha(0.2)
|
||||||
elseif self.moduleSettings.cooldownMode == "Both" then
|
elseif self.moduleSettings.cooldownMode == "Both" then
|
||||||
self.frame.graphical[rune].cd:SetCooldown(GetRuneCooldown(rune))
|
CooldownFrame_SetTimer(self.frame.graphical[rune].cd, start, duration, true)
|
||||||
self.frame.graphical[rune].cd:Show()
|
self.frame.graphical[rune].cd:Show()
|
||||||
self.frame.graphical[rune]:SetAlpha(0.2)
|
self.frame.graphical[rune]:SetAlpha(0.2)
|
||||||
end
|
end
|
||||||
@ -266,7 +301,7 @@ function Runes.prototype:ShineFinished(rune)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function Runes.prototype:UpdateRuneType(event, rune)
|
function Runes.prototype:UpdateRuneType(event, rune)
|
||||||
-- DEFAULT_CHAT_FRAME:AddMessage("Runes.prototype:UpdateRuneType: rune="..rune.." GetRuneType(rune)="..GetRuneType(rune));
|
IceHUD:Debug("Runes.prototype:UpdateRuneType: rune="..rune.." GetRuneType(rune)="..GetRuneType(rune));
|
||||||
|
|
||||||
if not rune or tonumber(rune) ~= rune or rune < 1 or rune > self.numRunes then
|
if not rune or tonumber(rune) ~= rune or rune < 1 or rune > self.numRunes then
|
||||||
return
|
return
|
||||||
@ -355,13 +390,15 @@ function Runes.prototype:CreateRune(i, type, name)
|
|||||||
self.frame.graphical[i]:SetHeight(self.runeSize)
|
self.frame.graphical[i]:SetHeight(self.runeSize)
|
||||||
|
|
||||||
-- hax for blizzard's swapping the unholy and frost rune placement on the default ui...
|
-- hax for blizzard's swapping the unholy and frost rune placement on the default ui...
|
||||||
local runeSwapI
|
local runeSwapI = i
|
||||||
if i == 3 or i == 4 then
|
if IceHUD.WowVer < 70000 then
|
||||||
runeSwapI = i + 2
|
if i == 3 or i == 4 then
|
||||||
elseif i == 5 or i == 6 then
|
runeSwapI = i + 2
|
||||||
runeSwapI = i - 2
|
elseif i == 5 or i == 6 then
|
||||||
else
|
runeSwapI = i - 2
|
||||||
runeSwapI = i
|
else
|
||||||
|
runeSwapI = i
|
||||||
|
end
|
||||||
end
|
end
|
||||||
if self.moduleSettings.displayMode == "Horizontal" then
|
if self.moduleSettings.displayMode == "Horizontal" then
|
||||||
self.frame.graphical[i]:SetPoint("TOPLEFT", (runeSwapI-1) * (self.runeSize-5) + (runeSwapI-1) + ((runeSwapI-1) * self.moduleSettings.runeGap), 0)
|
self.frame.graphical[i]:SetPoint("TOPLEFT", (runeSwapI-1) * (self.runeSize-5) + (runeSwapI-1) + ((runeSwapI-1) * self.moduleSettings.runeGap), 0)
|
||||||
|
@ -103,7 +103,7 @@ end
|
|||||||
|
|
||||||
-- Load us up
|
-- Load us up
|
||||||
local _, unitClass = UnitClass("player")
|
local _, unitClass = UnitClass("player")
|
||||||
if (unitClass == "PRIEST" and IceHUD.WowVer >= 50000) then
|
if (unitClass == "PRIEST" and IceHUD.WowVer >= 50000 and IceHUD.WowVer < 70000) then
|
||||||
IceHUD.ShadowOrbs = ShadowOrbs:new()
|
IceHUD.ShadowOrbs = ShadowOrbs:new()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -9,6 +9,7 @@ local AfflictionCoords =
|
|||||||
{0.01562500, 0.28125000, 0.00781250, 0.13281250},
|
{0.01562500, 0.28125000, 0.00781250, 0.13281250},
|
||||||
{0.01562500, 0.28125000, 0.00781250, 0.13281250},
|
{0.01562500, 0.28125000, 0.00781250, 0.13281250},
|
||||||
{0.01562500, 0.28125000, 0.00781250, 0.13281250},
|
{0.01562500, 0.28125000, 0.00781250, 0.13281250},
|
||||||
|
{0.01562500, 0.28125000, 0.00781250, 0.13281250},
|
||||||
}
|
}
|
||||||
|
|
||||||
local DestructionCoords =
|
local DestructionCoords =
|
||||||
@ -31,12 +32,24 @@ function ShardCounter.prototype:init()
|
|||||||
|
|
||||||
self.numericColor = "ShardCounterNumeric"
|
self.numericColor = "ShardCounterNumeric"
|
||||||
self.minLevel = SHARDBAR_SHOW_LEVEL
|
self.minLevel = SHARDBAR_SHOW_LEVEL
|
||||||
|
|
||||||
|
if IceHUD.WowVer >= 70000 then
|
||||||
|
self.runeHeight = 23
|
||||||
|
self.runeWidth = 26
|
||||||
|
self.runeCoords = AfflictionCoords
|
||||||
|
self.unitPower = SPELL_POWER_SOUL_SHARDS
|
||||||
|
self.unit = "player"
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function ShardCounter.prototype:Enable(core)
|
function ShardCounter.prototype:Enable(core)
|
||||||
|
if IceHUD.WowVer >= 70000 then
|
||||||
|
self.numRunes = UnitPowerMax(self.unit, self.unitPower)
|
||||||
|
end
|
||||||
|
|
||||||
ShardCounter.super.prototype.Enable(self, core)
|
ShardCounter.super.prototype.Enable(self, core)
|
||||||
|
|
||||||
if IceHUD.WowVer >= 50000 then
|
if IceHUD.WowVer >= 50000 and IceHUD.WowVer < 70000 then
|
||||||
self:RegisterEvent("PLAYER_TALENT_UPDATE", "UpdatePowerType")
|
self:RegisterEvent("PLAYER_TALENT_UPDATE", "UpdatePowerType")
|
||||||
self:RegisterEvent("UNIT_DISPLAYPOWER", "UpdatePowerType")
|
self:RegisterEvent("UNIT_DISPLAYPOWER", "UpdatePowerType")
|
||||||
self:RegisterEvent("ACTIVE_TALENT_GROUP_CHANGED", "UpdatePowerType")
|
self:RegisterEvent("ACTIVE_TALENT_GROUP_CHANGED", "UpdatePowerType")
|
||||||
@ -44,12 +57,14 @@ function ShardCounter.prototype:Enable(core)
|
|||||||
self:RegisterEvent("PLAYER_SPECIALIZATION_CHANGED", "UpdatePowerType")
|
self:RegisterEvent("PLAYER_SPECIALIZATION_CHANGED", "UpdatePowerType")
|
||||||
self:RegisterEvent("UNIT_MAXPOWER", "UpdatePowerType")
|
self:RegisterEvent("UNIT_MAXPOWER", "UpdatePowerType")
|
||||||
end
|
end
|
||||||
self:UpdatePowerType()
|
if IceHUD.WowVer < 70000 then
|
||||||
|
self:UpdatePowerType()
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function ShardCounter.prototype:UpdateRunePower(event, arg1, arg2)
|
function ShardCounter.prototype:UpdateRunePower(event, arg1, arg2)
|
||||||
if IceHUD.WowVer >= 50000 then
|
if IceHUD.WowVer >= 50000 and IceHUD.WowVer < 70000 then
|
||||||
if event == "UNIT_POWER_FREQUENT" and arg1 == "player" then
|
if event == "UNIT_POWER_FREQUENT" and arg1 == self.unit then
|
||||||
if CurrentSpec == SPEC_WARLOCK_DESTRUCTION and arg2 ~= "BURNING_EMBERS" then
|
if CurrentSpec == SPEC_WARLOCK_DESTRUCTION and arg2 ~= "BURNING_EMBERS" then
|
||||||
return
|
return
|
||||||
elseif CurrentSpec == SPEC_WARLOCK_DEMONOLOGY and arg2 ~= "DEMONIC_FURY" then
|
elseif CurrentSpec == SPEC_WARLOCK_DEMONOLOGY and arg2 ~= "DEMONIC_FURY" then
|
||||||
@ -60,7 +75,7 @@ function ShardCounter.prototype:UpdateRunePower(event, arg1, arg2)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if event == "PLAYER_ENTERING_WORLD" then
|
if event == "PLAYER_ENTERING_WORLD" and IceHUD.WowVer < 70000 then
|
||||||
self:UpdatePowerType(event)
|
self:UpdatePowerType(event)
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -90,7 +105,7 @@ function ShardCounter.prototype:UpdatePowerType(event)
|
|||||||
self.runeCoords = AfflictionCoords
|
self.runeCoords = AfflictionCoords
|
||||||
self.unitPower = SPELL_POWER_SOUL_SHARDS
|
self.unitPower = SPELL_POWER_SOUL_SHARDS
|
||||||
|
|
||||||
local powerMax = UnitPowerMax("player", self.unitPower)
|
local powerMax = UnitPowerMax(self.unit, self.unitPower)
|
||||||
if powerMax == 0 then -- abort abort! this is bad.
|
if powerMax == 0 then -- abort abort! this is bad.
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
@ -102,7 +117,7 @@ function ShardCounter.prototype:UpdatePowerType(event)
|
|||||||
|
|
||||||
if IceHUD.WowVer >= 50000 then
|
if IceHUD.WowVer >= 50000 then
|
||||||
if not IsPlayerSpell(WARLOCK_SOULBURN) then
|
if not IsPlayerSpell(WARLOCK_SOULBURN) then
|
||||||
self.requiredSpec = -1
|
self.requiredSpec = nil
|
||||||
self:RegisterEvent("SPELLS_CHANGED", "UpdatePowerType")
|
self:RegisterEvent("SPELLS_CHANGED", "UpdatePowerType")
|
||||||
else
|
else
|
||||||
self:UnregisterEvent("SPELLS_CHANGED", "UpdatePowerType")
|
self:UnregisterEvent("SPELLS_CHANGED", "UpdatePowerType")
|
||||||
@ -112,7 +127,7 @@ function ShardCounter.prototype:UpdatePowerType(event)
|
|||||||
self.runeCoords = DestructionCoords
|
self.runeCoords = DestructionCoords
|
||||||
self.unitPower = SPELL_POWER_BURNING_EMBERS
|
self.unitPower = SPELL_POWER_BURNING_EMBERS
|
||||||
|
|
||||||
local powerMax = UnitPowerMax("player", self.unitPower)
|
local powerMax = UnitPowerMax(self.unit, self.unitPower)
|
||||||
if powerMax == 0 then -- abort abort! this is bad.
|
if powerMax == 0 then -- abort abort! this is bad.
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
@ -126,7 +141,7 @@ function ShardCounter.prototype:UpdatePowerType(event)
|
|||||||
self.currentGrowMode = self.growModes["height"]
|
self.currentGrowMode = self.growModes["height"]
|
||||||
|
|
||||||
if not IsPlayerSpell(WARLOCK_BURNING_EMBERS) then
|
if not IsPlayerSpell(WARLOCK_BURNING_EMBERS) then
|
||||||
self.requiredSpec = -1
|
self.requiredSpec = nil
|
||||||
self:RegisterEvent("SPELLS_CHANGED", "UpdatePowerType")
|
self:RegisterEvent("SPELLS_CHANGED", "UpdatePowerType")
|
||||||
elseif not IsSpellKnown(WARLOCK_GREEN_FIRE) then
|
elseif not IsSpellKnown(WARLOCK_GREEN_FIRE) then
|
||||||
self:RegisterEvent("SPELLS_CHANGED", "CheckGreenFire")
|
self:RegisterEvent("SPELLS_CHANGED", "CheckGreenFire")
|
||||||
@ -142,7 +157,7 @@ function ShardCounter.prototype:UpdatePowerType(event)
|
|||||||
self.numConsideredFull = 99
|
self.numConsideredFull = 99
|
||||||
self.currentGrowMode = self.growModes["width"]
|
self.currentGrowMode = self.growModes["width"]
|
||||||
else
|
else
|
||||||
self.requiredSpec = -1
|
self.requiredSpec = nil
|
||||||
self:RegisterEvent("SPELLS_CHANGED", "UpdatePowerType")
|
self:RegisterEvent("SPELLS_CHANGED", "UpdatePowerType")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -50,7 +50,11 @@ function SliceAndDice.prototype:Enable(core)
|
|||||||
SliceAndDice.super.prototype.Enable(self, core)
|
SliceAndDice.super.prototype.Enable(self, core)
|
||||||
|
|
||||||
self:RegisterEvent("UNIT_AURA", "UpdateSliceAndDice")
|
self:RegisterEvent("UNIT_AURA", "UpdateSliceAndDice")
|
||||||
self:RegisterEvent("UNIT_COMBO_POINTS", "ComboPointsChanged")
|
if IceHUD.WowVer < 70000 then
|
||||||
|
self:RegisterEvent("UNIT_COMBO_POINTS", "ComboPointsChanged")
|
||||||
|
else
|
||||||
|
self:RegisterEvent("UNIT_POWER", "ComboPointsChanged")
|
||||||
|
end
|
||||||
|
|
||||||
if not self.moduleSettings.alwaysFullAlpha then
|
if not self.moduleSettings.alwaysFullAlpha then
|
||||||
self:Show(false)
|
self:Show(false)
|
||||||
@ -65,7 +69,11 @@ function SliceAndDice.prototype:Disable(core)
|
|||||||
SliceAndDice.super.prototype.Disable(self, core)
|
SliceAndDice.super.prototype.Disable(self, core)
|
||||||
end
|
end
|
||||||
|
|
||||||
function SliceAndDice.prototype:ComboPointsChanged()
|
function SliceAndDice.prototype:ComboPointsChanged(...)
|
||||||
|
if select('#', ...) >= 3 and select(1, ...) == "UNIT_POWER" and select(3, ...) ~= "COMBO_POINTS" then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
self:TargetChanged()
|
self:TargetChanged()
|
||||||
self:UpdateDurationBar()
|
self:UpdateDurationBar()
|
||||||
end
|
end
|
||||||
@ -236,7 +244,7 @@ end
|
|||||||
|
|
||||||
local function SNDGetComboPoints(unit)
|
local function SNDGetComboPoints(unit)
|
||||||
if IceHUD.WowVer >= 60000 then
|
if IceHUD.WowVer >= 60000 then
|
||||||
return UnitPower(unit, 4)
|
return UnitPower(unit, SPELL_POWER_COMBO_POINTS)
|
||||||
elseif IceHUD.WowVer >= 30000 then
|
elseif IceHUD.WowVer >= 30000 then
|
||||||
return GetComboPoints(unit, "target")
|
return GetComboPoints(unit, "target")
|
||||||
else
|
else
|
||||||
@ -244,6 +252,20 @@ 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()
|
||||||
|
return --[[(IceHUD.WowVer < 70000 or not IsSpellKnown(193316)) and]] not IsPlayerSpell(5171) -- IsSpellKnown returns incorrect info for SnD in 7.0
|
||||||
|
-- commented code is here in case we decide we'd like to use this module for Roll the Bones.
|
||||||
|
-- if we do, though, the "active" check gets way more complicated since it can activate any number of 6 different abilities
|
||||||
|
-- with different durations
|
||||||
|
end
|
||||||
|
|
||||||
function SliceAndDice.prototype:UpdateSliceAndDice(event, unit, fromUpdate)
|
function SliceAndDice.prototype:UpdateSliceAndDice(event, unit, fromUpdate)
|
||||||
if unit and unit ~= self.unit then
|
if unit and unit ~= self.unit then
|
||||||
return
|
return
|
||||||
@ -276,12 +298,12 @@ function SliceAndDice.prototype:UpdateSliceAndDice(event, unit, fromUpdate)
|
|||||||
else
|
else
|
||||||
self:UpdateBar(0, "SliceAndDice")
|
self:UpdateBar(0, "SliceAndDice")
|
||||||
|
|
||||||
if SNDGetComboPoints(self.unit) == 0 or (not UnitExists("target") and not self.moduleSettings.bShowWithNoTarget) then
|
if SNDGetComboPoints(self.unit) == 0 or (not UnitExists("target") and not self.moduleSettings.bShowWithNoTarget) or ShouldHide() then
|
||||||
if self.bIsVisible then
|
if self.bIsVisible then
|
||||||
self.bUpdateSnd = nil
|
self.bUpdateSnd = nil
|
||||||
end
|
end
|
||||||
|
|
||||||
if not self.moduleSettings.alwaysFullAlpha then
|
if not self.moduleSettings.alwaysFullAlpha or ShouldHide() then
|
||||||
self:Show(false)
|
self:Show(false)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -321,7 +343,8 @@ function SliceAndDice.prototype:UpdateDurationBar(event, unit)
|
|||||||
end
|
end
|
||||||
|
|
||||||
-- player doesn't want to show the percent of max or the alpha is zeroed out, so don't bother with the duration bar
|
-- player doesn't want to show the percent of max or the alpha is zeroed out, so don't bother with the duration bar
|
||||||
if not self.moduleSettings.showAsPercentOfMax or self.moduleSettings.durationAlpha == 0 or (points == 0 and not self:IsVisible()) then
|
if not self.moduleSettings.showAsPercentOfMax or self.moduleSettings.durationAlpha == 0 or (points == 0 and not self:IsVisible())
|
||||||
|
or ShouldHide() then
|
||||||
self.durationFrame:Hide()
|
self.durationFrame:Hide()
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
@ -19,23 +19,6 @@ local MinLevel = 10
|
|||||||
StaggerBar.prototype.StaggerDuration = 0
|
StaggerBar.prototype.StaggerDuration = 0
|
||||||
StaggerBar.prototype.StaggerEndTime = 0
|
StaggerBar.prototype.StaggerEndTime = 0
|
||||||
|
|
||||||
local function ReadableNumber(num, places)
|
|
||||||
local ret
|
|
||||||
local placeValue = ("%%.%df"):format(places or 0)
|
|
||||||
|
|
||||||
if not num then
|
|
||||||
ret = 0
|
|
||||||
elseif num >= 1000000 then
|
|
||||||
ret = placeValue:format(num / 1000000) .. "M" -- million
|
|
||||||
elseif num >= 1000 then
|
|
||||||
ret = placeValue:format(num / 1000) .. "k" -- thousand
|
|
||||||
else
|
|
||||||
ret = num -- hundreds
|
|
||||||
end
|
|
||||||
|
|
||||||
return ret
|
|
||||||
end
|
|
||||||
|
|
||||||
function StaggerBar.prototype:init()
|
function StaggerBar.prototype:init()
|
||||||
StaggerBar.super.prototype.init(self, "Stagger", "player")
|
StaggerBar.super.prototype.init(self, "Stagger", "player")
|
||||||
|
|
||||||
@ -65,13 +48,14 @@ function StaggerBar.prototype:GetDefaultSettings()
|
|||||||
settings["showAsPercentOfMax"] = true
|
settings["showAsPercentOfMax"] = true
|
||||||
settings["maxPercent"] = 20
|
settings["maxPercent"] = 20
|
||||||
settings["timerAlpha"] = 0.3
|
settings["timerAlpha"] = 0.3
|
||||||
settings["usesDogTagStrings"] = false
|
|
||||||
settings["lockLowerFontAlpha"] = false
|
settings["lockLowerFontAlpha"] = false
|
||||||
settings["lowerTextString"] = ""
|
settings["lowerTextString"] = ""
|
||||||
settings["lowerTextVisible"] = false
|
settings["lowerTextVisible"] = false
|
||||||
settings["hideAnimationSettings"] = true
|
settings["hideAnimationSettings"] = true
|
||||||
settings["bAllowExpand"] = true
|
settings["bAllowExpand"] = true
|
||||||
settings["bShowWithNoTarget"] = true
|
settings["bShowWithNoTarget"] = true
|
||||||
|
settings["upperText"] = "[PercentStagger]"
|
||||||
|
settings["lowerText"] = "[FractionalStagger:Short]"
|
||||||
|
|
||||||
return settings
|
return settings
|
||||||
end
|
end
|
||||||
@ -180,6 +164,20 @@ function StaggerBar.prototype:ACTIVE_TALENT_GROUP_CHANGED()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function StaggerBar.prototype:GetDebuffInfo()
|
function StaggerBar.prototype:GetDebuffInfo()
|
||||||
|
if IceHUD.WowVer >= 70000 then
|
||||||
|
self.amount = UnitStagger(self.unit)
|
||||||
|
self.staggerLevel = 1
|
||||||
|
|
||||||
|
local healthMax = UnitHealthMax(self.unit)
|
||||||
|
local percent = self.amount / healthMax
|
||||||
|
if percent >= STAGGER_YELLOW_TRANSITION then
|
||||||
|
self.staggerLevel = 2
|
||||||
|
elseif percent >= STAGGER_RED_TRANSITION then
|
||||||
|
self.staggerLevel = 3
|
||||||
|
end
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
local amount = 0
|
local amount = 0
|
||||||
local duration = 0
|
local duration = 0
|
||||||
local staggerLevel = 1
|
local staggerLevel = 1
|
||||||
@ -216,19 +214,15 @@ function StaggerBar.prototype:UpdateStaggerBar()
|
|||||||
|
|
||||||
-- local health = UnitHealth(self.unit)
|
-- local health = UnitHealth(self.unit)
|
||||||
local maxHealth = UnitHealthMax(self.unit)
|
local maxHealth = UnitHealthMax(self.unit)
|
||||||
local percent = (self.amount / maxHealth) * 100
|
|
||||||
local percentText = percent >= 10 and floor(percent) or strform("%.1f", percent)
|
|
||||||
local scale = IceHUD:Clamp((self.amount / maxHealth) * (100 / self.moduleSettings.maxPercent), 0, 1)
|
local scale = IceHUD:Clamp((self.amount / maxHealth) * (100 / self.moduleSettings.maxPercent), 0, 1)
|
||||||
|
|
||||||
if self.amount > 0 and self.duration <= 10 then
|
if self.amount > 0 and (IceHUD.WowVer >= 7000 or self.duration <= 10) then
|
||||||
-- self.timerFrame.bar:SetVertexColor(self:GetColor("StaggerTime", self.moduleSettings.timerAlpha))
|
-- self.timerFrame.bar:SetVertexColor(self:GetColor("StaggerTime", self.moduleSettings.timerAlpha))
|
||||||
self:UpdateBar(scale or 0, "Stagger"..self.staggerLevel)
|
self:UpdateBar(scale or 0, "Stagger"..self.staggerLevel)
|
||||||
self:SetBottomText1(self.moduleSettings.upperText .. " " .. ReadableNumber(self.amount, 1) .. " (" .. percentText .. "%)")
|
|
||||||
self:UpdateShown()
|
self:UpdateShown()
|
||||||
self:UpdateTimerFrame()
|
self:UpdateTimerFrame()
|
||||||
else
|
else
|
||||||
self:UpdateBar(0, "Stagger1")
|
self:UpdateBar(0, "Stagger1")
|
||||||
self:SetBottomText1("")
|
|
||||||
self:Show(false)
|
self:Show(false)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -45,11 +45,14 @@ local StunCCList = {
|
|||||||
-- shockwave
|
-- shockwave
|
||||||
46968,
|
46968,
|
||||||
-- Gnaw
|
-- Gnaw
|
||||||
47481,
|
91800,
|
||||||
|
91797,
|
||||||
-- Fists of Fury
|
-- Fists of Fury
|
||||||
113656,
|
113656,
|
||||||
-- Fist of Justice
|
-- Fist of Justice
|
||||||
105593,
|
105593,
|
||||||
|
-- Remorseless Winter
|
||||||
|
115001,
|
||||||
}
|
}
|
||||||
|
|
||||||
local IncapacitateCCList = {
|
local IncapacitateCCList = {
|
||||||
@ -179,7 +182,7 @@ local RootCCList = {
|
|||||||
-- Venom Web Spray
|
-- Venom Web Spray
|
||||||
54706,
|
54706,
|
||||||
-- Chains of Ice
|
-- Chains of Ice
|
||||||
45524,
|
96294,
|
||||||
-- Disable
|
-- Disable
|
||||||
116095,
|
116095,
|
||||||
}
|
}
|
||||||
@ -228,6 +231,7 @@ function TargetCC.prototype:PopulateSpellList(debuffListVar, ccList, ccName)
|
|||||||
|
|
||||||
if spellName and spellName ~= "" then
|
if spellName and spellName ~= "" then
|
||||||
debuffListVar[spellName] = ccName
|
debuffListVar[spellName] = ccName
|
||||||
|
debuffListVar[ccList[i]] = ccName
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -311,7 +315,7 @@ end
|
|||||||
|
|
||||||
function TargetCC.prototype:GetMaxDebuffDuration(unitName, debuffNames)
|
function TargetCC.prototype:GetMaxDebuffDuration(unitName, debuffNames)
|
||||||
local i = 1
|
local i = 1
|
||||||
local debuff, rank, texture, count, debuffType, duration, endTime, unitCaster = UnitAura(unitName, i, "HARMFUL")
|
local debuff, rank, texture, count, debuffType, duration, endTime, unitCaster, _, _, spellId = UnitAura(unitName, i, "HARMFUL")
|
||||||
local isMine = unitCaster == "player"
|
local isMine = unitCaster == "player"
|
||||||
local result = {nil, nil, nil}
|
local result = {nil, nil, nil}
|
||||||
local remaining
|
local remaining
|
||||||
@ -319,7 +323,7 @@ function TargetCC.prototype:GetMaxDebuffDuration(unitName, debuffNames)
|
|||||||
while debuff do
|
while debuff do
|
||||||
remaining = endTime - GetTime()
|
remaining = endTime - GetTime()
|
||||||
|
|
||||||
if debuffNames[debuff] and (not self.moduleSettings.onlyShowForMyDebuffs or isMine) then
|
if debuffNames[spellId] 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}
|
||||||
@ -331,7 +335,7 @@ function TargetCC.prototype:GetMaxDebuffDuration(unitName, debuffNames)
|
|||||||
|
|
||||||
i = i + 1;
|
i = i + 1;
|
||||||
|
|
||||||
debuff, rank, texture, count, debuffType, duration, endTime, unitCaster = UnitAura(unitName, i, "HARMFUL")
|
debuff, rank, texture, count, debuffType, duration, endTime, unitCaster, _, _, spellId = UnitAura(unitName, i, "HARMFUL")
|
||||||
isMine = unitCaster == "player"
|
isMine = unitCaster == "player"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -1,6 +1,11 @@
|
|||||||
local L = LibStub("AceLocale-3.0"):GetLocale("IceHUD", false)
|
local L = LibStub("AceLocale-3.0"):GetLocale("IceHUD", false)
|
||||||
IceTargetInfo = IceCore_CreateClass(IceElement)
|
IceTargetInfo = IceCore_CreateClass(IceElement)
|
||||||
|
|
||||||
|
local CooldownFrame_SetTimer = CooldownFrame_SetTimer
|
||||||
|
if IceHUD.WowVer >= 70000 then
|
||||||
|
CooldownFrame_SetTimer = CooldownFrame_Set
|
||||||
|
end
|
||||||
|
|
||||||
local DogTag = nil
|
local DogTag = nil
|
||||||
|
|
||||||
local internal = "internal"
|
local internal = "internal"
|
||||||
@ -1445,7 +1450,7 @@ function IceTargetInfo.prototype:SetupAura(aura, i, icon, duration, expirationTi
|
|||||||
if (duration and duration > 0 and expirationTime and expirationTime > 0) then
|
if (duration and duration > 0 and expirationTime and expirationTime > 0) then
|
||||||
local start = expirationTime - duration
|
local start = expirationTime - duration
|
||||||
|
|
||||||
frame.cd:SetCooldown(start, duration)
|
CooldownFrame_SetTimer(frame.cd, start, duration, true)
|
||||||
frame.cd:Show()
|
frame.cd:Show()
|
||||||
else
|
else
|
||||||
frame.cd:Hide()
|
frame.cd:Hide()
|
||||||
@ -1624,7 +1629,11 @@ end
|
|||||||
|
|
||||||
function IceTargetInfo.prototype:TargetFlags(event, unit)
|
function IceTargetInfo.prototype:TargetFlags(event, unit)
|
||||||
if (unit == self.unit or unit == internal) then
|
if (unit == self.unit or unit == internal) then
|
||||||
self.tapped = UnitIsTapped(self.unit) and (not UnitIsTappedByPlayer(self.unit))
|
if IceHUD.WowVer < 70000 then
|
||||||
|
self.tapped = UnitIsTapped(self.unit) and (not UnitIsTappedByPlayer(self.unit))
|
||||||
|
else
|
||||||
|
self.tapped = UnitIsTapDenied(self.unit)
|
||||||
|
end
|
||||||
self.targetCombat = UnitAffectingCombat(self.unit) and " |cffee4030Combat|r" or ""
|
self.targetCombat = UnitAffectingCombat(self.unit) and " |cffee4030Combat|r" or ""
|
||||||
self:UpdateBuffs()
|
self:UpdateBuffs()
|
||||||
self:Update(unit)
|
self:Update(unit)
|
||||||
|
@ -332,7 +332,7 @@ threatValue = 100
|
|||||||
scaledPercentZeroToOne = 0
|
scaledPercentZeroToOne = 0
|
||||||
scaledPercent = 0
|
scaledPercent = 0
|
||||||
|
|
||||||
IceHUD:Debug( "Threat: nil threat on valid target" )
|
--IceHUD:Debug( "Threat: nil threat on valid target" )
|
||||||
else
|
else
|
||||||
if self.moduleSettings.showScaledThreat then
|
if self.moduleSettings.showScaledThreat then
|
||||||
scaledPercentZeroToOne = scaledPercent / 100
|
scaledPercentZeroToOne = scaledPercent / 100
|
||||||
|
@ -1,6 +1,11 @@
|
|||||||
local L = LibStub("AceLocale-3.0"):GetLocale("IceHUD", false)
|
local L = LibStub("AceLocale-3.0"):GetLocale("IceHUD", false)
|
||||||
local Totems = IceCore_CreateClass(IceElement)
|
local Totems = IceCore_CreateClass(IceElement)
|
||||||
|
|
||||||
|
local CooldownFrame_SetTimer = CooldownFrame_SetTimer
|
||||||
|
if IceHUD.WowVer >= 70000 then
|
||||||
|
CooldownFrame_SetTimer = CooldownFrame_Set
|
||||||
|
end
|
||||||
|
|
||||||
-- the below block is copied from TotemFrame.lua
|
-- the below block is copied from TotemFrame.lua
|
||||||
local FIRE_TOTEM_SLOT = 1;
|
local FIRE_TOTEM_SLOT = 1;
|
||||||
local EARTH_TOTEM_SLOT = 2;
|
local EARTH_TOTEM_SLOT = 2;
|
||||||
@ -239,7 +244,7 @@ function Totems.prototype:UpdateTotem(event, totem, ...)
|
|||||||
local haveTotem, name, startTime, duration, icon = GetTotemInfo(totem);
|
local haveTotem, name, startTime, duration, icon = GetTotemInfo(totem);
|
||||||
if duration > 0 then
|
if duration > 0 then
|
||||||
self.frame.graphical[totem].totem:SetTexture(icon)
|
self.frame.graphical[totem].totem:SetTexture(icon)
|
||||||
self.frame.graphical[totem].cd:SetCooldown(startTime, duration)
|
CooldownFrame_SetTimer(self.frame.graphical[totem].cd, startTime, duration, true)
|
||||||
self.frame.graphical[totem].cd:Show()
|
self.frame.graphical[totem].cd:Show()
|
||||||
self.frame.graphical[totem]:Show()
|
self.frame.graphical[totem]:Show()
|
||||||
else
|
else
|
||||||
@ -367,7 +372,7 @@ function Totems.prototype:CreateTotem(i, name)
|
|||||||
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])
|
||||||
if duration > 0 then
|
if duration > 0 then
|
||||||
self.frame.graphical[i].cd:SetCooldown(startTime, duration)
|
CooldownFrame_SetTimer(self.frame.graphical[i].cd, startTime, duration, true)
|
||||||
self.frame.graphical[i].cd:Show()
|
self.frame.graphical[i].cd:Show()
|
||||||
self.frame.graphical[i]:Show()
|
self.frame.graphical[i]:Show()
|
||||||
end
|
end
|
||||||
|
Reference in New Issue
Block a user