- added party role icon to TargetHealth module (and CustomHealth by virtue of inheritance)

This commit is contained in:
Parnic
2010-09-19 06:27:54 +00:00
parent 36d2592e78
commit 7646dba873

View File

@ -16,7 +16,7 @@ IceTargetHealth.prototype.RareEliteTexture = IceElement.TexturePath .. "RareElit
IceTargetHealth.prototype.RareTexture = IceElement.TexturePath .. "Rare" IceTargetHealth.prototype.RareTexture = IceElement.TexturePath .. "Rare"
IceTargetHealth.prototype.DisplayClickTargetOption = true IceTargetHealth.prototype.DisplayClickTargetOption = true
local configMode = false IceTargetHealth.prototype.configMode = false
-- Constructor -- -- Constructor --
function IceTargetHealth.prototype:init(moduleName, unit) function IceTargetHealth.prototype:init(moduleName, unit)
@ -58,6 +58,9 @@ function IceTargetHealth.prototype:GetDefaultSettings()
settings["PvPIconOnTop"] = false settings["PvPIconOnTop"] = false
settings["allowMouseInteraction"] = false settings["allowMouseInteraction"] = false
settings["npcHostilityColor"] = false settings["npcHostilityColor"] = false
settings["showPartyRoleIcon"] = false
settings["PartyRoleIconOffset"] = {x=33, y=-8}
settings["PartyRoleIconScale"] = 0.9
return settings return settings
end end
@ -188,12 +191,13 @@ end
name = "Icon config mode", name = "Icon config mode",
desc = "With this enabled, all icons draw so you can configure their placement\n\nNote: the combat and status icons are actually the same texture so you'll only see combat in config mode (unless you're already resting)", desc = "With this enabled, all icons draw so you can configure their placement\n\nNote: the combat and status icons are actually the same texture so you'll only see combat in config mode (unless you're already resting)",
get = function() get = function()
return configMode return self.configMode
end, end,
set = function(info, v) set = function(info, v)
configMode = v self.configMode = v
self:CheckPvP() self:CheckPvP()
self:UpdateRaidTargetIcon() self:UpdateRaidTargetIcon()
self:CheckPartyRole()
self:Redraw() self:Redraw()
end, end,
order = 5 order = 5
@ -510,6 +514,85 @@ end
end, end,
order = 63 order = 63
}, },
headerPartyRoleIcon = {
type = 'header',
name = "Party Role icon",
order = 65
},
PartyRoleIcon = {
type = "toggle",
name = "Show Party Role icon",
desc = "Whether or not to show the Party Role icon",
get = function()
return self.moduleSettings.showPartyRoleIcon
end,
set = function(info, value)
self.moduleSettings.showPartyRoleIcon = value
self:CheckPartyRole()
end,
disabled = function()
return not self.moduleSettings.enabled
end,
order = 66
},
PartyRoleIconOffsetX = {
type = "range",
name = "Party Role Icon Horizontal Offset",
desc = "How much to offset the Party Role icon from the bar horizontally",
min = 0,
max = 250,
step = 1,
get = function()
return self.moduleSettings.PartyRoleIconOffset['x']
end,
set = function(info, v)
self.moduleSettings.PartyRoleIconOffset['x'] = v
self:SetTexLoc(self.frame.PartyRoleIcon, self.moduleSettings.PartyRoleIconOffset['x'], self.moduleSettings.PartyRoleIconOffset['y'])
end,
disabled = function()
return not self.moduleSettings.enabled or not self.moduleSettings.showPartyRoleIcon
end,
order = 67
},
PartyRoleIconOffsetY = {
type = "range",
name = "Party Role Icon Vertical Offset",
desc = "How much to offset the Party Role icon from the bar vertically",
min = -300,
max = 50,
step = 1,
get = function()
return self.moduleSettings.PartyRoleIconOffset['y']
end,
set = function(info, v)
self.moduleSettings.PartyRoleIconOffset['y'] = v
self:SetTexLoc(self.frame.PartyRoleIcon, self.moduleSettings.PartyRoleIconOffset['x'], self.moduleSettings.PartyRoleIconOffset['y'])
end,
disabled = function()
return not self.moduleSettings.enabled or not self.moduleSettings.showPartyRoleIcon
end,
order = 68
},
PartyRoleIconScale = {
type = "range",
name = "Party Role Icon Scale",
desc = "How much to scale the Party Role icon",
min = 0.05,
max = 2,
step = 0.05,
get = function()
return self.moduleSettings.PartyRoleIconScale
end,
set = function(info, v)
self.moduleSettings.PartyRoleIconScale = v
self:SetTexScale(self.frame.PartyRoleIcon, 20, 20, v)
end,
disabled = function()
return not self.moduleSettings.enabled or not self.moduleSettings.showPartyRoleIcon
end,
order = 69
}
} }
} }
@ -529,6 +612,9 @@ function IceTargetHealth.prototype:Enable(core)
self:RegisterEvent("UPDATE_FACTION", "CheckPvP") self:RegisterEvent("UPDATE_FACTION", "CheckPvP")
self:RegisterEvent("PLAYER_FLAGS_CHANGED", "CheckPvP") self:RegisterEvent("PLAYER_FLAGS_CHANGED", "CheckPvP")
self:RegisterEvent("UNIT_FACTION", "CheckPvP") self:RegisterEvent("UNIT_FACTION", "CheckPvP")
self:RegisterEvent("LFG_PROPOSAL_UPDATE", "CheckPartyRole")
self:RegisterEvent("LFG_PROPOSAL_FAILED", "CheckPartyRole")
self:RegisterEvent("LFG_ROLE_UPDATE", "CheckPartyRole")
end end
if (self.moduleSettings.hideBlizz) then if (self.moduleSettings.hideBlizz) then
@ -662,7 +748,7 @@ function IceTargetHealth.prototype:Update(unit)
self.barFrame.classIcon:Show() self.barFrame.classIcon:Show()
self.barFrame.classIcon:SetAlpha(self.alpha == 0 and 0 or math.min(1, self.alpha + 0.2)) self.barFrame.classIcon:SetAlpha(self.alpha == 0 and 0 or math.min(1, self.alpha + 0.2))
if configMode or IceHUD.IceCore:IsInConfigMode() or classification == "worldboss" or classification == "elite" then if self.configMode or IceHUD.IceCore:IsInConfigMode() or classification == "worldboss" or classification == "elite" then
self.barFrame.classIcon:SetTexture(self.EliteTexture) self.barFrame.classIcon:SetTexture(self.EliteTexture)
elseif classification == "rareelite" then elseif classification == "rareelite" then
self.barFrame.classIcon:SetTexture(self.RareEliteTexture) self.barFrame.classIcon:SetTexture(self.RareEliteTexture)
@ -715,6 +801,7 @@ function IceTargetHealth.prototype:Update(unit)
end end
self:CheckPvP() self:CheckPvP()
self:CheckPartyRole()
self:SetIconAlpha() self:SetIconAlpha()
end end
@ -800,12 +887,12 @@ function IceTargetHealth.prototype:UpdateRaidTargetIcon()
self.frame.raidIcon:SetFrameStrata("LOW") self.frame.raidIcon:SetFrameStrata("LOW")
end end
if not self.moduleSettings.showRaidIcon or (not UnitExists(self.unit) and (not configMode and not IceHUD.IceCore:IsInConfigMode())) then if not self.moduleSettings.showRaidIcon or (not UnitExists(self.unit) and (not self.configMode and not IceHUD.IceCore:IsInConfigMode())) then
self.frame.raidIcon:Hide() self.frame.raidIcon:Hide()
return return
end end
local index = (IceHUD.IceCore:IsInConfigMode() or configMode) and 1 or GetRaidTargetIndex(self.unit); local index = (IceHUD.IceCore:IsInConfigMode() or self.configMode) and 1 or GetRaidTargetIndex(self.unit);
if (index and (index > 0)) then if (index and (index > 0)) then
SetRaidTargetIconTexture(self.frame.raidIcon.icon, index) SetRaidTargetIconTexture(self.frame.raidIcon.icon, index)
@ -835,7 +922,7 @@ function IceTargetHealth.prototype:CheckPvP()
local pvpMode = nil local pvpMode = nil
local minx, maxx, miny, maxy local minx, maxx, miny, maxy
if configMode or UnitIsPVPFreeForAll(self.unit) then if self.configMode or UnitIsPVPFreeForAll(self.unit) then
pvpMode = "FFA" pvpMode = "FFA"
minx, maxx, miny, maxy = 0.05, 0.605, 0.015, 0.57 minx, maxx, miny, maxy = 0.05, 0.605, 0.015, 0.57
@ -850,7 +937,7 @@ function IceTargetHealth.prototype:CheckPvP()
end end
if pvpMode then if pvpMode then
if configMode or self.moduleSettings.showPvPIcon then if self.configMode or self.moduleSettings.showPvPIcon then
self.barFrame.PvPIcon = self:CreateTexCoord(self.barFrame.PvPIcon, "Interface\\TargetingFrame\\UI-PVP-"..pvpMode, 20, 20, self.barFrame.PvPIcon = self:CreateTexCoord(self.barFrame.PvPIcon, "Interface\\TargetingFrame\\UI-PVP-"..pvpMode, 20, 20,
self.moduleSettings.PvPIconScale, minx, maxx, miny, maxy) self.moduleSettings.PvPIconScale, minx, maxx, miny, maxy)
self:SetTexLoc(self.barFrame.PvPIcon, self.moduleSettings.PvPIconOffset['x'], self.moduleSettings.PvPIconOffset['y']) self:SetTexLoc(self.barFrame.PvPIcon, self.moduleSettings.PvPIconOffset['x'], self.moduleSettings.PvPIconOffset['y'])
@ -874,6 +961,9 @@ function IceTargetHealth.prototype:SetIconAlpha()
if self.barFrame.PvPIcon then if self.barFrame.PvPIcon then
self.barFrame.PvPIcon:SetAlpha(self.moduleSettings.lockIconAlpha and 1 or self.alpha) self.barFrame.PvPIcon:SetAlpha(self.moduleSettings.lockIconAlpha and 1 or self.alpha)
end end
if self.frame.PartyRoleIcon then
self.frame.PartyRoleIcon:SetAlpha(self.moduleSettings.lockIconAlpha and 1 or self.alpha)
end
end end
@ -908,7 +998,73 @@ function IceTargetHealth.prototype:UpdateBar(scale, color, alpha)
]] ]]
end end
function IceTargetHealth.prototype:CheckPartyRole()
local IsLFGParty
local mode, submode
mode, submode= GetLFGMode()
IsLFGParty = (mode ~= nil and mode ~= "abandonedInDungeon" and mode ~= "queued")
if self.configMode or IsLFGParty then
if self.configMode or self.moduleSettings.showPartyRoleIcon then
local isTank, isHeal, isDPS
local proposalExists, typeID, id, name
local texture, role, hasResponded, totalEncounters, completedEncounters, numMembers, isleader
proposalExists, typeID, id, name, texture, role, hasResponded, totalEncounters, completedEncounters, numMembers, isleader = GetLFGProposal()
local p = self.unit
if IceHUD.WowVer < 40000 then
isTank, isHeal, isDPS = UnitGroupRolesAssigned(p)
else
local grpRole = UnitGroupRolesAssigned(p)
isTank = (grpRole == "TANK")
isHeal = (grpRole == "HEALER")
isDPS = (grpRole == "DAMAGER")
end
if proposalExists == true then
isTank = (role == "TANK")
isHeal = (role == "HEALER")
isDPS = (role == "DAMAGER")
end
if proposalExists == nil then
hasResponded = false
proposalExists = false
end
if hasResponded == false then
if proposalExists == true then
isTank = (role == "TANK")
isHeal = (role == "HEALER")
isDPS = (role == "DAMAGER")
end
else
isTank = not hasResponded
isHeal = not hasResponded
isDPS = not hasResponded
end
if isTank then
self.frame.PartyRoleIcon = self:CreateTexCoord(self.frame.PartyRoleIcon, "Interface\\LFGFrame\\UI-LFG-ICON-PORTRAITROLES", 20, 20, self.moduleSettings.PartyRoleIconScale, 0/64, 19/64, 22/64, 41/64)
elseif isHeal then
self.frame.PartyRoleIcon = self:CreateTexCoord(self.frame.PartyRoleIcon, "Interface\\LFGFrame\\UI-LFG-ICON-PORTRAITROLES", 20, 20, self.moduleSettings.PartyRoleIconScale, 20/64, 39/64, 1/64, 20/64)
elseif isDPS then
self.frame.PartyRoleIcon = self:CreateTexCoord(self.frame.PartyRoleIcon, "Interface\\LFGFrame\\UI-LFG-ICON-PORTRAITROLES", 20, 20, self.moduleSettings.PartyRoleIconScale, 20/64, 39/64, 22/64, 41/64)
elseif self.configMode then
self.frame.PartyRoleIcon = self:CreateTexCoord(self.frame.PartyRoleIcon, "Interface\\LFGFrame\\UI-LFG-ICON-PORTRAITROLES", 20, 20, self.moduleSettings.PartyRoleIconScale, 0/64, 19/64, 1/64, 20/64)
else
self.frame.PartyRoleIcon = self:DestroyTexFrame(self.frame.PartyRoleIcon)
end
self:SetTexLoc(self.frame.PartyRoleIcon, self.moduleSettings.PartyRoleIconOffset['x'], self.moduleSettings.PartyRoleIconOffset['y'])
self:SetIconAlpha()
elseif not self.configMode and not self.moduleSettings.showPartyRoleIcon then
self.frame.PartyRoleIcon = self:DestroyTexFrame(self.frame.PartyRoleIcon)
end
else
self.frame.PartyRoleIcon = self:DestroyTexFrame(self.frame.PartyRoleIcon)
end
end
-- Load us up -- Load us up
IceHUD.TargetHealth = IceTargetHealth:new() IceHUD.TargetHealth = IceTargetHealth:new()