mirror of
https://github.com/parnic/ice-hud.git
synced 2025-06-16 14:50:13 -05:00
This change is potentially contentious because it's a very old default, but with health and power values being so incredibly high in Legion, the shortened form of values is immensely more readable. This change will not affect those who have modified their text settings and the Short form only kicks in when values hit 10,000 or higher.
164 lines
4.7 KiB
Lua
164 lines
4.7 KiB
Lua
local L = LibStub("AceLocale-3.0"):GetLocale("IceHUD", false)
|
|
local TargetTargetHealth = IceCore_CreateClass(IceTargetHealth)
|
|
TargetTargetHealth.prototype.scheduledEvent = nil
|
|
|
|
local SelfDisplayModeOptions = {"Color as SelfColor", "Hide", "Normal"}
|
|
|
|
|
|
-- Constructor --
|
|
function TargetTargetHealth.prototype:init()
|
|
TargetTargetHealth.super.prototype.init(self, "TargetTargetHealth", "targettarget")
|
|
|
|
self:SetDefaultColor("TargetTargetHealthHostile", 231, 31, 36)
|
|
self:SetDefaultColor("TargetTargetHealthFriendly", 46, 223, 37)
|
|
self:SetDefaultColor("TargetTargetHealthNeutral", 210, 219, 87)
|
|
self:SetDefaultColor("SelfColor", 255, 255, 255)
|
|
end
|
|
|
|
function TargetTargetHealth.prototype:GetDefaultSettings()
|
|
local settings = TargetTargetHealth.super.prototype.GetDefaultSettings(self)
|
|
|
|
settings["side"] = IceCore.Side.Right
|
|
settings["offset"] = 12
|
|
settings["classColor"] = false
|
|
settings["selfColor"] = { r = 0, g = 0, b = 1 }
|
|
settings["selfDisplayMode"] = "Color as SelfColor"
|
|
settings["upperText"] = "[PercentHP:Round]"
|
|
settings["lowerText"] = "[FractionalHP:Short:HPColor:Bracket]"
|
|
settings["barVerticalOffset"] = 35
|
|
settings["scale"] = 0.7
|
|
settings["enabled"] = false
|
|
settings["hideBlizz"] = false
|
|
|
|
return settings
|
|
end
|
|
|
|
|
|
-- OVERRIDE
|
|
function TargetTargetHealth.prototype:GetOptions()
|
|
local opts = TargetTargetHealth.super.prototype.GetOptions(self)
|
|
|
|
opts["hideBlizz"] = nil
|
|
|
|
opts["selfDisplayMode"] = {
|
|
type = 'select',
|
|
name = L["Self Display Mode"],
|
|
desc = L["What this bar should do whenever the player is the TargetOfTarget\n\nNOTE: When this is set to 'hide', then click-targeting is not available due to Blizzard's restrictions"],
|
|
get = function(info)
|
|
return IceHUD:GetSelectValue(info, self.moduleSettings.selfDisplayMode)
|
|
end,
|
|
set = function(info, value)
|
|
self.moduleSettings.selfDisplayMode = info.option.values[value]
|
|
if info.option.values[value] == "Hide" then
|
|
self.moduleSettings.allowMouseInteraction = false
|
|
self.DisplayClickTargetOption = false
|
|
UnregisterUnitWatch(self.frame)
|
|
else
|
|
RegisterUnitWatch(self.frame)
|
|
self.DisplayClickTargetOption = true
|
|
end
|
|
IceHUD:NotifyOptionsChange()
|
|
self:Redraw()
|
|
end,
|
|
disabled = function()
|
|
return not self.moduleSettings.enabled
|
|
end,
|
|
values = SelfDisplayModeOptions,
|
|
order = 44,
|
|
}
|
|
|
|
opts["selfColor"] = {
|
|
type = "color",
|
|
name = L["Self Color"],
|
|
desc = L["Set the color of the TargetTarget bar if you are your target's target."],
|
|
get = function()
|
|
return self.moduleSettings.selfColor.r, self.moduleSettings.selfColor.g, self.moduleSettings.selfColor.b
|
|
end,
|
|
set = function(info, r, g, b)
|
|
self.moduleSettings.selfColor = { r = r, g = g, b = b }
|
|
IceHUD.IceCore:SetColor("SelfColor", r, g, b)
|
|
end,
|
|
disabled = function()
|
|
return not self.moduleSettings.enabled
|
|
end,
|
|
hasAlpha = false,
|
|
order = 45,
|
|
}
|
|
|
|
return opts
|
|
end
|
|
|
|
|
|
function TargetTargetHealth.prototype:Enable(core)
|
|
self.registerEvents = false
|
|
TargetTargetHealth.super.prototype.Enable(self, core)
|
|
|
|
if self.moduleSettings.selfDisplayMode == "Hide" then
|
|
UnregisterUnitWatch(self.frame)
|
|
self.DisplayClickTargetOption = false
|
|
self.moduleSettings.allowMouseInteraction = false
|
|
self:EnableClickTargeting(false)
|
|
end
|
|
|
|
if self.moduleSettings.useSelfColor ~= nil then
|
|
if self.moduleSettings.useSelfColor == true then
|
|
self.moduleSettings.selfDisplayMode = "Color as SelfColor"
|
|
else
|
|
self.moduleSettings.selfDisplayMode = "Normal"
|
|
end
|
|
|
|
self.moduleSettings.useSelfColor = nil
|
|
end
|
|
|
|
self.scheduledEvent = self:ScheduleRepeatingTimer("Update", 0.1, "targettarget")
|
|
end
|
|
|
|
function TargetTargetHealth.prototype:Disable(core)
|
|
TargetTargetHealth.super.prototype.Disable(self, core)
|
|
|
|
self:CancelTimer(self.scheduledEvent, true)
|
|
end
|
|
|
|
function TargetTargetHealth.prototype:Update(unit)
|
|
self.color = "TargetTargetHealthFriendly" -- friendly > 4
|
|
|
|
local reaction = UnitReaction(self.unit, "player")
|
|
|
|
if (reaction and (reaction == 4)) then
|
|
self.color = "TargetTargetHealthNeutral"
|
|
elseif (reaction and (reaction < 4)) then
|
|
self.color = "TargetTargetHealthHostile"
|
|
end
|
|
|
|
if (self.moduleSettings.classColor) then
|
|
self.color = self.unitClass
|
|
end
|
|
|
|
if (self.moduleSettings.scaleHealthColor) then
|
|
self.color = "ScaledHealthColor"
|
|
end
|
|
|
|
if (self.tapped) then
|
|
self.color = "Tapped"
|
|
end
|
|
|
|
if UnitIsUnit("player", self.unit) then
|
|
if self.moduleSettings.selfDisplayMode == "Color as SelfColor" then
|
|
self.color = "SelfColor"
|
|
elseif self.moduleSettings.selfDisplayMode == "Hide" then
|
|
self:Show(false)
|
|
return
|
|
end
|
|
end
|
|
|
|
if self.moduleSettings.selfDisplayMode == "Hide" then
|
|
self:Show(UnitExists(self.unit))
|
|
end
|
|
|
|
self.determineColor = false
|
|
TargetTargetHealth.super.prototype.Update(self, unit)
|
|
end
|
|
|
|
-- Load us up
|
|
IceHUD.TargetTargetHealth = TargetTargetHealth:new()
|