Change all use of heroclass to use RAID_CLASS_COLORS instead. This can be changed to CUSTOM_CLASS_COLORS later with a color picker for each class, but to support CoA classes need to go back to being colored properly.
Fix remaining lua errors covered by ascension patches Add Addon Skins Add Enhanced Friends List
This commit is contained in:
@@ -0,0 +1,153 @@
|
||||
local E, L, V, P, G = unpack(ElvUI)
|
||||
local AS = E:GetModule("AddOnSkins")
|
||||
|
||||
local ipairs = ipairs
|
||||
local select = select
|
||||
local floor = math.floor
|
||||
|
||||
local EnumerateFrames = EnumerateFrames
|
||||
|
||||
local function round(x)
|
||||
return floor(x + 0.5)
|
||||
end
|
||||
|
||||
function AS:GetObjectChildren(obj, childID, list)
|
||||
if not obj then return end
|
||||
|
||||
if not childID then
|
||||
childID = obj:GetNumChildren()
|
||||
elseif childID < 0 then
|
||||
childID = obj:GetNumChildren() + childID
|
||||
end
|
||||
|
||||
if not list then
|
||||
return (select(childID, obj:GetChildren()))
|
||||
else
|
||||
return select(childID, obj:GetChildren())
|
||||
end
|
||||
end
|
||||
|
||||
function AS:FindChildFrameByPoint(parent, objType, point1, relativeTo, point2, x, y)
|
||||
if not parent then return end
|
||||
|
||||
local childPoint1, childParent, childPoint2, childX, childY
|
||||
|
||||
x = round(x)
|
||||
y = round(y)
|
||||
|
||||
for id, child in ipairs({parent:GetChildren()}) do
|
||||
if not child:GetName() and (not objType or (objType and child:IsObjectType(objType))) then
|
||||
childPoint1, childParent, childPoint2, childX, childY = child:GetPoint()
|
||||
childX = childX and round(childX) or 0
|
||||
childY = childY and round(childY) or 0
|
||||
|
||||
if childPoint1 == point1
|
||||
and childParent == relativeTo
|
||||
and (not point2 or (childPoint2 == point2))
|
||||
and x == childX
|
||||
and y == childY
|
||||
then
|
||||
return child, id
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function AS:FindChildFrameBySize(parent, objType, width, height)
|
||||
if not parent then return end
|
||||
|
||||
width = round(width)
|
||||
height = round(height)
|
||||
|
||||
for id, child in ipairs({parent:GetChildren()}) do
|
||||
if not child:GetName() then
|
||||
if not objType or (objType and child:IsObjectType(objType)) then
|
||||
if round(child:GetWidth()) == width and round(child:GetHeight()) == width and round(child:GetHeight()) == height then
|
||||
return child, id
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function AS:FindFrameBySizeChild(childTypes, width, height)
|
||||
if not childTypes then return end
|
||||
|
||||
local singleChild = type(childTypes) == "string"
|
||||
local obj = EnumerateFrames()
|
||||
|
||||
width = round(width)
|
||||
height = round(height)
|
||||
|
||||
while obj do
|
||||
if obj.IsObjectType and obj:IsObjectType("Frame") and (not (obj:GetName() and obj:GetParent())) then
|
||||
if round(obj:GetWidth()) == width and round(obj:GetHeight()) == height then
|
||||
local childs = {}
|
||||
|
||||
for _, child in pairs({obj:GetChildren()}) do
|
||||
childs[#childs + 1] = child:GetObjectType()
|
||||
end
|
||||
|
||||
local matched = 0
|
||||
for _, cType1 in ipairs(childs) do
|
||||
if not singleChild then
|
||||
for _, cType2 in ipairs(childTypes) do
|
||||
if cType1 == cType2 then
|
||||
matched = matched + 1
|
||||
end
|
||||
end
|
||||
elseif cType1 == childTypes then
|
||||
return obj
|
||||
end
|
||||
end
|
||||
|
||||
if matched == #childTypes then
|
||||
return obj
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
obj = EnumerateFrames(obj)
|
||||
end
|
||||
end
|
||||
|
||||
function AS:FindFrameByPoint(point1, relativeTo, point2, x, y, multipleFrames)
|
||||
if not relativeTo then return end
|
||||
|
||||
local frame
|
||||
if multipleFrames then
|
||||
frame = {}
|
||||
end
|
||||
|
||||
local childPoint1, childParent, childPoint2, childX, childY
|
||||
local obj = EnumerateFrames()
|
||||
|
||||
x = round(x)
|
||||
y = round(y)
|
||||
|
||||
while obj do
|
||||
if obj.IsObjectType and obj:IsObjectType("Frame") and (not (obj:GetName() and obj:GetParent())) then
|
||||
childPoint1, childParent, childPoint2, childX, childY = obj:GetPoint()
|
||||
childX = childX and round(childX) or 0
|
||||
childY = childY and round(childY) or 0
|
||||
|
||||
if childPoint1 == point1
|
||||
and childParent == relativeTo
|
||||
and (not point2 or (childPoint2 == point2))
|
||||
and x == childX
|
||||
and y == childY
|
||||
then
|
||||
if multipleFrames then
|
||||
frame[#frame + 1] = obj
|
||||
else
|
||||
frame = obj
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
obj = EnumerateFrames(obj)
|
||||
end
|
||||
|
||||
return frame
|
||||
end
|
||||
Reference in New Issue
Block a user