I cleaned up my testcode aswell. I will use it as a start for my new nameplate addon.
Lua Code:
--RDP3
local RDP = CreateFrame("Frame", nil, WorldFrame)
RDP.nameplates = {}
local function NameplateOnShow(...)
local self = ...
--print(...)
print(self:GetName().. "NameplateOnShow")
end
local function NameplateOnHide(...)
local self = ...
--print(...)
print(self:GetName().. "NameplateOnHide")
end
local function CastbarOnValueChanged(...)
local self = ...
--print(...)
print(self:GetParent():GetParent():GetName().. "CastbarOnValueChanged")
end
local function HealthbarOnValueChanged(...)
local self = ...
--print(...)
print(self:GetParent():GetParent():GetName().."HealthbarOnValueChanged")
end
local function IsNamePlateFrame(obj)
local name = obj:GetName()
if name and name:find("NamePlate") then
return true
end
obj.rdp_checked = true --don't touch this frame again
return false
end
local function AddNamePlateToList(plate)
plate.barFrame, plate.nameFrame = plate:GetChildren()
plate.healthbar, plate.castbar = plate.barFrame:GetChildren()
plate.threat, plate.border, plate.highlight, plate.level, plate.boss, plate.raid, plate.dragon = plate.barFrame:GetRegions()
plate.name = plate.nameFrame:GetRegions()
plate.healthbar.texture = plate.healthbar:GetRegions()
plate.castbar.texture, plate.castbar.border, plate.castbar.shield, plate.castbar.icon, plate.castbar.name, plate.castbar.nameShadow = plate.castbar:GetRegions()
plate.rdp_checked = true
RDP.nameplates[plate] = CreateFrame("Frame", nil, RDP)
RDP.nameplates[plate]:SetSize(128,32)
local t = RDP.nameplates[plate]:CreateTexture()
t:SetAllPoints()
t:SetTexture(1,0,1,0.3)
--keep the frame reference for later
--RDP.nameplates[plate].blizzPlate = plate
--plate.newPlate = RDP.nameplates[plate]
--plate:Hide()
--plate.barFrame:SetParent(Nameplates[plate])
plate.nameFrame:SetParent(RDP.nameplates[plate])
plate.barFrame:Hide()
--plate.nameFrame:Hide()
plate:HookScript("OnShow", NameplateOnShow)
plate:HookScript("OnHide", NameplateOnHide)
plate.healthbar:HookScript("OnValueChanged", HealthbarOnValueChanged)
plate.castbar:HookScript("OnValueChanged", CastbarOnValueChanged)
local t = plate:CreateTexture()
t:SetAllPoints()
t:SetTexture(1,1,0,0.3)
end
local function SearchForNamePlates(self)
local currentChildren = self:GetNumChildren()
if not currentChildren or currentChildren == 0 then return end
for _, obj in pairs({self:GetChildren()}) do
if not obj.rdp_checked and IsNamePlateFrame(obj) then
AddNamePlateToList(obj)
end
end
end
local function OnUpdate(self)
SearchForNamePlates(self)
RDP:Hide()
for blizzPlate, plate in pairs(RDP.nameplates) do
plate:Hide()
if blizzPlate:IsShown() then
plate:SetPoint("CENTER", WorldFrame, "BOTTOMLEFT", blizzPlate:GetCenter())
plate:Show()
end
end
RDP:Show()
end
WorldFrame:HookScript("OnUpdate", OnUpdate)