local A, L = ... ----------------------------- -- rSkin Global ----------------------------- rSkin = CreateFrame("Frame") rSkin.addonName = A rSkin.skinName = "ZorkUI" -- init skins table rSkin.skins = {} local Hider = CreateFrame("Frame", nil, UIParent) Hider:Hide() local function ThrowError(err, message) if not err then return end err = format("%s: %s Error\n%s", A, message, err) if _G.BaudErrorFrameHandler then _G.BaudErrorFrameHandler(err) else _G.ScriptErrorsFrame:OnError(err, false, false) end end -- Kills -- local function Kill(self) if (self.UnregisterAllEvents) then self:UnregisterAllEvents() self:SetParent(Hider) else self.Show = self.Hide end self:Hide() end L.Kill = Kill local function StripTextures(self) for i = 1, self:GetNumRegions() do local Region = select(i, self:GetRegions()) if (Region and Region:GetObjectType() == "Texture") then Region:SetTexture(nil) Kill(Region) end end end L.StripTextures = StripTextures --CreateBackdrop local function CreateBackdrop(self, relativeTo, anotherBackdrop) local backdrop = anotherBackdrop or oUF_SimpleConfig.backdrop local parent = self.IsObjectType and self:IsObjectType('Texture') and self:GetParent() or self local bd = CreateFrame("Frame", nil, parent, BackdropTemplateMixin and "BackdropTemplate") if (parent:GetFrameLevel() - 1) >= 0 then bd:SetFrameLevel(parent:GetFrameLevel() - 1) else bd:SetFrameLevel(0) end -- bd:SetFrameLevel(parent:GetFrameLevel()-1 or 0) bd:SetPoint("TOPLEFT", relativeTo or self, "TOPLEFT", -backdrop.inset, backdrop.inset) bd:SetPoint("BOTTOMRIGHT", relativeTo or self, "BOTTOMRIGHT", backdrop.inset, -backdrop.inset) bd:SetBackdrop(backdrop) bd:SetBackdropColor(unpack(backdrop.bgColor)) bd:SetBackdropBorderColor(unpack(backdrop.edgeColor)) return bd end L.CreateBackdrop = CreateBackdrop local function Dummy() return end L.Dummy = Dummy function rSkin:RegisterSkin(name, func) if not self.skins[name] then self.skins[name] = func end end function rSkin:OnLogin() print("|cffffa6c9"..A.." loaded.|r") for name, func in next, self.skins do if name and type(func) == "function" then local _, catch = pcall(func) ThrowError(catch, format("%s Skin", name)) end end end rSkin:RegisterEvent("PLAYER_LOGIN") -- Handle the events as they happen rSkin:SetScript("OnEvent", function(self, event, ...) if (event == "PLAYER_LOGIN") then self:OnLogin() end end)