mirror of
https://github.com/parnic/ice-hud.git
synced 2025-06-16 06:40:13 -05:00
- reduced cpu usage by 33%-50% across the board (and more in some cases) by changing how updates are registered and how often they run. now the 'update period' slider actually matters. it defaults to 0.033 meaning that frames update about 30 times a second instead of every frame - fixed the "always" display mode for cooldown bars to respect alpha settings (ooc/with target/in combat/etc.)
96 lines
2.7 KiB
Lua
96 lines
2.7 KiB
Lua
local L = LibStub("AceLocale-3.0"):GetLocale("IceHUD", false)
|
|
local ComboPointsBar = IceCore_CreateClass(IceBarElement)
|
|
|
|
function ComboPointsBar.prototype:init()
|
|
ComboPointsBar.super.prototype.init(self, "ComboPointsBar")
|
|
|
|
self:SetDefaultColor("ComboPointsBarMin", 1, 1, 0)
|
|
self:SetDefaultColor("ComboPointsBarMax", 0, 1, 0)
|
|
|
|
self.bTreatEmptyAsFull = true
|
|
end
|
|
|
|
function ComboPointsBar.prototype:GetOptions()
|
|
local opts = ComboPointsBar.super.prototype.GetOptions(self)
|
|
|
|
opts["alwaysDisplay"] = {
|
|
type = "toggle",
|
|
name = L["Always display bar"],
|
|
desc = L["Whether this bar should hide when the player has 0 combo points or stay visible"],
|
|
get = function()
|
|
return self.moduleSettings.alwaysDisplay
|
|
end,
|
|
set = function(info, v)
|
|
self.moduleSettings.alwaysDisplay = v
|
|
self:UpdateComboPoints()
|
|
end,
|
|
disabled = function()
|
|
return not self.moduleSettings.enabled
|
|
end,
|
|
order = 31
|
|
}
|
|
|
|
return opts
|
|
end
|
|
|
|
function ComboPointsBar.prototype:GetDefaultSettings()
|
|
local defaults = ComboPointsBar.super.prototype.GetDefaultSettings(self)
|
|
defaults.textVisible['lower'] = false
|
|
defaults.offset = 8
|
|
defaults.enabled = false
|
|
defaults.alwaysDisplay = false
|
|
defaults.desiredLerpTime = 0.05
|
|
return defaults
|
|
end
|
|
|
|
function ComboPointsBar.prototype:Enable(core)
|
|
ComboPointsBar.super.prototype.Enable(self, core)
|
|
|
|
self:RegisterEvent("PLAYER_TARGET_CHANGED", "UpdateComboPoints")
|
|
if IceHUD.WowVer >= 30000 then
|
|
self:RegisterEvent("UNIT_COMBO_POINTS", "UpdateComboPoints")
|
|
self:RegisterEvent("UNIT_ENTERED_VEHICLE", "UpdateComboPoints")
|
|
self:RegisterEvent("UNIT_EXITED_VEHICLE", "UpdateComboPoints")
|
|
else
|
|
self:RegisterEvent("PLAYER_COMBO_POINTS", "UpdateComboPoints")
|
|
end
|
|
end
|
|
|
|
function ComboPointsBar.prototype:CreateFrame()
|
|
ComboPointsBar.super.prototype.CreateFrame(self)
|
|
|
|
self:UpdateComboPoints()
|
|
end
|
|
|
|
function ComboPointsBar.prototype:UpdateComboPoints()
|
|
local points
|
|
if IceHUD.IceCore:IsInConfigMode() then
|
|
points = 5
|
|
elseif IceHUD.WowVer >= 30000 then
|
|
-- Parnic: apparently some fights have combo points while the player is in a vehicle?
|
|
local isInVehicle = UnitHasVehicleUI("player")
|
|
points = GetComboPoints(isInVehicle and "vehicle" or "player", "target")
|
|
else
|
|
points = GetComboPoints("target")
|
|
end
|
|
|
|
if (points == 0) then
|
|
points = nil
|
|
end
|
|
|
|
if points == nil or points == 0 then
|
|
self:Show(self.moduleSettings.alwaysDisplay)
|
|
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.barFrame.bar:SetVertexColor(color.r, color.g, color.b, 1)
|
|
end
|
|
|
|
self:SetBottomText1(points or "0")
|
|
end
|
|
|
|
IceHUD.ComboPointsBar = ComboPointsBar:new()
|