NanamiDPS = {} NanamiDPS.version = "1.0.0" NanamiDPS.modules = {} NanamiDPS.moduleOrder = {} NanamiDPS.windows = {} NanamiDPS.callbacks = { refresh = {}, } local defaultConfig = { barHeight = 16, barSpacing = 1, fontSize = 10, trackAllUnits = false, mergePets = true, visible = true, locked = false, maxSegments = 20, backdropAlpha = 0.92, showClassIcons = true, paused = false, pausedAlpha = 0.35, otWarning = false, nameplateThreat = false, } function NanamiDPS:RegisterModule(name, mod) if self.modules[name] then return end self.modules[name] = mod table.insert(self.moduleOrder, name) end function NanamiDPS:GetModule(name) return self.modules[name] end function NanamiDPS:FireCallback(name, a1, a2, a3, a4, a5) if self.callbacks[name] then for _, fn in pairs(self.callbacks[name]) do fn(a1, a2, a3, a4, a5) end end end function NanamiDPS:RegisterCallback(name, id, fn) if not self.callbacks[name] then self.callbacks[name] = {} end self.callbacks[name][id] = fn end StaticPopupDialogs["NANAMI_DPS_CONFIRM"] = { button1 = YES, button2 = NO, timeout = 0, whileDead = 1, hideOnEscape = 1, } local initFrame = CreateFrame("Frame") initFrame:RegisterEvent("PLAYER_ENTERING_WORLD") initFrame:SetScript("OnEvent", function() if not NanamiDPS_DB then NanamiDPS_DB = {} end NanamiDPS_DB.config = NanamiDPS_DB.config or {} for k, v in pairs(defaultConfig) do if NanamiDPS_DB.config[k] == nil then NanamiDPS_DB.config[k] = v end end NanamiDPS.config = NanamiDPS_DB.config NanamiDPS_DB.windows = NanamiDPS_DB.windows or {} NanamiDPS_DB.windowPositions = NanamiDPS_DB.windowPositions or {} NanamiDPS:FireCallback("INIT") end)