mirror of
https://github.com/parnic/ice-hud.git
synced 2025-06-16 22:51:53 -05:00
Compare commits
67 Commits
Author | SHA1 | Date | |
---|---|---|---|
2d4d32fa1f | |||
ca544384b8 | |||
46152e92f4 | |||
f0cafee719 | |||
f8c7875501 | |||
715f9584fb | |||
6824721947 | |||
0ac00068b3 | |||
5ca6f20944 | |||
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 |
6
.pkgmeta
6
.pkgmeta
@ -43,11 +43,9 @@ externals:
|
||||
url: svn://svn.wowace.com/wow/libsharedmedia-3-0/mainline/trunk
|
||||
tag: latest
|
||||
libs/LibDogTag-3.0:
|
||||
url: svn://svn.wowace.com/wow/libdogtag-3-0/mainline/trunk
|
||||
tag: latest
|
||||
url: git://git.wowace.com/wow/libdogtag-3-0/mainline.git
|
||||
libs/LibDogTag-Unit-3.0:
|
||||
url: svn://svn.wowace.com/wow/libdogtag-unit-3-0/mainline/trunk
|
||||
tag: latest
|
||||
url: git://git.wowace.com/wow/libdogtag-unit-3-0/mainline.git
|
||||
libs/LibDBIcon-1.0:
|
||||
url: svn://svn.wowace.com/wow/libdbicon-1-0/mainline/trunk/LibDBIcon-1.0
|
||||
libs/LibDualSpec-1.0:
|
||||
|
@ -946,6 +946,8 @@ function IceBarElement.prototype:CreateFrame()
|
||||
|
||||
if self.moduleSettings.rotateBar then
|
||||
self:RotateHorizontal()
|
||||
else
|
||||
self:ResetRotation()
|
||||
end
|
||||
end
|
||||
|
||||
@ -1140,7 +1142,7 @@ function IceBarElement.prototype:Flip(side)
|
||||
end
|
||||
|
||||
-- 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
|
||||
scale = IceHUD:Clamp(scale, 0, 1)
|
||||
|
||||
@ -1150,7 +1152,12 @@ function IceBarElement.prototype:SetBarCoord(barFrame, scale, top)
|
||||
local min_y, max_y
|
||||
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
|
||||
min_y = 1 - scale
|
||||
max_y = 1
|
||||
|
@ -36,6 +36,7 @@ function IceCastBar.prototype:Enable(core)
|
||||
IceCastBar.super.prototype.Enable(self, core)
|
||||
|
||||
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_STOP", "SpellCastStop") -- unit, spell, rank
|
||||
|
||||
@ -256,7 +257,7 @@ end
|
||||
function IceCastBar.prototype:MyOnUpdate()
|
||||
-- safety catch
|
||||
if (self.action == IceCastBar.Actions.None) then
|
||||
IceHUD:Debug("Stopping action ", self.action)
|
||||
--IceHUD:Debug("Stopping action ", self.action)
|
||||
self:StopBar()
|
||||
return
|
||||
end
|
||||
@ -414,9 +415,12 @@ end
|
||||
|
||||
function IceCastBar.prototype:SpellCastSent(event, unit, spell, rank, target)
|
||||
if (unit ~= self.unit) then return end
|
||||
--IceHUD:Debug("SpellCastSent", unit, spell, rank, target)
|
||||
IceHUD:Debug("SpellCastSent", unit, spell, rank, target)
|
||||
end
|
||||
|
||||
function IceCastBar.prototype:SpellCastChanged(event, arg1)
|
||||
IceHUD:Debug("SpellCastChanged", arg1)
|
||||
end
|
||||
|
||||
function IceCastBar.prototype:SpellCastStart(event, unit, spell, rank)
|
||||
if (unit ~= self.unit) then return end
|
||||
|
@ -142,7 +142,7 @@ function IceCore.prototype:CheckDisplayUpdateMessage()
|
||||
thisVersion = @project-date-integer@
|
||||
--@end-non-debug@]===]
|
||||
--@debug@
|
||||
thisVersion = 9999
|
||||
thisVersion = 99999999999999
|
||||
--@end-debug@
|
||||
if self.accountSettings.lastRunVersion < thisVersion then
|
||||
if self.accountSettings.lastRunVersion < 549 then
|
||||
@ -167,6 +167,12 @@ function IceCore.prototype:CheckDisplayUpdateMessage()
|
||||
self.settings.modules["LacerateCount"] = {}
|
||||
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
|
||||
end
|
||||
end
|
||||
|
12
IceHUD.lua
12
IceHUD.lua
@ -272,10 +272,10 @@ function IceHUD:OnEnable(isFirst)
|
||||
IceHUD_Options:OnLoad()
|
||||
--@end-debug@
|
||||
|
||||
if isFirst then
|
||||
-- if isFirst then
|
||||
self:SetDebugging(self.IceCore:GetDebug())
|
||||
self.debugFrame = ChatFrame2
|
||||
end
|
||||
self.debugFrame = ChatFrame1
|
||||
-- end
|
||||
end
|
||||
|
||||
-- add settings changes/updates here so that existing users don't lose their settings
|
||||
@ -358,8 +358,12 @@ function IceHUD:LoadOptions()
|
||||
return true
|
||||
end
|
||||
|
||||
function IceHUD:Debug(msg)
|
||||
function IceHUD:Debug(...)
|
||||
if self.debugging then
|
||||
local msg = ""
|
||||
for n=1,select('#', ...) do
|
||||
msg = msg .. tostring(select(n, ...)) .. " "
|
||||
end
|
||||
self.debugFrame:AddMessage(msg)
|
||||
end
|
||||
end
|
||||
|
10
IceHUD.toc
10
IceHUD.toc
@ -1,4 +1,4 @@
|
||||
## Interface: 60200
|
||||
## Interface: 70000
|
||||
## Author: Parnic, originally created by Iceroth
|
||||
## Name: IceHUD
|
||||
## Title: IceHUD |cff7fff7f-Ace3-|r
|
||||
@ -6,9 +6,9 @@
|
||||
## Version: @project-version@
|
||||
## 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
|
||||
## X-Compatible-With: 50400
|
||||
## X-Compatible-With: 60200
|
||||
## 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
|
||||
|
||||
#@no-lib-strip@
|
||||
@ -36,7 +36,6 @@ modules\TargetHealth.lua
|
||||
modules\TargetMana.lua
|
||||
modules\PetHealth.lua
|
||||
modules\PetMana.lua
|
||||
modules\DruidMana.lua
|
||||
modules\TargetInfo.lua
|
||||
modules\TargetOfTarget.lua
|
||||
modules\ComboPoints.lua
|
||||
@ -83,12 +82,13 @@ modules\Vengeance.lua
|
||||
modules\Resolve.lua
|
||||
modules\PlayerAlternatePower.lua
|
||||
modules\HarmonyPower.lua
|
||||
modules\MonkManaBar.lua
|
||||
modules\ShadowOrbs.lua
|
||||
modules\TargetAbsorb.lua
|
||||
modules\PlayerAbsorb.lua
|
||||
modules\FocusAbsorb.lua
|
||||
modules\Stagger.lua
|
||||
modules\PlayerAltMana.lua
|
||||
modules\ArcaneCharges.lua
|
||||
|
||||
#@do-not-package@
|
||||
IceHUD_Options\Options.lua
|
||||
|
@ -1,4 +1,4 @@
|
||||
## Interface: 60200
|
||||
## Interface: 70000
|
||||
## Title: IceHUD |cff7fff7f-Options-|r
|
||||
## Author: Parnic
|
||||
## Version: @project-version@
|
||||
|
@ -77,7 +77,13 @@ This module is called HarmonyPower. Harmony was the original name for Chi back w
|
||||
If you have DogTags enabled, you can open the Text Settings for the module in question and add SeparateDigits() around the tag you're trying to split up. To display Health/MaxHealth with commas, use: [(SeparateDigits(HP):HPColor "/" SeparateDigits(MaxHP):HPColor):Bracket]. To use periods instead of commas, use: [(SeparateDigits(HP, "."):HPColor "/" SeparateDigits(MaxHP, "."):HPColor):Bracket]. Use the /dog help menu to build your own similar tags for Mana, etc.
|
||||
|
||||
|cff9999ff16. The countdown timers on buffs and debuffs completely obscure the icon. How do I disable the timer text?|r
|
||||
IceHUD is not responsible for this countdown text and cannot control it. The 6.0 patch added an option in the game client to display counts on top of cooldowns. Look at the Action Bars menu under the game's Interface options. You can turn the text on or off there. Mods like OmniCC or CooldownCount will generally give you the same feature but allow you to control when, where, and how the text shows up.]]
|
||||
IceHUD is not responsible for this countdown text and cannot control it. The 6.0 patch added an option in the game client to display counts on top of cooldowns. Look at the Action Bars menu under the game's Interface options. You can turn the text on or off there. Mods like OmniCC or CooldownCount will generally give you the same feature but allow you to control when, where, and how the text shows up.
|
||||
|
||||
|cff9999ff17. When I rotate some modules 90 degrees, such as the castbar, the bar appears to wiggle up and down as it fills or empties. How do I fix this?|r
|
||||
This is a side effect of the animation API that I'm co-opting to force a rotation without having to provide duplicates of every bar texture in the mod. Any bar moving sufficiently quickly and updating rapidly will cause this. IceHUD is intended to be a vertically-oriented mod, so the rotation feature is there for people who are willing to accept the side effects that come with it. My suggestion is to use one of the many horizontally-oriented bar mods out there if you're wanting horizontal bars. Quartz is a good castbar replacement that you can use and disable IceHUD's built-in castbar, for example.
|
||||
|
||||
|cff9999ff18. How do I get rid of the bars that showed up beneath the player in the 7.0 patch?|r
|
||||
Blizzard added a "Personal Resource Display" feature in the 7.0 game client. You can disable it in the Game options -> Interface -> Names -> Personal Resource Display.]]
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -197,13 +197,15 @@ end
|
||||
function IceUnitBar.prototype:RotateHorizontal()
|
||||
IceUnitBar.super.prototype.RotateHorizontal(self)
|
||||
|
||||
if IceHUD.WowVer < 70000 then
|
||||
self:RotateFrame(self.flashFrame)
|
||||
end
|
||||
end
|
||||
|
||||
function IceUnitBar.prototype:ResetRotation()
|
||||
IceUnitBar.super.prototype.ResetRotation(self)
|
||||
|
||||
if self.flashFrame.anim then
|
||||
if IceHUD.WowVer < 70000 and self.flashFrame and self.flashFrame.anim then
|
||||
self.flashFrame.anim:Stop()
|
||||
end
|
||||
end
|
||||
@ -213,14 +215,18 @@ end
|
||||
function IceUnitBar.prototype:Update()
|
||||
IceUnitBar.super.prototype.Update(self)
|
||||
|
||||
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.maxHealth = UnitHealthMax(self.unit)
|
||||
self.healthPercentage = self.maxHealth ~= 0 and (self.health/self.maxHealth) or 0
|
||||
|
||||
self.mana = UnitPower(self.unit)
|
||||
self.maxMana = UnitPowerMax(self.unit)
|
||||
self.mana = UnitPower(self.unit, UnitPowerType(self.unit))
|
||||
self.maxMana = UnitPowerMax(self.unit, UnitPowerType(self.unit))
|
||||
self.manaPercentage = self.maxMana ~= 0 and (self.mana/self.maxMana) or 0
|
||||
|
||||
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
|
||||
|
||||
CastBar.prototype.lagBar = nil
|
||||
CastBar.prototype.spellCastSent = nil
|
||||
|
||||
CastBar.prototype.sentSpell = nil
|
||||
|
||||
-- Constructor --
|
||||
function CastBar.prototype:init()
|
||||
@ -35,6 +34,7 @@ function CastBar.prototype:GetDefaultSettings()
|
||||
settings["usesDogTagStrings"] = false
|
||||
settings["rangeColor"] = true
|
||||
settings["bAllowExpand"] = false
|
||||
settings["respectLagTolerance"] = true
|
||||
|
||||
return settings
|
||||
end
|
||||
@ -119,6 +119,24 @@ function CastBar.prototype:GetOptions()
|
||||
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"] = {
|
||||
type = 'toggle',
|
||||
name = L["Bar visible"],
|
||||
@ -339,7 +357,7 @@ function CastBar.prototype:CheckVehicle()
|
||||
end
|
||||
|
||||
function CastBar.prototype:CVarUpdate(...)
|
||||
self.useFixedLatency = GetCVar("reducedLagTolerance") == "1"
|
||||
self.useFixedLatency = self.moduleSettings.respectLagTolerance and GetCVar("reducedLagTolerance") == "1"
|
||||
self.fixedLatency = tonumber(GetCVar("maxSpellStartRecoveryoffset")) / 1000
|
||||
end
|
||||
|
||||
@ -373,15 +391,14 @@ end
|
||||
|
||||
|
||||
function CastBar.prototype:CreateLagBar()
|
||||
self.lagBar = self:BarFactory(self.lagBar, "LOW","BACKGROUND")
|
||||
self:SetBarCoord(self.lagBar, 0 , true)
|
||||
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:SetVertexColor(r, g, b, self.moduleSettings.lagAlpha)
|
||||
self.lagBar.bar:Hide()
|
||||
end
|
||||
|
||||
@ -391,8 +408,19 @@ function CastBar.prototype:SpellCastSent(event, unit, spell, rank, target)
|
||||
CastBar.super.prototype.SpellCastSent(self, event, unit, spell, rank, target)
|
||||
if (unit ~= self.unit) then return end
|
||||
|
||||
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
|
||||
|
||||
-- OVERRIDE
|
||||
function CastBar.prototype:SpellCastStart(event, unit, spell, rank)
|
||||
@ -403,6 +431,10 @@ function CastBar.prototype:SpellCastStart(event, unit, spell, rank)
|
||||
return
|
||||
end
|
||||
|
||||
if self.sentSpell ~= spell then
|
||||
self.spellCastSent = nil
|
||||
end
|
||||
|
||||
local scale
|
||||
if self.unit == "vehicle" then
|
||||
scale = 0
|
||||
@ -414,8 +446,7 @@ function CastBar.prototype:SpellCastStart(event, unit, spell, rank)
|
||||
scale = IceHUD:Clamp(lag / self.actionDuration, 0, 1)
|
||||
end
|
||||
|
||||
self.lagBar:SetFrameStrata("BACKGROUND")
|
||||
self:SetBarCoord(self.lagBar, scale, true)
|
||||
self:SetBarCoord(self.lagBar, scale, true, true)
|
||||
|
||||
self.spellCastSent = nil
|
||||
end
|
||||
@ -443,8 +474,7 @@ function CastBar.prototype:SpellCastChannelStart(event, unit)
|
||||
|
||||
local top = not self.moduleSettings.reverseChannel
|
||||
|
||||
self.lagBar:SetFrameStrata("MEDIUM")
|
||||
self:SetBarCoord(self.lagBar, scale, top)
|
||||
self:SetBarCoord(self.lagBar, scale, top, true)
|
||||
|
||||
self.spellCastSent = nil
|
||||
end
|
||||
|
@ -17,6 +17,7 @@ IceClassPowerCounter.prototype.DesiredAnimPause = 0.5
|
||||
IceClassPowerCounter.prototype.requiredSpec = nil
|
||||
IceClassPowerCounter.prototype.shouldShowUnmodified = false
|
||||
IceClassPowerCounter.prototype.unmodifiedMaxPerRune = 10
|
||||
IceClassPowerCounter.prototype.unit = "player"
|
||||
|
||||
IceClassPowerCounter.prototype.growModes = { width = 1, height = 2 }
|
||||
IceClassPowerCounter.prototype.currentGrowMode = nil
|
||||
@ -418,6 +419,11 @@ end
|
||||
function IceClassPowerCounter.prototype:Enable(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"))
|
||||
end
|
||||
|
||||
@ -483,6 +489,14 @@ function IceClassPowerCounter.prototype:UpdateRunePower(event, arg1, arg2)
|
||||
return
|
||||
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 percentReady = self.shouldShowUnmodified and (UnitPower("player", self.unitPower, true) / self.unmodifiedMaxPerRune) or numReady
|
||||
|
||||
@ -624,9 +638,20 @@ function IceClassPowerCounter.prototype:ShineFinished(rune)
|
||||
end
|
||||
|
||||
function IceClassPowerCounter.prototype:GetRuneTexture(rune)
|
||||
assert(false, "Must override GetRuneTexture in child classes")
|
||||
return nil
|
||||
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()
|
||||
IceClassPowerCounter.super.prototype.CreateFrame(self)
|
||||
@ -703,9 +728,13 @@ function IceClassPowerCounter.prototype:CreateRune(i)
|
||||
self:SetupRuneTexture(i)
|
||||
|
||||
self.frame.graphical[i].shine = self.frame.graphical[i]:CreateTexture(nil, "OVERLAY")
|
||||
if self:GetShineAtlas(i) then
|
||||
self.frame.graphical[i].shine:SetAtlas(self:GetShineAtlas(i))
|
||||
else
|
||||
self.frame.graphical[i].shine:SetTexture("Interface\\ComboFrame\\ComboPoint")
|
||||
self.frame.graphical[i].shine:SetBlendMode("ADD")
|
||||
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:SetPoint("CENTER", self.frame.graphical[i], "CENTER")
|
||||
|
||||
@ -755,8 +784,13 @@ function IceClassPowerCounter.prototype:SetupRuneTexture(rune)
|
||||
self.frame.graphical[rune]:SetPoint("CENTER", 0, -1 * (runeAdjust * (self.runeHeight-5) + runeAdjust + (runeAdjust * self.moduleSettings.runeGap)))
|
||||
end
|
||||
|
||||
local tex = self:GetRuneTexture(rune)
|
||||
if self:GetRuneMode() == "Graphical" then
|
||||
self.frame.graphical[rune].rune:SetTexture(self:GetRuneTexture(rune))
|
||||
if tex then
|
||||
self.frame.graphical[rune].rune:SetTexture(tex)
|
||||
else
|
||||
self.frame.graphical[rune].rune:SetAtlas(self:GetRuneAtlas(rune), self:UseAtlasSize(rune))
|
||||
end
|
||||
elseif self:GetRuneMode() == "Graphical Bar" then
|
||||
self.frame.graphical[rune].rune:SetTexture(IceElement.TexturePath .. "Combo")
|
||||
elseif self:GetRuneMode() == "Graphical Circle" then
|
||||
@ -766,7 +800,11 @@ function IceClassPowerCounter.prototype:SetupRuneTexture(rune)
|
||||
elseif self:GetRuneMode() == "Graphical Clean Circle" then
|
||||
self.frame.graphical[rune].rune:SetTexture(IceElement.TexturePath .. "ComboCleanCurves")
|
||||
end
|
||||
self.frame.graphical[rune].runebg:SetTexture(self.frame.graphical[rune].rune:GetTexture())
|
||||
if tex then
|
||||
self.frame.graphical[rune].runebg:SetTexture(tex)
|
||||
else
|
||||
self.frame.graphical[rune].runebg:SetAtlas(self.frame.graphical[rune].rune:GetAtlas())
|
||||
end
|
||||
end
|
||||
|
||||
function IceClassPowerCounter.prototype:GetAlphaAdd()
|
||||
|
@ -17,6 +17,15 @@ function ComboPoints.prototype:init()
|
||||
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 -----------------------------------------------------------
|
||||
|
||||
@ -149,6 +158,7 @@ function ComboPoints.prototype:GetOptions()
|
||||
order = 33.2
|
||||
}
|
||||
|
||||
if IceHUD.WowVer < 70000 then
|
||||
opts["anticipation"] = {
|
||||
type = "toggle",
|
||||
name = L["Show Anticipation"],
|
||||
@ -166,11 +176,12 @@ function ComboPoints.prototype:GetOptions()
|
||||
end,
|
||||
order = 33.3
|
||||
}
|
||||
end
|
||||
|
||||
opts["gradient"] = {
|
||||
type = "toggle",
|
||||
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()
|
||||
return self.moduleSettings.gradient
|
||||
end,
|
||||
@ -238,11 +249,18 @@ function ComboPoints.prototype:Enable(core)
|
||||
|
||||
self:RegisterEvent("PLAYER_TARGET_CHANGED", "UpdateComboPoints")
|
||||
if IceHUD.WowVer >= 30000 then
|
||||
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_EXITED_VEHICLE", "UpdateComboPoints")
|
||||
if IceHUD.WowVer < 70000 then
|
||||
self:RegisterEvent("PLAYER_TALENT_UPDATE", "AddAnticipation")
|
||||
self:AddAnticipation()
|
||||
end
|
||||
else
|
||||
self:RegisterEvent("PLAYER_COMBO_POINTS", "UpdateComboPoints")
|
||||
end
|
||||
@ -254,7 +272,15 @@ function ComboPoints.prototype:Enable(core)
|
||||
self:CreateComboFrame(true)
|
||||
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 --------------------------------------------------------
|
||||
|
||||
@ -264,11 +290,11 @@ function ComboPoints.prototype:CreateFrame()
|
||||
|
||||
self.frame:SetFrameStrata("BACKGROUND")
|
||||
if self.moduleSettings.graphicalLayout == "Horizontal" then
|
||||
self.frame:SetWidth(self.comboSize*5)
|
||||
self.frame:SetWidth((self.comboSize - 5)*self:GetMaxComboPoints())
|
||||
self.frame:SetHeight(1)
|
||||
else
|
||||
self.frame:SetWidth(1)
|
||||
self.frame:SetHeight(self.comboSize*5)
|
||||
self.frame:SetHeight(self.comboSize*self:GetMaxComboPoints())
|
||||
end
|
||||
self.frame:ClearAllPoints()
|
||||
self.frame:SetPoint("TOP", self.parent, "BOTTOM", self.moduleSettings.hpos, self.moduleSettings.vpos)
|
||||
@ -297,9 +323,10 @@ function ComboPoints.prototype:CreateComboFrame(forceTextureUpdate)
|
||||
end
|
||||
|
||||
local i
|
||||
local maxComboPoints = self:GetMaxComboPoints()
|
||||
|
||||
-- create backgrounds
|
||||
for i = 1, 5 do
|
||||
for i = 1, maxComboPoints do
|
||||
if (not self.frame.graphicalBG[i]) then
|
||||
local frame = CreateFrame("Frame", nil, self.frame)
|
||||
self.frame.graphicalBG[i] = frame
|
||||
@ -323,9 +350,9 @@ function ComboPoints.prototype:CreateComboFrame(forceTextureUpdate)
|
||||
self.frame.graphicalBG[i]:SetWidth(self.comboSize)
|
||||
self.frame.graphicalBG[i]:SetHeight(self.comboSize)
|
||||
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
|
||||
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
|
||||
self.frame.graphicalBG[i]:SetAlpha(0.15)
|
||||
self.frame.graphicalBG[i].texture:SetVertexColor(self:GetColor("ComboPoints"))
|
||||
@ -334,7 +361,7 @@ function ComboPoints.prototype:CreateComboFrame(forceTextureUpdate)
|
||||
end
|
||||
|
||||
-- create combo points
|
||||
for i = 1, 5 do
|
||||
for i = 1, maxComboPoints do
|
||||
if (not self.frame.graphical[i]) then
|
||||
local frame = CreateFrame("Frame", nil, self.frame)
|
||||
self.frame.graphical[i] = frame
|
||||
@ -359,7 +386,7 @@ function ComboPoints.prototype:CreateComboFrame(forceTextureUpdate)
|
||||
|
||||
local r, g, b = self:GetColor("ComboPoints")
|
||||
if (self.moduleSettings.gradient) then
|
||||
g = g - (0.15*i)
|
||||
g = g - ((1 / maxComboPoints)*i)
|
||||
end
|
||||
self.frame.graphical[i].texture:SetVertexColor(r, g, b)
|
||||
|
||||
@ -367,6 +394,7 @@ function ComboPoints.prototype:CreateComboFrame(forceTextureUpdate)
|
||||
end
|
||||
|
||||
-- create Anticipation points
|
||||
if IceHUD.WowVer < 70000 then
|
||||
for i = 1, 5 do
|
||||
if (not self.frame.graphicalAnt[i]) then
|
||||
local frame = CreateFrame("Frame", nil, self.frame)
|
||||
@ -402,23 +430,32 @@ function ComboPoints.prototype:CreateComboFrame(forceTextureUpdate)
|
||||
|
||||
self.frame.graphicalAnt[i]:Hide()
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
function ComboPoints.prototype:UpdateComboPoints(...)
|
||||
if select('#', ...) >= 3 and select(1, ...) == "UNIT_POWER" and select(3, ...) ~= "COMBO_POINTS" then
|
||||
return
|
||||
end
|
||||
|
||||
function ComboPoints.prototype:UpdateComboPoints()
|
||||
local points, anticipate, _
|
||||
if IceHUD.IceCore:IsInConfigMode() then
|
||||
points = 5
|
||||
points = self:GetMaxComboPoints()
|
||||
elseif IceHUD.WowVer >= 30000 then
|
||||
-- Parnic: apparently some fights have combo points while the player is in a vehicle?
|
||||
local isInVehicle = UnitHasVehicleUI("player")
|
||||
local checkUnit = isInVehicle and "vehicle" or "player"
|
||||
if IceHUD.WowVer >= 60000 then
|
||||
points = UnitPower(checkUnit, 4)
|
||||
points = UnitPower(checkUnit, SPELL_POWER_COMBO_POINTS)
|
||||
else
|
||||
points = GetComboPoints(checkUnit, "target")
|
||||
end
|
||||
|
||||
if IceHUD.WowVer < 70000 then
|
||||
_, _, _, anticipate = UnitAura("player", GetSpellInfo(AnticipationSpellId))
|
||||
else
|
||||
anticipate = 0
|
||||
end
|
||||
else
|
||||
points = GetComboPoints("target")
|
||||
end
|
||||
@ -426,10 +463,14 @@ function ComboPoints.prototype:UpdateComboPoints()
|
||||
points = points 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
|
||||
local r, g, b = self:GetColor("ComboPoints")
|
||||
if (self.moduleSettings.gradient and points) then
|
||||
g = g - (0.15*points)
|
||||
g = g - ((1 / self:GetMaxComboPoints())*points)
|
||||
end
|
||||
self.frame.numeric:SetTextColor(r, g, b, 0.7)
|
||||
|
||||
@ -446,7 +487,7 @@ function ComboPoints.prototype:UpdateComboPoints()
|
||||
else
|
||||
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
|
||||
|
||||
if ((points > 0) or (anticipate > 0)) and not hideIfNoTarget then
|
||||
@ -461,6 +502,7 @@ function ComboPoints.prototype:UpdateComboPoints()
|
||||
self.frame.graphical[i]:Hide()
|
||||
end
|
||||
|
||||
if i <= #self.frame.graphicalAnt then
|
||||
if (i <= anticipate) and not hideIfNoTarget then
|
||||
self.frame.graphicalAnt[i]:Show()
|
||||
else
|
||||
@ -469,6 +511,7 @@ function ComboPoints.prototype:UpdateComboPoints()
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
do
|
||||
local antStacks
|
||||
|
@ -66,7 +66,11 @@ function ComboPointsBar.prototype:Enable(core)
|
||||
|
||||
self:RegisterEvent("PLAYER_TARGET_CHANGED", "UpdateComboPoints")
|
||||
if IceHUD.WowVer >= 30000 then
|
||||
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_EXITED_VEHICLE", "UpdateComboPoints")
|
||||
else
|
||||
@ -80,16 +84,22 @@ function ComboPointsBar.prototype:CreateFrame()
|
||||
self:UpdateComboPoints()
|
||||
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
|
||||
if IceHUD.IceCore:IsInConfigMode() then
|
||||
points = 5
|
||||
points = UnitPowerMax("player", SPELL_POWER_COMBO_POINTS)
|
||||
elseif IceHUD.WowVer >= 30000 then
|
||||
-- Parnic: apparently some fights have combo points while the player is in a vehicle?
|
||||
local isInVehicle = UnitHasVehicleUI("player")
|
||||
local checkUnit = isInVehicle and "vehicle" or "player"
|
||||
if IceHUD.WowVer >= 60000 then
|
||||
points = UnitPower(checkUnit, 4)
|
||||
points = UnitPower(checkUnit, SPELL_POWER_COMBO_POINTS)
|
||||
else
|
||||
points = GetComboPoints(checkUnit, "target")
|
||||
end
|
||||
@ -106,9 +116,8 @@ function ComboPointsBar.prototype:UpdateComboPoints()
|
||||
self:UpdateBar(0, "undef")
|
||||
else
|
||||
self:Show(true)
|
||||
local color = {}
|
||||
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)
|
||||
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
|
||||
|
||||
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()
|
||||
end
|
||||
|
@ -1,8 +1,6 @@
|
||||
local L = LibStub("AceLocale-3.0"):GetLocale("IceHUD", false)
|
||||
local GlobalCoolDown = IceCore_CreateClass(IceBarElement)
|
||||
|
||||
local maxSpellCastSkipTimeMs = 1500
|
||||
|
||||
-- Constructor --
|
||||
function GlobalCoolDown.prototype:init()
|
||||
GlobalCoolDown.super.prototype.init(self, "GlobalCoolDown")
|
||||
@ -18,27 +16,36 @@ end
|
||||
function GlobalCoolDown.prototype:Enable(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("UNIT_SPELLCAST_START","CooldownStateChanged")
|
||||
self:RegisterEvent("UNIT_SPELLCAST_CHANNEL_START","CooldownStateChanged")
|
||||
self:RegisterEvent("UNIT_SPELLCAST_SUCCEEDED","CooldownStateChanged")
|
||||
|
||||
self:RegisterEvent("UNIT_SPELLCAST_INTERRUPTED","CooldownAborted")
|
||||
self:RegisterEvent("UNIT_SPELLCAST_FAILED","CooldownAborted")
|
||||
self:RegisterEvent("UNIT_SPELLCAST_CHANNEL_STOP","SpellCastStop")
|
||||
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.frame:SetFrameStrata("TOOLTIP")
|
||||
self.frame:SetFrameStrata("LOW")
|
||||
|
||||
self.CDSpellId = self:GetSpellId()
|
||||
end
|
||||
|
||||
function GlobalCoolDown.prototype:CooldownAborted(event, unit, spell)
|
||||
if unit ~= "player" or not spell or not self.CurrSpell or self.CurrSpell ~= spell then
|
||||
return
|
||||
end
|
||||
|
||||
self.CurrLerpTime = self.moduleSettings.desiredLerpTime
|
||||
self.CurrSpell = nil
|
||||
function GlobalCoolDown.prototype:CVarUpdate()
|
||||
self.useFixedLatency = self.moduleSettings.respectLagTolerance and GetCVar("reducedLagTolerance") == "1"
|
||||
self.fixedLatency = tonumber(GetCVar("maxSpellStartRecoveryoffset")) / 1000.0
|
||||
end
|
||||
|
||||
-- OVERRIDE
|
||||
@ -57,6 +64,9 @@ function GlobalCoolDown.prototype:GetDefaultSettings()
|
||||
settings["bHideMarkerSettings"] = true
|
||||
settings["showDuringCast"] = true
|
||||
settings["barVisible"]["bg"] = false
|
||||
settings["bAllowExpand"] = false
|
||||
settings["lagAlpha"] = 0.7
|
||||
settings["respectLagTolerance"] = true
|
||||
|
||||
return settings
|
||||
end
|
||||
@ -84,6 +94,45 @@ function GlobalCoolDown.prototype:GetOptions()
|
||||
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
|
||||
end
|
||||
|
||||
@ -91,6 +140,26 @@ function GlobalCoolDown.prototype:IsFull(scale)
|
||||
return false
|
||||
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)
|
||||
if not spell then
|
||||
return nil, nil
|
||||
@ -110,20 +179,31 @@ function GlobalCoolDown.prototype:GetSpellCastTime(spell)
|
||||
end
|
||||
end
|
||||
|
||||
function GlobalCoolDown.prototype:CooldownStateChanged(event, unit, spell)
|
||||
if unit ~= "player" or not spell then
|
||||
function GlobalCoolDown.prototype:CooldownStateChanged(event, unit, spell, _, _, spellId)
|
||||
if unit ~= "player" or not spellId then
|
||||
return
|
||||
end
|
||||
|
||||
if not self.moduleSettings.showDuringCast then
|
||||
local castTime = self:GetSpellCastTime(spell)
|
||||
if castTime and castTime > maxSpellCastSkipTimeMs then
|
||||
-- Ignore all events unrelated to the spell currently being cast
|
||||
if self.CurrSpellId and self.CurrSpellId ~= spellId then
|
||||
return
|
||||
end
|
||||
|
||||
-- Update the current spell ID for all events indicating a spellcast is starting
|
||||
if event ~= "UNIT_SPELLCAST_SUCCEEDED" then
|
||||
self.CurrSpellId = spellId
|
||||
end
|
||||
|
||||
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
|
||||
local bRestart = not self.startTime or start > self.startTime + 0.5
|
||||
if bRestart then
|
||||
@ -136,15 +216,23 @@ function GlobalCoolDown.prototype:CooldownStateChanged(event, unit, spell)
|
||||
self.CurrLerpTime = 0
|
||||
self.lastLerpTime = GetTime()
|
||||
self.moduleSettings.desiredLerpTime = dur or 1
|
||||
self.CurrSpell = spell
|
||||
|
||||
self:UpdateBar(0, "GlobalCoolDown")
|
||||
self:Show(true)
|
||||
end
|
||||
|
||||
-- Update latency indicator
|
||||
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
|
||||
|
||||
if event == "UNIT_SPELLCAST_SUCCEEDED" then
|
||||
self.CurrSpell = nil
|
||||
self:SetBarCoord(self.lagBar, scale, false, true)
|
||||
self.spellCastSent = nil
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@ -163,9 +251,25 @@ function GlobalCoolDown.prototype:CreateFrame()
|
||||
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
|
||||
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
|
||||
|
||||
function GlobalCoolDown.prototype:GetSpellId()
|
||||
return 61304
|
||||
--[[
|
||||
local defaultSpells
|
||||
|
||||
defaultSpells = {
|
||||
@ -184,6 +288,7 @@ function GlobalCoolDown.prototype:GetSpellId()
|
||||
|
||||
local _, unitClass = UnitClass("player")
|
||||
return defaultSpells[unitClass]
|
||||
]]
|
||||
end
|
||||
|
||||
-- Load us up
|
||||
|
@ -23,6 +23,9 @@ function HarmonyPower.prototype:init()
|
||||
else
|
||||
self.unitPower = SPELL_POWER_LIGHT_FORCE
|
||||
end
|
||||
if IceHUD.WowVer >= 70000 then
|
||||
self.requiredSpec = SPEC_MONK_WINDWALKER
|
||||
end
|
||||
self.minLevel = 0
|
||||
self.bTreatEmptyAsFull = true
|
||||
self.unit = "player"
|
||||
@ -33,8 +36,6 @@ function HarmonyPower.prototype:Enable(core)
|
||||
HarmonyPower.super.prototype.Enable(self, core)
|
||||
|
||||
self:RegisterEvent("UNIT_POWER_FREQUENT", "UpdateRunePower")
|
||||
|
||||
self:Redraw()
|
||||
end
|
||||
|
||||
function HarmonyPower.prototype:UpdateRunePower(event, arg1, arg2)
|
||||
@ -48,10 +49,6 @@ function HarmonyPower.prototype:UpdateRunePower(event, arg1, arg2)
|
||||
return
|
||||
end
|
||||
|
||||
if self.fakeNumRunes ~= nil and self.fakeNumRunes > 0 then
|
||||
numRunes = self.fakeNumRunes
|
||||
end
|
||||
|
||||
if numRunes ~= self.numRunes then
|
||||
if numRunes < self.numRunes and #self.frame.graphical >= numRunes then
|
||||
for i=numRunes + 1, #self.frame.graphical do
|
||||
@ -94,15 +91,23 @@ function HarmonyPower.prototype:GetRuneTexture(rune)
|
||||
end
|
||||
|
||||
function HarmonyPower.prototype:ShowBlizz()
|
||||
MonkHarmonyBar:Show()
|
||||
local frame = MonkHarmonyBarFrame
|
||||
if frame == nil then
|
||||
frame = MonkHarmonyBar
|
||||
end
|
||||
|
||||
MonkHarmonyBar:GetScript("OnLoad")(MonkHarmonyBar)
|
||||
frame:Show()
|
||||
frame:GetScript("OnLoad")(frame)
|
||||
end
|
||||
|
||||
function HarmonyPower.prototype:HideBlizz()
|
||||
MonkHarmonyBar:Hide()
|
||||
local frame = MonkHarmonyBarFrame
|
||||
if frame == nil then
|
||||
frame = MonkHarmonyBar
|
||||
end
|
||||
|
||||
MonkHarmonyBar:UnregisterAllEvents()
|
||||
frame:Hide()
|
||||
frame:UnregisterAllEvents()
|
||||
end
|
||||
|
||||
-- Load us up
|
||||
|
@ -27,6 +27,9 @@ function HolyPower.prototype:init()
|
||||
self.numericColor = "HolyPowerNumeric"
|
||||
self.unitPower = SPELL_POWER_HOLY_POWER
|
||||
self.minLevel = PALADINPOWERBAR_SHOW_LEVEL
|
||||
if IceHUD.WowVer >= 70000 then
|
||||
self.requiredSpec = SPEC_PALADIN_RETRIBUTION
|
||||
end
|
||||
self.bTreatEmptyAsFull = true
|
||||
self.unit = "player"
|
||||
self.numRunes = 5
|
||||
@ -75,15 +78,23 @@ function HolyPower.prototype:GetRuneTexture(rune)
|
||||
end
|
||||
|
||||
function HolyPower.prototype:ShowBlizz()
|
||||
PaladinPowerBar:Show()
|
||||
local frame = PaladinPowerBarFrame
|
||||
if frame == nil then
|
||||
frame = PaladinPowerBar
|
||||
end
|
||||
|
||||
PaladinPowerBar:GetScript("OnLoad")(PaladinPowerBar)
|
||||
frame:Show()
|
||||
frame:GetScript("OnLoad")(frame)
|
||||
end
|
||||
|
||||
function HolyPower.prototype:HideBlizz()
|
||||
PaladinPowerBar:Hide()
|
||||
local frame = PaladinPowerBarFrame
|
||||
if frame == nil then
|
||||
frame = PaladinPowerBar
|
||||
end
|
||||
|
||||
PaladinPowerBar:UnregisterAllEvents()
|
||||
frame:Hide()
|
||||
frame:UnregisterAllEvents()
|
||||
end
|
||||
|
||||
function HolyPower.prototype:UpdateRunePower(event)
|
||||
|
@ -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("PlayerFocus", 242, 149, 98)
|
||||
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
|
||||
|
||||
|
||||
@ -233,15 +237,16 @@ function PlayerMana.prototype:ManaType(event, unit)
|
||||
end
|
||||
end
|
||||
|
||||
if self.manaType == SPELL_POWER_RAGE or self.manaType == SPELL_POWER_RUNIC_POWER then
|
||||
self.bTreatEmptyAsFull = true
|
||||
else
|
||||
self.bTreatEmptyAsFull = false
|
||||
end
|
||||
self.bTreatEmptyAsFull = self:TreatEmptyAsFull()
|
||||
|
||||
self:Update(self.unit)
|
||||
end
|
||||
|
||||
function PlayerMana.prototype:TreatEmptyAsFull()
|
||||
return self.manaType == SPELL_POWER_RAGE or self.manaType == SPELL_POWER_RUNIC_POWER
|
||||
or (IceHUD.WowVer >= 70000 and (self.manaType == SPELL_POWER_LUNAR_POWER or self.manaType == SPELL_POWER_INSANITY
|
||||
or self.manaType == SPELL_POWER_FURY))
|
||||
end
|
||||
|
||||
function PlayerMana.prototype:UpdateEvent(event, unit, powertype)
|
||||
self:Update(unit, powertype)
|
||||
@ -289,6 +294,10 @@ function PlayerMana.prototype:Update(unit, powertype)
|
||||
color = "PlayerRunicPower"
|
||||
elseif (self.manaType == SPELL_POWER_FOCUS) then
|
||||
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
|
||||
|
||||
@ -296,8 +305,8 @@ function PlayerMana.prototype:Update(unit, powertype)
|
||||
|
||||
self:ConditionalUpdateFlash()
|
||||
|
||||
if (self.manaPercentage == 1 and self.manaType ~= SPELL_POWER_RAGE and self.manaType ~= SPELL_POWER_RUNIC_POWER)
|
||||
or (self.manaPercentage == 0 and (self.manaType == SPELL_POWER_RAGE or self.manaType == SPELL_POWER_RUNIC_POWER)) then
|
||||
if (self.manaPercentage == 1 and not self:TreatEmptyAsFull())
|
||||
or (self.manaPercentage == 0 and self:TreatEmptyAsFull()) then
|
||||
self:SetupOnUpdate(false)
|
||||
else
|
||||
self:SetupOnUpdate(true)
|
||||
@ -347,13 +356,13 @@ function PlayerMana.prototype:UpdateEnergy(event, unit)
|
||||
return
|
||||
end
|
||||
|
||||
self.previousEnergy = UnitPower(self.unit)
|
||||
self.previousEnergy = UnitPower(self.unit, UnitPowerType(self.unit))
|
||||
if IceHUD.WowVer < 40000 then
|
||||
self:Update(unit)
|
||||
end
|
||||
|
||||
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.tickStart = GetTime()
|
||||
self.tickerFrame:Show()
|
||||
|
@ -1,7 +1,7 @@
|
||||
local L = LibStub("AceLocale-3.0"):GetLocale("IceHUD", false)
|
||||
local Resolve = IceCore_CreateClass(IceUnitBar)
|
||||
|
||||
local RESOLVE_SPELL_ID = 158298
|
||||
local RESOLVE_SPELL_ID = 158300
|
||||
local RESOLVE_MAX = 240
|
||||
|
||||
Resolve.prototype.current = nil
|
||||
@ -49,45 +49,14 @@ end
|
||||
|
||||
-- scan the tooltip and extract the Resolve value
|
||||
do
|
||||
-- making these local as they're not used anywhere else
|
||||
local regions = {}
|
||||
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)
|
||||
if (unit and (unit ~= self.unit)) then
|
||||
return
|
||||
end
|
||||
|
||||
local name = UnitAura(self.unit, spellName)
|
||||
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.current = select(15, UnitAura(self.unit, spellName)) or 0
|
||||
|
||||
self:Update()
|
||||
end
|
||||
|
@ -3,12 +3,23 @@ local Runes = IceCore_CreateClass(IceElement)
|
||||
|
||||
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 ;)
|
||||
--Readability == win
|
||||
local RUNETYPE_BLOOD = 1;
|
||||
local RUNETYPE_DEATH = 2;
|
||||
local RUNETYPE_FROST = 3;
|
||||
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
|
||||
Runes.prototype.runeNames = {
|
||||
@ -16,6 +27,7 @@ Runes.prototype.runeNames = {
|
||||
[RUNETYPE_DEATH] = "Unholy",
|
||||
[RUNETYPE_FROST] = "Frost",
|
||||
[RUNETYPE_CHROMATIC] = "Death",
|
||||
[RUNETYPE_LEGION] = "SingleRune",
|
||||
}
|
||||
|
||||
Runes.prototype.runeSize = 25
|
||||
@ -26,10 +38,14 @@ Runes.prototype.numRunes = 6
|
||||
function Runes.prototype:init()
|
||||
Runes.super.prototype.init(self, "Runes")
|
||||
|
||||
if IceHUD.WowVer < 70000 then
|
||||
self:SetDefaultColor("Runes"..self.runeNames[RUNETYPE_BLOOD], 255, 0, 0)
|
||||
self:SetDefaultColor("Runes"..self.runeNames[RUNETYPE_DEATH], 0, 207, 0)
|
||||
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
|
||||
end
|
||||
|
||||
@ -192,11 +208,16 @@ end
|
||||
|
||||
-- OVERRIDE
|
||||
function Runes.prototype:Enable(core)
|
||||
if IceHUD.WowVer >= 70000 then
|
||||
self.numRunes = UnitPowerMax("player", SPELL_POWER_RUNES)
|
||||
end
|
||||
|
||||
Runes.super.prototype.Enable(self, core)
|
||||
|
||||
self:RegisterEvent("RUNE_POWER_UPDATE", "UpdateRunePower")
|
||||
self:RegisterEvent("RUNE_TYPE_UPDATE", "UpdateRuneType")
|
||||
self:RegisterEvent("PLAYER_ENTERING_WORLD", "ResetRuneAvailability")
|
||||
self:RegisterEvent("UNIT_MAXPOWER", "CheckMaxNumRunes")
|
||||
|
||||
if (self.moduleSettings.hideBlizz) then
|
||||
self:HideBlizz()
|
||||
@ -211,6 +232,20 @@ function Runes.prototype:Disable(core)
|
||||
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()
|
||||
for i=1, self.numRunes do
|
||||
self:UpdateRunePower(nil, i, true)
|
||||
@ -249,12 +284,12 @@ function Runes.prototype:UpdateRunePower(event, rune, dontFlash)
|
||||
end
|
||||
elseif start ~= nil and duration ~= nil then
|
||||
if self.moduleSettings.cooldownMode == "Cooldown" then
|
||||
self.frame.graphical[rune].cd:SetCooldown(start, duration)
|
||||
CooldownFrame_SetTimer(self.frame.graphical[rune].cd, start, duration, true)
|
||||
self.frame.graphical[rune].cd:Show()
|
||||
elseif self.moduleSettings.cooldownMode == "Alpha" then
|
||||
self.frame.graphical[rune]:SetAlpha(0.2)
|
||||
elseif self.moduleSettings.cooldownMode == "Both" then
|
||||
self.frame.graphical[rune].cd:SetCooldown(start, duration)
|
||||
CooldownFrame_SetTimer(self.frame.graphical[rune].cd, start, duration, true)
|
||||
self.frame.graphical[rune].cd:Show()
|
||||
self.frame.graphical[rune]:SetAlpha(0.2)
|
||||
end
|
||||
@ -266,7 +301,7 @@ function Runes.prototype:ShineFinished(rune)
|
||||
end
|
||||
|
||||
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
|
||||
return
|
||||
@ -355,7 +390,8 @@ function Runes.prototype:CreateRune(i, type, name)
|
||||
self.frame.graphical[i]:SetHeight(self.runeSize)
|
||||
|
||||
-- hax for blizzard's swapping the unholy and frost rune placement on the default ui...
|
||||
local runeSwapI
|
||||
local runeSwapI = i
|
||||
if IceHUD.WowVer < 70000 then
|
||||
if i == 3 or i == 4 then
|
||||
runeSwapI = i + 2
|
||||
elseif i == 5 or i == 6 then
|
||||
@ -363,6 +399,7 @@ function Runes.prototype:CreateRune(i, type, name)
|
||||
else
|
||||
runeSwapI = i
|
||||
end
|
||||
end
|
||||
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)
|
||||
else
|
||||
|
@ -103,7 +103,7 @@ end
|
||||
|
||||
-- Load us up
|
||||
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()
|
||||
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},
|
||||
}
|
||||
|
||||
local DestructionCoords =
|
||||
@ -31,12 +32,24 @@ function ShardCounter.prototype:init()
|
||||
|
||||
self.numericColor = "ShardCounterNumeric"
|
||||
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
|
||||
|
||||
function ShardCounter.prototype:Enable(core)
|
||||
if IceHUD.WowVer >= 70000 then
|
||||
self.numRunes = UnitPowerMax(self.unit, self.unitPower)
|
||||
end
|
||||
|
||||
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("UNIT_DISPLAYPOWER", "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("UNIT_MAXPOWER", "UpdatePowerType")
|
||||
end
|
||||
if IceHUD.WowVer < 70000 then
|
||||
self:UpdatePowerType()
|
||||
end
|
||||
end
|
||||
|
||||
function ShardCounter.prototype:UpdateRunePower(event, arg1, arg2)
|
||||
if IceHUD.WowVer >= 50000 then
|
||||
if event == "UNIT_POWER_FREQUENT" and arg1 == "player" then
|
||||
if IceHUD.WowVer >= 50000 and IceHUD.WowVer < 70000 then
|
||||
if event == "UNIT_POWER_FREQUENT" and arg1 == self.unit then
|
||||
if CurrentSpec == SPEC_WARLOCK_DESTRUCTION and arg2 ~= "BURNING_EMBERS" then
|
||||
return
|
||||
elseif CurrentSpec == SPEC_WARLOCK_DEMONOLOGY and arg2 ~= "DEMONIC_FURY" then
|
||||
@ -60,7 +75,7 @@ function ShardCounter.prototype:UpdateRunePower(event, arg1, arg2)
|
||||
end
|
||||
end
|
||||
|
||||
if event == "PLAYER_ENTERING_WORLD" then
|
||||
if event == "PLAYER_ENTERING_WORLD" and IceHUD.WowVer < 70000 then
|
||||
self:UpdatePowerType(event)
|
||||
end
|
||||
|
||||
@ -90,7 +105,7 @@ function ShardCounter.prototype:UpdatePowerType(event)
|
||||
self.runeCoords = AfflictionCoords
|
||||
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.
|
||||
return
|
||||
end
|
||||
@ -102,7 +117,7 @@ function ShardCounter.prototype:UpdatePowerType(event)
|
||||
|
||||
if IceHUD.WowVer >= 50000 then
|
||||
if not IsPlayerSpell(WARLOCK_SOULBURN) then
|
||||
self.requiredSpec = -1
|
||||
self.requiredSpec = nil
|
||||
self:RegisterEvent("SPELLS_CHANGED", "UpdatePowerType")
|
||||
else
|
||||
self:UnregisterEvent("SPELLS_CHANGED", "UpdatePowerType")
|
||||
@ -112,7 +127,7 @@ function ShardCounter.prototype:UpdatePowerType(event)
|
||||
self.runeCoords = DestructionCoords
|
||||
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.
|
||||
return
|
||||
end
|
||||
@ -126,7 +141,7 @@ function ShardCounter.prototype:UpdatePowerType(event)
|
||||
self.currentGrowMode = self.growModes["height"]
|
||||
|
||||
if not IsPlayerSpell(WARLOCK_BURNING_EMBERS) then
|
||||
self.requiredSpec = -1
|
||||
self.requiredSpec = nil
|
||||
self:RegisterEvent("SPELLS_CHANGED", "UpdatePowerType")
|
||||
elseif not IsSpellKnown(WARLOCK_GREEN_FIRE) then
|
||||
self:RegisterEvent("SPELLS_CHANGED", "CheckGreenFire")
|
||||
@ -142,7 +157,7 @@ function ShardCounter.prototype:UpdatePowerType(event)
|
||||
self.numConsideredFull = 99
|
||||
self.currentGrowMode = self.growModes["width"]
|
||||
else
|
||||
self.requiredSpec = -1
|
||||
self.requiredSpec = nil
|
||||
self:RegisterEvent("SPELLS_CHANGED", "UpdatePowerType")
|
||||
end
|
||||
|
||||
|
@ -50,7 +50,11 @@ function SliceAndDice.prototype:Enable(core)
|
||||
SliceAndDice.super.prototype.Enable(self, core)
|
||||
|
||||
self:RegisterEvent("UNIT_AURA", "UpdateSliceAndDice")
|
||||
if IceHUD.WowVer < 70000 then
|
||||
self:RegisterEvent("UNIT_COMBO_POINTS", "ComboPointsChanged")
|
||||
else
|
||||
self:RegisterEvent("UNIT_POWER", "ComboPointsChanged")
|
||||
end
|
||||
|
||||
if not self.moduleSettings.alwaysFullAlpha then
|
||||
self:Show(false)
|
||||
@ -65,7 +69,11 @@ function SliceAndDice.prototype:Disable(core)
|
||||
SliceAndDice.super.prototype.Disable(self, core)
|
||||
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:UpdateDurationBar()
|
||||
end
|
||||
@ -188,7 +196,7 @@ end
|
||||
function SliceAndDice.prototype:ResetRotation()
|
||||
SliceAndDice.super.prototype.ResetRotation(self)
|
||||
|
||||
if self.durationFrame.anim then
|
||||
if self.durationFrame and self.durationFrame.anim then
|
||||
self.durationFrame.anim:Stop()
|
||||
end
|
||||
end
|
||||
@ -236,7 +244,7 @@ end
|
||||
|
||||
local function SNDGetComboPoints(unit)
|
||||
if IceHUD.WowVer >= 60000 then
|
||||
return UnitPower(unit, 4)
|
||||
return UnitPower(unit, SPELL_POWER_COMBO_POINTS)
|
||||
elseif IceHUD.WowVer >= 30000 then
|
||||
return GetComboPoints(unit, "target")
|
||||
else
|
||||
@ -244,6 +252,20 @@ local function SNDGetComboPoints(unit)
|
||||
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)
|
||||
if unit and unit ~= self.unit then
|
||||
return
|
||||
@ -276,12 +298,12 @@ function SliceAndDice.prototype:UpdateSliceAndDice(event, unit, fromUpdate)
|
||||
else
|
||||
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
|
||||
self.bUpdateSnd = nil
|
||||
end
|
||||
|
||||
if not self.moduleSettings.alwaysFullAlpha then
|
||||
if not self.moduleSettings.alwaysFullAlpha or ShouldHide() then
|
||||
self:Show(false)
|
||||
end
|
||||
end
|
||||
@ -321,7 +343,8 @@ function SliceAndDice.prototype:UpdateDurationBar(event, unit)
|
||||
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
|
||||
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()
|
||||
return
|
||||
end
|
||||
|
@ -19,23 +19,6 @@ local MinLevel = 10
|
||||
StaggerBar.prototype.StaggerDuration = 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()
|
||||
StaggerBar.super.prototype.init(self, "Stagger", "player")
|
||||
|
||||
@ -65,13 +48,14 @@ function StaggerBar.prototype:GetDefaultSettings()
|
||||
settings["showAsPercentOfMax"] = true
|
||||
settings["maxPercent"] = 20
|
||||
settings["timerAlpha"] = 0.3
|
||||
settings["usesDogTagStrings"] = false
|
||||
settings["lockLowerFontAlpha"] = false
|
||||
settings["lowerTextString"] = ""
|
||||
settings["lowerTextVisible"] = false
|
||||
settings["hideAnimationSettings"] = true
|
||||
settings["bAllowExpand"] = true
|
||||
settings["bShowWithNoTarget"] = true
|
||||
settings["upperText"] = "[PercentStagger]"
|
||||
settings["lowerText"] = "[FractionalStagger:Short]"
|
||||
|
||||
return settings
|
||||
end
|
||||
@ -180,6 +164,20 @@ function StaggerBar.prototype:ACTIVE_TALENT_GROUP_CHANGED()
|
||||
end
|
||||
|
||||
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 duration = 0
|
||||
local staggerLevel = 1
|
||||
@ -216,19 +214,15 @@ function StaggerBar.prototype:UpdateStaggerBar()
|
||||
|
||||
-- local health = UnitHealth(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)
|
||||
|
||||
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:UpdateBar(scale or 0, "Stagger"..self.staggerLevel)
|
||||
self:SetBottomText1(self.moduleSettings.upperText .. " " .. ReadableNumber(self.amount, 1) .. " (" .. percentText .. "%)")
|
||||
self:UpdateShown()
|
||||
self:UpdateTimerFrame()
|
||||
else
|
||||
self:UpdateBar(0, "Stagger1")
|
||||
self:SetBottomText1("")
|
||||
self:Show(false)
|
||||
end
|
||||
end
|
||||
|
@ -1,6 +1,11 @@
|
||||
local L = LibStub("AceLocale-3.0"):GetLocale("IceHUD", false)
|
||||
IceTargetInfo = IceCore_CreateClass(IceElement)
|
||||
|
||||
local CooldownFrame_SetTimer = CooldownFrame_SetTimer
|
||||
if IceHUD.WowVer >= 70000 then
|
||||
CooldownFrame_SetTimer = CooldownFrame_Set
|
||||
end
|
||||
|
||||
local DogTag = nil
|
||||
|
||||
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
|
||||
local start = expirationTime - duration
|
||||
|
||||
frame.cd:SetCooldown(start, duration)
|
||||
CooldownFrame_SetTimer(frame.cd, start, duration, true)
|
||||
frame.cd:Show()
|
||||
else
|
||||
frame.cd:Hide()
|
||||
@ -1624,7 +1629,11 @@ end
|
||||
|
||||
function IceTargetInfo.prototype:TargetFlags(event, unit)
|
||||
if (unit == self.unit or unit == internal) then
|
||||
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:UpdateBuffs()
|
||||
self:Update(unit)
|
||||
|
@ -18,6 +18,10 @@ function IceTargetMana.prototype:init(moduleName, unit)
|
||||
self:SetDefaultColor("TargetEnergy", 228, 242, 31)
|
||||
self:SetDefaultColor("TargetFocus", 242, 149, 98)
|
||||
self:SetDefaultColor("TargetRunicPower", 52, 64, 221)
|
||||
if IceHUD.WowVer >= 70000 then
|
||||
self:SetDefaultColor("TargetInsanity", 150, 50, 255)
|
||||
self:SetDefaultColor("TargetFury", 255, 50, 255)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@ -105,6 +109,10 @@ function IceTargetMana.prototype:Update(unit)
|
||||
self.color = "TargetEnergy"
|
||||
elseif (manaType == SPELL_POWER_RUNIC_POWER) then
|
||||
self.color = "TargetRunicPower"
|
||||
elseif (IceHUD.WowVer >= 70000 and self.manaType == SPELL_POWER_INSANITY) then
|
||||
self.color = "TargetInsanity"
|
||||
elseif (IceHUD.WowVer >= 70000 and self.manaType == SPELL_POWER_FURY) then
|
||||
self.color = "TargetFury"
|
||||
end
|
||||
|
||||
if (self.tapped) then
|
||||
@ -112,11 +120,7 @@ function IceTargetMana.prototype:Update(unit)
|
||||
end
|
||||
end
|
||||
|
||||
if manaType == SPELL_POWER_RAGE or manaType == SPELL_POWER_RUNIC_POWER then
|
||||
self.bTreatEmptyAsFull = true
|
||||
else
|
||||
self.bTreatEmptyAsFull = false
|
||||
end
|
||||
self.bTreatEmptyAsFull = self:TreatEmptyAsFull(manaType)
|
||||
|
||||
self:UpdateBar(self.manaPercentage, self.color)
|
||||
|
||||
@ -126,6 +130,11 @@ function IceTargetMana.prototype:Update(unit)
|
||||
end
|
||||
end
|
||||
|
||||
function IceTargetMana.prototype:TreatEmptyAsFull(manaType)
|
||||
return manaType == SPELL_POWER_RAGE or manaType == SPELL_POWER_RUNIC_POWER
|
||||
or (IceHUD.WowVer >= 70000 and (manaType == SPELL_POWER_LUNAR_POWER or manaType == SPELL_POWER_INSANITY
|
||||
or manaType == SPELL_POWER_FURY))
|
||||
end
|
||||
|
||||
-- OVERRIDE
|
||||
function IceTargetMana.prototype:GetOptions()
|
||||
|
@ -332,7 +332,7 @@ threatValue = 100
|
||||
scaledPercentZeroToOne = 0
|
||||
scaledPercent = 0
|
||||
|
||||
IceHUD:Debug( "Threat: nil threat on valid target" )
|
||||
--IceHUD:Debug( "Threat: nil threat on valid target" )
|
||||
else
|
||||
if self.moduleSettings.showScaledThreat then
|
||||
scaledPercentZeroToOne = scaledPercent / 100
|
||||
|
@ -1,6 +1,11 @@
|
||||
local L = LibStub("AceLocale-3.0"):GetLocale("IceHUD", false)
|
||||
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
|
||||
local FIRE_TOTEM_SLOT = 1;
|
||||
local EARTH_TOTEM_SLOT = 2;
|
||||
@ -239,7 +244,7 @@ function Totems.prototype:UpdateTotem(event, totem, ...)
|
||||
local haveTotem, name, startTime, duration, icon = GetTotemInfo(totem);
|
||||
if duration > 0 then
|
||||
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]:Show()
|
||||
else
|
||||
@ -367,7 +372,7 @@ function Totems.prototype:CreateTotem(i, name)
|
||||
self.frame.graphical[i].cd:ClearAllPoints()
|
||||
self.frame.graphical[i].cd:SetAllPoints(self.frame.graphical[i])
|
||||
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]:Show()
|
||||
end
|
||||
|
Reference in New Issue
Block a user