mirror of
https://github.com/parnic/ice-hud.git
synced 2025-06-16 22:51:53 -05:00
Compare commits
58 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 |
8
.pkgmeta
8
.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:
|
||||
@ -62,4 +60,4 @@ move-folders:
|
||||
IceHUD/IceHUD_Options: IceHUD_Options
|
||||
|
||||
tools-used:
|
||||
- libdatabroker-1-1
|
||||
- libdatabroker-1-1
|
||||
|
@ -1140,7 +1140,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 +1150,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@
|
||||
|
@ -213,14 +213,18 @@ end
|
||||
function IceUnitBar.prototype:Update()
|
||||
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.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,7 +408,18 @@ 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
|
||||
|
||||
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
|
||||
|
||||
-- OVERRIDE
|
||||
@ -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")
|
||||
self.frame.graphical[i].shine:SetTexture("Interface\\ComboFrame\\ComboPoint")
|
||||
self.frame.graphical[i].shine:SetBlendMode("ADD")
|
||||
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: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")
|
||||
|
||||
@ -756,7 +785,12 @@ function IceClassPowerCounter.prototype:SetupRuneTexture(rune)
|
||||
end
|
||||
|
||||
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
|
||||
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(self.frame.graphical[rune].rune:GetTexture())
|
||||
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,28 +158,30 @@ function ComboPoints.prototype:GetOptions()
|
||||
order = 33.2
|
||||
}
|
||||
|
||||
opts["anticipation"] = {
|
||||
type = "toggle",
|
||||
name = L["Show Anticipation"],
|
||||
desc = L["Show points stored by the Anticipation talent"],
|
||||
get = function()
|
||||
return self.moduleSettings.showAnticipation
|
||||
end,
|
||||
set = function(info, v)
|
||||
self.moduleSettings.showAnticipation = v
|
||||
self:AddAnticipation() -- This will activate or deactivate as needed
|
||||
self:Redraw()
|
||||
end,
|
||||
disabled = function()
|
||||
return not self.moduleSettings.enabled
|
||||
end,
|
||||
order = 33.3
|
||||
}
|
||||
if IceHUD.WowVer < 70000 then
|
||||
opts["anticipation"] = {
|
||||
type = "toggle",
|
||||
name = L["Show Anticipation"],
|
||||
desc = L["Show points stored by the Anticipation talent"],
|
||||
get = function()
|
||||
return self.moduleSettings.showAnticipation
|
||||
end,
|
||||
set = function(info, v)
|
||||
self.moduleSettings.showAnticipation = v
|
||||
self:AddAnticipation() -- This will activate or deactivate as needed
|
||||
self:Redraw()
|
||||
end,
|
||||
disabled = function()
|
||||
return not self.moduleSettings.enabled
|
||||
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
|
||||
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_EXITED_VEHICLE", "UpdateComboPoints")
|
||||
self:RegisterEvent("PLAYER_TALENT_UPDATE", "AddAnticipation")
|
||||
self:AddAnticipation()
|
||||
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,58 +394,68 @@ function ComboPoints.prototype:CreateComboFrame(forceTextureUpdate)
|
||||
end
|
||||
|
||||
-- create Anticipation points
|
||||
for i = 1, 5 do
|
||||
if (not self.frame.graphicalAnt[i]) then
|
||||
local frame = CreateFrame("Frame", nil, self.frame)
|
||||
self.frame.graphicalAnt[i] = frame
|
||||
frame.texture = frame:CreateTexture()
|
||||
frame.texture:SetAllPoints(frame)
|
||||
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")
|
||||
if IceHUD.WowVer < 70000 then
|
||||
for i = 1, 5 do
|
||||
if (not self.frame.graphicalAnt[i]) then
|
||||
local frame = CreateFrame("Frame", nil, self.frame)
|
||||
self.frame.graphicalAnt[i] = frame
|
||||
frame.texture = frame:CreateTexture()
|
||||
frame.texture:SetAllPoints(frame)
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
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, _
|
||||
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
|
||||
_, _, _, anticipate = UnitAura("player", GetSpellInfo(AnticipationSpellId))
|
||||
|
||||
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,10 +502,12 @@ function ComboPoints.prototype:UpdateComboPoints()
|
||||
self.frame.graphical[i]:Hide()
|
||||
end
|
||||
|
||||
if (i <= anticipate) and not hideIfNoTarget then
|
||||
self.frame.graphicalAnt[i]:Show()
|
||||
else
|
||||
self.frame.graphicalAnt[i]:Hide()
|
||||
if i <= #self.frame.graphicalAnt then
|
||||
if (i <= anticipate) and not hideIfNoTarget then
|
||||
self.frame.graphicalAnt[i]:Show()
|
||||
else
|
||||
self.frame.graphicalAnt[i]:Hide()
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -66,7 +66,11 @@ function ComboPointsBar.prototype:Enable(core)
|
||||
|
||||
self:RegisterEvent("PLAYER_TARGET_CHANGED", "UpdateComboPoints")
|
||||
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_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
|
||||
return
|
||||
end
|
||||
-- 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
|
||||
end
|
||||
|
||||
if event == "UNIT_SPELLCAST_SUCCEEDED" then
|
||||
self.CurrSpell = nil
|
||||
-- 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
|
||||
|
||||
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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
||||
@ -289,6 +293,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
|
||||
|
||||
@ -347,13 +355,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")
|
||||
|
||||
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)
|
||||
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,13 +390,15 @@ 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
|
||||
if i == 3 or i == 4 then
|
||||
runeSwapI = i + 2
|
||||
elseif i == 5 or i == 6 then
|
||||
runeSwapI = i - 2
|
||||
else
|
||||
runeSwapI = i
|
||||
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
|
||||
runeSwapI = i - 2
|
||||
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)
|
||||
|
@ -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
|
||||
self:UpdatePowerType()
|
||||
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")
|
||||
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
|
||||
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
|
||||
@ -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
|
||||
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:UpdateBuffs()
|
||||
self:Update(unit)
|
||||
|
@ -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