-- Nameplates.lua local _; local next = next; local GetNamePlateForUnit = C_NamePlate.GetNamePlateForUnit; local UnitExists = UnitExists; local UnitAura = UnitAura; local main = CreateFrame("Frame", "OmaNameplateAuras"); main:Hide(); local frames = {}; local unique = 1; local function createNameplate(parent) local name = format("OmaPlate%i", unique); local frame = CreateFrame("Frame", name, parent); frames[parent] = frame; unique = unique + 1; frame:SetPoint("BOTTOM", parent, "TOP", 0, 14); frame:SetWidth(32); frame:SetHeight(32); frame:Hide(); frame.base = frame:CreateTexture(nil, "BACKGROUND"); frame.base:SetAllPoints(); frame.base:SetColorTexture(0, 0, 0, 0.6); frame.icon = frame:CreateTexture(nil, "ARTWORK"); frame.icon:SetPoint("TOPLEFT", frame.base, "TOPLEFT", 1, -1); frame.icon:SetPoint("BOTTOMRIGHT", frame.base, "BOTTOMRIGHT", -1, 1); frame.icon:SetTexCoord(0.07, 0.93, 0.07, 0.93); frame.cd = CreateFrame("Cooldown", format("%sCD", name), frame, "CooldownFrameTemplate"); frame.cd:SetReverse(true); frame.cd:SetHideCountdownNumbers(true); frame.cd:SetAllPoints(); return frame; end local function setNameplate(unit) local frame = frames[GetNamePlateForUnit(unit)]; -- TODO register interesting events to track on nameplates end local function unsetNameplate(unit) local frame = frames[GetNamePlateForUnit(unit)]; frame:UnregisterAllEvents(); frame:Hide(); end local events = { ["NAME_PLATE_CREATED"] = createNameplate, ["NAME_PLATE_UNIT_ADDED"] = setNameplate, ["NAME_PLATE_UNIT_REMOVED"] = unsetNameplate, }; main:SetScript("OnEvent", function(self, event) main:UnregisterAllEvents(); main:SetScript("OnEvent", function(self, event, arg1) events[event](arg1); end); main:RegisterEvent("NAME_PLATE_CREATED"); main:RegisterEvent("NAME_PLATE_UNIT_ADDED"); main:RegisterEvent("NAME_PLATE_UNIT_REMOVED"); end); main:RegisterEvent("PLAYER_LOGIN");