From 162c088c7202bdea45bf5a04bacd384683a2cb33 Mon Sep 17 00:00:00 2001 From: Tercio Jose Date: Mon, 30 Nov 2020 12:24:16 -0300 Subject: [PATCH] Fixed reports to Battle.net friends; Fixes on Custom displays --- Libs/DF/addon.lua | 89 +++++++++++++-- Libs/DF/languages.lua | 23 ++++ Libs/DF/load.xml | 2 + Libs/DF/savedvars.lua | 183 ++++++++++++++++++++++++++++++ boot.lua | 8 +- classes/class_instance.lua | 13 +-- frames/window_playerbreakdown.lua | 4 + frames/window_report.lua | 37 +++--- 8 files changed, 324 insertions(+), 35 deletions(-) create mode 100644 Libs/DF/languages.lua create mode 100644 Libs/DF/savedvars.lua diff --git a/Libs/DF/addon.lua b/Libs/DF/addon.lua index c7f92efb..2594e55b 100644 --- a/Libs/DF/addon.lua +++ b/Libs/DF/addon.lua @@ -3,32 +3,101 @@ local DF = _G ["DetailsFramework"] local _ if (not DF or not DetailsFrameworkCanLoad) then - return + return end -function DF:CreateAddOn (name, global_saved, global_table, options_table, broker) +--runs when the addon received addon_loaded +local addonPreLoad = function(addonFrame, event, ...) + --check if the saved variables table is created, if not create one + _G[addonFrame.__savedVarsName] = _G[addonFrame.__savedVarsName] or {} + + if (addonFrame.__savedVarsDefaultTemplate) then + --load saved vars for this character + DF.SavedVars.LoadSavedVarsForPlayer(addonFrame) + end + + if (addonFrame.OnLoad) then + DF:Dispatch(addonFrame.OnLoad, addonFrame, ...) + end +end + +--runs when the addon received player_login +local addonInit = function(addonFrame, event, ...) + if (addonFrame.OnInit) then + DF:Dispatch(addonFrame.OnInit, addonFrame, ...) + end +end + +--when the player logout or reloadUI +local addonUnload = function(addonFrame, event, ...) + --close saved tables +end + +local addonEvents = { + ["ADDON_LOADED"] = addonPreLoad, + ["PLAYER_LOGIN"] = addonInit, + ["PLAYER_LOGOUT"] = addonUnload, +} + +local addonOnEvent = function(addonFrame, event, ...) + local func = addonEvents[event] + if (func) then + func(addonFrame, event, ...) + else + --might be a registered event from the user + if (addonFrame.event) then + DF:CoreDispatch(addonFrame.__name, addonFrame.event, addonFrame, event, ...) + end + end +end + +local getAddonName = function(addonFrame) + return addonFrame:GetName() +end + +function DF:CreateNewAddOn(addonName, globalSavedVariablesName, savedVarsTemplate) + local newAddon = CreateFrame("frame", addonName, UIParent) + newAddon.__name = addonName + newAddon.__savedVarsName = globalSavedVariablesName + newAddon.__savedVarsDefaultTemplate = savedVarsTemplate + + newAddon.GetAddonName = getAddonName + + newAddon:RegisterEvent("ADDON_LOADED") + newAddon:RegisterEvent("PLAYER_LOGIN") + newAddon:SetScript("OnEvent", addonOnEvent) + + return newAddon +end + + + + +--old create addon +function DF:CreateAddOn (name, global_saved, global_table, options_table, broker) + local addon = LibStub ("AceAddon-3.0"):NewAddon (name, "AceConsole-3.0", "AceEvent-3.0", "AceTimer-3.0", "DetailsFramework-1.0", "AceComm-3.0") _G [name] = addon addon.__name = name - + function addon:OnInitialize() - + if (global_saved) then if (broker and broker.Minimap and not global_table.Minimap) then DF:Msg (name, "broker.Minimap is true but no global.Minimap declared.") end self.db = LibStub ("AceDB-3.0"):New (global_saved, global_table or {}, true) end - + if (options_table) then LibStub ("AceConfig-3.0"):RegisterOptionsTable (name, options_table) addon.OptionsFrame1 = LibStub ("AceConfigDialog-3.0"):AddToBlizOptions (name, name) - + LibStub ("AceConfig-3.0"):RegisterOptionsTable (name .. "-Profiles", LibStub ("AceDBOptions-3.0"):GetOptionsTable (self.db)) addon.OptionsFrame2 = LibStub ("AceConfigDialog-3.0"):AddToBlizOptions (name .. "-Profiles", "Profiles", name) end - + if (broker) then local broker_click_function = broker.OnClick if (not broker_click_function and options_table) then @@ -37,7 +106,7 @@ function DF:CreateAddOn (name, global_saved, global_table, options_table, broker InterfaceOptionsFrame_OpenToCategory (name) end end - + local databroker = LibStub ("LibDataBroker-1.1"):NewDataObject (name, { type = broker.type or "launcher", icon = broker.icon or [[Interface\PvPRankBadges\PvPRank15]], @@ -45,12 +114,12 @@ function DF:CreateAddOn (name, global_saved, global_table, options_table, broker OnTooltipShow = broker.OnTooltipShow, OnClick = broker_click_function }) - + if (databroker and broker.Minimap and global_table.Minimap) then LibStub ("LibDBIcon-1.0"):Register (name, databroker, addon.db.profile.Minimap) end end - + if (addon.OnInit) then xpcall (addon.OnInit, geterrorhandler(), addon) end diff --git a/Libs/DF/languages.lua b/Libs/DF/languages.lua new file mode 100644 index 00000000..6d6a0dd9 --- /dev/null +++ b/Libs/DF/languages.lua @@ -0,0 +1,23 @@ + + + +local DF = _G ["DetailsFramework"] +if (not DF or not DetailsFrameworkCanLoad) then + return +end + +--create namespace +DF.Language = { + registeredLanguages = {}, +} + +function DF.Language.GetWordsFromLanguage(self, language, addonGlobalName) + +end + +function DF.Language.RegisterLanguage(self, addonGlobalName, language) + local addonObject = _G[addonGlobalName] + addonObject.__language = addonObject.__language or {} + addonObject.__language[language] = {} + return addonObject.__language[language] +end \ No newline at end of file diff --git a/Libs/DF/load.xml b/Libs/DF/load.xml index 7e8e3b22..f3cb53be 100644 --- a/Libs/DF/load.xml +++ b/Libs/DF/load.xml @@ -10,6 +10,8 @@