mckenziemc@0
|
1 -- main.lua
|
mckenziemc@0
|
2 --
|
mckenziemc@0
|
3
|
mckenziemc@0
|
4 local addonName, addonTable = ...
|
mckenziemc@0
|
5
|
mckenziemc@0
|
6
|
mckenziemc@0
|
7 local DependencyLoader = LibStub("AceAddon-3.0"):NewAddon(addonName)
|
mckenziemc@0
|
8 _G[addonName] = DependencyLoader
|
mckenziemc@0
|
9
|
mckenziemc@0
|
10 local libPrint = LibStub("LibPrint-1.0")
|
mckenziemc@0
|
11 DependencyLoader.printStream = libPrint:NewStream("DependencyLoader", "DpLdr", print)
|
mckenziemc@0
|
12 DependencyLoader.debugStream = libPrint:NewStream("DependencyLoader", "DpLdr", "mcm")
|
mckenziemc@0
|
13
|
mckenziemc@0
|
14 -- temp
|
mckenziemc@0
|
15 DependencyLoader.classes = addonTable.classes
|
mckenziemc@0
|
16
|
mckenziemc@0
|
17 function DependencyLoader:Print(...)
|
mckenziemc@0
|
18 self.printStream:Print(...)
|
mckenziemc@0
|
19 end
|
mckenziemc@0
|
20
|
mckenziemc@0
|
21
|
mckenziemc@0
|
22 function DependencyLoader:Debug(...)
|
mckenziemc@0
|
23 self.debugStream:Print(...)
|
mckenziemc@0
|
24 end
|
mckenziemc@0
|
25
|
mckenziemc@0
|
26
|
mckenziemc@0
|
27 function DependencyLoader:OnInitialize()
|
mckenziemc@0
|
28 self:Debug("Initializing and enabling", addonName)
|
mckenziemc@0
|
29 self:Enable()
|
mckenziemc@0
|
30 end
|
mckenziemc@0
|
31
|
mckenziemc@0
|
32
|
mckenziemc@0
|
33 function DependencyLoader:OnEnable()
|
mckenziemc@0
|
34 self.core = addonTable.classes.Core:New()
|
mckenziemc@0
|
35
|
mckenziemc@0
|
36 self:Print("Enabled", addonName)
|
mckenziemc@0
|
37
|
mckenziemc@0
|
38 self:FixCurrentAddons()
|
mckenziemc@0
|
39 end
|
mckenziemc@0
|
40
|
mckenziemc@0
|
41 function DependencyLoader:OnDisable()
|
mckenziemc@0
|
42 self:Print("Disabled", addonName)
|
mckenziemc@0
|
43 end
|
mckenziemc@0
|
44
|
mckenziemc@0
|
45
|
mckenziemc@0
|
46 -- TODO: move this into core?
|
mckenziemc@0
|
47
|
mckenziemc@0
|
48 -- Enables any dependencies needed by the addons
|
mckenziemc@0
|
49 -- that have already been enabled
|
mckenziemc@0
|
50 function DependencyLoader:FixCurrentAddons()
|
mckenziemc@0
|
51 local core = self.core
|
mckenziemc@0
|
52
|
mckenziemc@0
|
53 for i=1, GetNumAddOns() do
|
mckenziemc@0
|
54 local addon = self.core:GetAddon(i)
|
mckenziemc@0
|
55
|
mckenziemc@0
|
56 if addon:IsEnabled() then
|
mckenziemc@0
|
57 if addon:IsLoaded() then
|
mckenziemc@0
|
58 -- TODO: it might still help to enable its embeds
|
mckenziemc@0
|
59 else
|
mckenziemc@0
|
60 self:Debug("Checking", addon:GetName())
|
mckenziemc@0
|
61
|
mckenziemc@0
|
62 if addonTable.classes.Core:ForceLoadAvailable() then
|
mckenziemc@0
|
63 if core:CanForceLoadTree(addon:GetName()) then
|
mckenziemc@0
|
64 core:ForceLoadTree(addon:GetName())
|
mckenziemc@0
|
65 else
|
mckenziemc@0
|
66 print("Can't force load", addon:GetName())
|
mckenziemc@0
|
67 end
|
mckenziemc@0
|
68 else
|
mckenziemc@0
|
69 if core:CanLoDTree(addon:GetName()) then
|
mckenziemc@0
|
70 core:PrepareLoDTree(addon:GetName())
|
mckenziemc@0
|
71 else
|
mckenziemc@0
|
72 print("Couldn't load", addon:GetName(), "on demand.")
|
mckenziemc@0
|
73 end
|
mckenziemc@0
|
74 end
|
mckenziemc@0
|
75 end
|
mckenziemc@0
|
76 end
|
mckenziemc@0
|
77 end
|
mckenziemc@0
|
78 end
|
mckenziemc@0
|
79
|
mckenziemc@0
|
80
|
mckenziemc@0
|
81
|
mckenziemc@0
|
82
|
mckenziemc@0
|
83 |