Fixes Enhanced character frame

Update nameplate coloring.
Fix world map blips
This commit is contained in:
Andrew6810
2022-10-30 16:41:03 -07:00
parent 944b72c9e4
commit 8ad40722a0
156 changed files with 18356 additions and 1 deletions
@@ -0,0 +1,79 @@
local E, L, V, P, G = unpack(ElvUI)
local UFDP = E:NewModule("Enhanced_DetachedPortrait", "AceHook-3.0")
local UF = E:GetModule("UnitFrames")
local function Configure_Portrait(self, frame)
if frame.unitframeType == "player" or frame.unitframeType == "target" then
local db = E.db.enhanced.unitframe.detachPortrait[frame.unitframeType]
frame.PORTRAIT_DETACHED = frame.USE_PORTRAIT and db.enable and not frame.USE_PORTRAIT_OVERLAY
frame.PORTRAIT_WIDTH = (frame.USE_PORTRAIT_OVERLAY or frame.PORTRAIT_DETACHED or not frame.USE_PORTRAIT) and 0 or frame.db.portrait.width
frame.CLASSBAR_WIDTH = frame.UNIT_WIDTH - (frame.BORDER + frame.SPACING) * 2 - frame.PORTRAIT_WIDTH - frame.POWERBAR_OFFSET
if frame.USE_PORTRAIT then
local portrait = frame.Portrait
if frame.PORTRAIT_DETACHED then
if not portrait.Holder or (portrait.Holder and not portrait.Holder.mover) then
portrait.Holder = CreateFrame("Frame", nil, UIParent)
portrait.Holder:Size(db.width, db.height)
if frame.ORIENTATION == "LEFT" then
portrait.Holder:Point("RIGHT", frame, "LEFT", -frame.BORDER, 0)
elseif frame.ORIENTATION == "RIGHT" then
portrait.Holder:Point("LEFT", frame, "RIGHT", frame.BORDER, 0)
end
portrait:SetInside(portrait.Holder)
portrait.backdrop:SetOutside(portrait)
if frame.unitframeType == "player" then
E:CreateMover(portrait.Holder, "PlayerPortraitMover", L["Player Portrait"], nil, nil, nil, "ALL,SOLO")
elseif frame.unitframeType == "target" then
E:CreateMover(portrait.Holder, "TargetPortraitMover", L["Target Portrait"], nil, nil, nil, "ALL,SOLO")
end
else
portrait.Holder:Size(db.width, db.height)
portrait:SetInside(portrait.Holder)
portrait.backdrop:SetOutside(portrait)
E:EnableMover(portrait.Holder.mover:GetName())
end
end
if not frame.PORTRAIT_DETACHED and portrait.Holder and portrait.Holder.mover then
E:DisableMover(portrait.Holder.mover:GetName())
end
self:Configure_HealthBar(frame)
self:Configure_Power(frame)
end
end
end
function UFDP:ToggleState(unit)
if E.db.enhanced.unitframe.detachPortrait.player.enable or E.db.enhanced.unitframe.detachPortrait.target.enable then
if not self:IsHooked(UF, "Configure_Portrait") then
self:SecureHook(UF, "Configure_Portrait", Configure_Portrait)
end
if unit then
UF:CreateAndUpdateUF(unit)
end
else
UF:CreateAndUpdateUF(unit)
self:Unhook(UF, "Configure_Portrait")
end
end
function UFDP:Initialize()
if not E.private.unitframe.enable then return end
if not (E.db.enhanced.unitframe.detachPortrait.player.enable or E.db.enhanced.unitframe.detachPortrait.target.enable) then return end
self:ToggleState()
end
local function InitializeCallback()
UFDP:Initialize()
end
E:RegisterModule(UFDP:GetName(), InitializeCallback)
@@ -0,0 +1,5 @@
<Ui xmlns="http://www.blizzard.com/wow/ui/">
<Script file="DetachedPortrait.lua"/>
<Script file="TargetClass.lua"/>
<Script file="PortraitHDModelFix.lua"/>
</Ui>
@@ -0,0 +1,122 @@
local E, L, V, P, G = unpack(ElvUI)
local UFPM = E:NewModule("Enhanced_PortraitHDModelFix", "AceHook-3.0")
local UF = E:GetModule("UnitFrames")
local find, format, gsub, split = string.find, string.format, string.gsub, string.split
local tinsert, twipe = table.insert, table.wipe
local ipairs = ipairs
local function HdModels()
local f = CreateFrame("frame", nil)
local t = f:CreateTexture()
t:SetPoint("CENTER", WorldFrame)
t:SetTexture("Character\\Tauren\\Male\\TaurenMaleFaceLower00_00_HD")
t:SetSize(0, 0)
local exist = t:GetTexture() and true or false
t:SetTexture(nil)
f:Kill()
return exist
end
local function PortraitHDModelFix(self)
if self:IsObjectType("Model") then
local model = self:GetModel()
if not model or type(model) ~= "string" then return end
if UFPM.db.debug then
print(format("|cffc79c6eUnit:|r %s; |cffc79c6eModel:|r %s", self:GetParent().unitframeType, gsub(model, ".+\\(%S+%.m2)", "%1")))
end
for _, modelName in ipairs(UFPM.modelsToFix) do
if find(model, modelName) then
self:SetCamera(1)
break
end
end
end
end
local frames = {
{"player", "target", "targettarget", "targettargettarget", "focus", "focustarget", "pet", "pettarget"},
{"boss", "arena"},
{"party", "raid", "raid40"}
}
function UFPM:UpdatePortraits()
local modelList = self.db.modelsToFix
modelList = gsub(modelList, "%s+", "")
twipe(self.modelsToFix)
for _, modelName in ipairs({split(";", modelList)}) do
if modelName ~= "" then
tinsert(self.modelsToFix, modelName)
end
end
for i = 1, 3 do
for _, frame in ipairs(frames[i]) do
if i == 1 then
UF.CreateAndUpdateUF(UF, frame)
elseif i == 2 then
if frame == "boss" then
UF.CreateAndUpdateUFGroup(UF, frame, MAX_BOSS_FRAMES)
else
UF.CreateAndUpdateUFGroup(UF, frame, 5)
end
else
UF.CreateAndUpdateHeaderGroup(UF, frame)
end
end
end
end
function UFPM:ToggleState()
if not self.hdModels then return end
if self.db.enable then
self:SecureHook(UF, "PortraitUpdate", PortraitHDModelFix)
else
self:UnhookAll()
return
end
local frame, frameName
for i = 1, 3 do
for _, unit in ipairs(frames[i]) do
frameName = E:StringTitle(unit)
frame = _G["ElvUF_"..frameName]
if frame and frame.Portrait3D and frame.Portrait3D.PostUpdate then
if self.db.enable then
if not self:IsHooked(frame.Portrait3D, "PostUpdate", PortraitHDModelFix) then
self:SecureHook(frame.Portrait3D, "PostUpdate", PortraitHDModelFix)
end
else
self:UnhookAll()
end
end
end
end
self:UpdatePortraits()
end
function UFPM:Initialize()
if not E.private.unitframe.enable then return end
self.db = E.db.enhanced.unitframe.portraitHDModelFix
self.modelsToFix = {}
self.hdModels = HdModels()
if not self.db.enable then return end
self:ToggleState()
end
local function InitializeCallback()
UFPM:Initialize()
end
E:RegisterModule(UFPM:GetName(), InitializeCallback)
@@ -0,0 +1,55 @@
local E, L, V, P, G = unpack(ElvUI)
local TC = E:NewModule("Enhanced_TargetClass", "AceEvent-3.0")
local select = select
local UnitClass = UnitClass
local UnitClassification = UnitClassification
local UnitIsPlayer = UnitIsPlayer
local CLASS_ICON_TCOORDS = CLASS_ICON_TCOORDS
function TC:TargetChanged()
self.frame:Hide()
local class = UnitIsPlayer("target") and select(2, UnitClass("target")) or UnitClassification("target")
if class then
local coordinates = CLASS_ICON_TCOORDS[class]
if coordinates then
self.frame.Texture:SetTexCoord(coordinates[1], coordinates[2], coordinates[3], coordinates[4])
self.frame:Show()
end
end
end
function TC:ToggleSettings()
if self.db.enable then
self.frame:Size(self.db.size, self.db.size)
self.frame:ClearAllPoints()
self.frame:Point("CENTER", ElvUF_Target, "TOP", self.db.xOffset, self.db.yOffset)
self:RegisterEvent("PLAYER_TARGET_CHANGED", "TargetChanged")
self:TargetChanged()
else
self:UnregisterEvent("PLAYER_TARGET_CHANGED")
self.frame:Hide()
end
end
function TC:Initialize()
self.db = E.db.enhanced.unitframe.units.target.classicon
self.frame = CreateFrame("Frame", "TargetClass", E.UIParent)
self.frame:SetFrameLevel(12)
self.frame.Texture = self.frame:CreateTexture(nil, "ARTWORK")
self.frame.Texture:SetAllPoints()
self.frame.Texture:SetTexture([[Interface\WorldStateFrame\Icons-Classes]])
self:ToggleSettings()
end
local function InitializeCallback()
TC:Initialize()
end
E:RegisterModule(TC:GetName(), InitializeCallback)