mckenziemc@0: -- main.lua mckenziemc@0: -- mckenziemc@0: mckenziemc@0: local addonName, addonTable = ... mckenziemc@0: mckenziemc@0: mckenziemc@0: local DependencyLoader = LibStub("AceAddon-3.0"):NewAddon(addonName) mckenziemc@0: _G[addonName] = DependencyLoader mckenziemc@0: mckenziemc@0: local libPrint = LibStub("LibPrint-1.0") mckenziemc@0: DependencyLoader.printStream = libPrint:NewStream("DependencyLoader", "DpLdr", print) mckenziemc@0: DependencyLoader.debugStream = libPrint:NewStream("DependencyLoader", "DpLdr", "mcm") mckenziemc@0: mckenziemc@0: -- temp mckenziemc@0: DependencyLoader.classes = addonTable.classes mckenziemc@0: mckenziemc@0: function DependencyLoader:Print(...) mckenziemc@0: self.printStream:Print(...) mckenziemc@0: end mckenziemc@0: mckenziemc@0: mckenziemc@0: function DependencyLoader:Debug(...) mckenziemc@0: self.debugStream:Print(...) mckenziemc@0: end mckenziemc@0: mckenziemc@0: mckenziemc@0: function DependencyLoader:OnInitialize() mckenziemc@0: self:Debug("Initializing and enabling", addonName) mckenziemc@0: self:Enable() mckenziemc@0: end mckenziemc@0: mckenziemc@0: mckenziemc@0: function DependencyLoader:OnEnable() mckenziemc@0: self.core = addonTable.classes.Core:New() mckenziemc@0: mckenziemc@0: self:Print("Enabled", addonName) mckenziemc@0: mckenziemc@0: self:FixCurrentAddons() mckenziemc@0: end mckenziemc@0: mckenziemc@0: function DependencyLoader:OnDisable() mckenziemc@0: self:Print("Disabled", addonName) mckenziemc@0: end mckenziemc@0: mckenziemc@0: mckenziemc@0: -- TODO: move this into core? mckenziemc@0: mckenziemc@0: -- Enables any dependencies needed by the addons mckenziemc@0: -- that have already been enabled mckenziemc@0: function DependencyLoader:FixCurrentAddons() mckenziemc@0: local core = self.core mckenziemc@0: mckenziemc@0: for i=1, GetNumAddOns() do mckenziemc@0: local addon = self.core:GetAddon(i) mckenziemc@0: mckenziemc@0: if addon:IsEnabled() then mckenziemc@0: if addon:IsLoaded() then mckenziemc@0: -- TODO: it might still help to enable its embeds mckenziemc@0: else mckenziemc@0: self:Debug("Checking", addon:GetName()) mckenziemc@0: mckenziemc@0: if addonTable.classes.Core:ForceLoadAvailable() then mckenziemc@0: if core:CanForceLoadTree(addon:GetName()) then mckenziemc@0: core:ForceLoadTree(addon:GetName()) mckenziemc@0: else mckenziemc@0: print("Can't force load", addon:GetName()) mckenziemc@0: end mckenziemc@0: else mckenziemc@0: if core:CanLoDTree(addon:GetName()) then mckenziemc@0: core:PrepareLoDTree(addon:GetName()) mckenziemc@0: else mckenziemc@0: print("Couldn't load", addon:GetName(), "on demand.") mckenziemc@0: end mckenziemc@0: end mckenziemc@0: end mckenziemc@0: end mckenziemc@0: end mckenziemc@0: end mckenziemc@0: mckenziemc@0: mckenziemc@0: mckenziemc@0: mckenziemc@0: