Fixes Enhanced character frame
Update nameplate coloring. Fix world map blips
This commit is contained in:
@@ -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)
|
||||
Reference in New Issue
Block a user