Add files via upload
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
local _G = ShaguTweaks.GetGlobalEnv()
|
||||
local T = ShaguTweaks.T
|
||||
|
||||
local addonpath
|
||||
local tocs = { "", "-master", "-tbc", "-wotlk" }
|
||||
for _, name in pairs(tocs) do
|
||||
local current = string.format("ShaguTweaks%s", name)
|
||||
local _, title = GetAddOnInfo(current)
|
||||
if title then
|
||||
addonpath = "Interface\\AddOns\\" .. current
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
local CLASS_ICON_TCOORDS = {
|
||||
["WARRIOR"] = { 0, 0.25, 0, 0.25 },
|
||||
["MAGE"] = { 0.25, 0.49609375, 0, 0.25 },
|
||||
["ROGUE"] = { 0.49609375, 0.7421875, 0, 0.25 },
|
||||
["DRUID"] = { 0.7421875, 0.98828125, 0, 0.25 },
|
||||
["HUNTER"] = { 0, 0.25, 0.25, 0.5 },
|
||||
["SHAMAN"] = { 0.25, 0.49609375, 0.25, 0.5 },
|
||||
["PRIEST"] = { 0.49609375, 0.7421875, 0.25, 0.5 },
|
||||
["WARLOCK"] = { 0.7421875, 0.98828125, 0.25, 0.5 },
|
||||
["PALADIN"] = { 0, 0.25, 0.5, 0.75 },
|
||||
["DEATHKNIGHT"] = { 0.25, .5, 0.5, .75 },
|
||||
}
|
||||
|
||||
local module = ShaguTweaks:register({
|
||||
title = T["Unit Frame Class Portraits"],
|
||||
description = T["Replace unitframe portraits with class icons."],
|
||||
expansions = { ["vanilla"] = true, ["tbc"] = true },
|
||||
category = T["Unit Frames"],
|
||||
enabled = nil,
|
||||
})
|
||||
|
||||
local function UpdatePortraits(frame)
|
||||
-- detect unit class or remove for non-player units
|
||||
local _, class = UnitClass(frame.unit)
|
||||
class = UnitIsPlayer(frame.unit) and class or nil
|
||||
|
||||
-- update class icon if possible
|
||||
if class and frame.portrait then
|
||||
local iconCoords = CLASS_ICON_TCOORDS[class]
|
||||
frame.portrait:SetTexture(addonpath .. "\\img\\UI-Classes-Circles")
|
||||
frame.portrait:SetTexCoord(unpack(iconCoords))
|
||||
elseif not class and frame.portrait then
|
||||
frame.portrait:SetTexCoord(0, 1, 0, 1)
|
||||
end
|
||||
end
|
||||
|
||||
module.enable = function(self)
|
||||
-- overwrite portraits set by the game
|
||||
local original = UnitFrame_Update
|
||||
UnitFrame_Update = function(arg1, arg2, arg3)
|
||||
original(arg1, arg2, arg3)
|
||||
UpdatePortraits(this)
|
||||
end
|
||||
|
||||
-- handle portrait update events
|
||||
local events = CreateFrame("Frame")
|
||||
events:RegisterEvent("PLAYER_ENTERING_WORLD")
|
||||
events:RegisterEvent("UNIT_PORTRAIT_UPDATE")
|
||||
events:SetScript("OnEvent", function()
|
||||
-- reload player portrait
|
||||
UpdatePortraits(PlayerFrame)
|
||||
UpdatePortraits(TargetFrame)
|
||||
|
||||
-- reload party portraits
|
||||
UpdatePortraits(PartyMemberFrame1)
|
||||
UpdatePortraits(PartyMemberFrame2)
|
||||
UpdatePortraits(PartyMemberFrame3)
|
||||
UpdatePortraits(PartyMemberFrame4)
|
||||
end)
|
||||
|
||||
-- update target of target
|
||||
local tot = CreateFrame("Frame", nil, TargetFrame)
|
||||
tot:SetScript("OnUpdate", function()
|
||||
UpdatePortraits(TargetofTargetFrame)
|
||||
end)
|
||||
end
|
||||
Reference in New Issue
Block a user