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:
Andrew6810
2022-10-28 07:12:13 -07:00
parent 60ef8a38af
commit df7cc26a64
205 changed files with 18480 additions and 35 deletions
+153
View File
@@ -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