vanilla-wow-addons – Blame information for rev 1
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
1 | office | 1 | |
2 | ace.registry = AceDatabase:new() |
||
3 | |||
4 | -- Class creation |
||
5 | AceState = AceCore:new({_initIndex=1,_appList={}}) |
||
6 | |||
7 | |||
8 | --[[-------------------------------------------------------------------------------- |
||
9 | State and Addon Initialization |
||
10 | -----------------------------------------------------------------------------------]] |
||
11 | |||
12 | function AceState:BuildAddonList() |
||
13 | -- Build a table of addon information for later reference |
||
14 | for i = 1, GetNumAddOns() do |
||
15 | local name, title, _, enabled, loadable = GetAddOnInfo(i) |
||
16 | local isLoaded = IsAddOnLoaded(i) |
||
17 | local def = { |
||
18 | title = title or name, |
||
19 | loadable = TRUE |
||
20 | } |
||
21 | ace.addons.list[strlower(name)] = def |
||
22 | end |
||
23 | end |
||
24 | |||
25 | function AceState:SetGameState() |
||
26 | -- I've seen at least one occurance where GetCVar("realmName") returned an extra |
||
27 | -- space on the end (e.g., "Archimonde "). So trim everything just to be safe. |
||
28 | local realmName = ace.trim(GetCVar("realmName")) |
||
29 | local charName = ace.trim(UnitName("player")) |
||
30 | |||
31 | ace.char = { |
||
32 | realm = realmName, |
||
33 | name = charName, |
||
34 | id = charName.." "..ACE_TEXT_OF.." "..realmName, |
||
35 | class = ace.trim(UnitClass("player")), |
||
36 | race = ace.trim(UnitRace("player")), |
||
37 | sex = ace.trim(UnitSex("player")), -- 1 means female |
||
38 | faction = ace.trim(UnitFactionGroup("player")) |
||
39 | } |
||
40 | |||
41 | ace.db:Initialize() |
||
42 | ace.db:SetCurrentProfile() |
||
43 | ace.cmd:Register() |
||
44 | end |
||
45 | |||
46 | function AceState:LoadOnDemandAddons() |
||
47 | local addons = ace.db:GetLoadOnStart() |
||
48 | if( addons ) then |
||
49 | for addon in addons do |
||
50 | LoadAddOn(addon) |
||
51 | end |
||
52 | end |
||
53 | end |
||
54 | |||
55 | function AceState:Finish() |
||
56 | if( (not self.varsLoaded) or (not self.playerEnter) ) then return end |
||
57 | |||
58 | self:SetGameState() |
||
59 | |||
60 | AceStateFrame:Show() |
||
61 | for i = self._initIndex, getn(self._appList) do |
||
62 | self._initIndex = self._initIndex + 1 |
||
63 | ace:InitializeApp(self._appList[i]) |
||
64 | if( ace.db:GetOpt("loadMsg") == "addon" ) then |
||
65 | self:DisplayLoadMsg(self._appList[i]) |
||
66 | end |
||
67 | end |
||
68 | AceStateFrame:Hide() |
||
69 | |||
70 | ace.initialized = TRUE |
||
71 | |||
72 | self:LoadOnDemandAddons() |
||
73 | |||
74 | if( ace.db:GetOpt("loadMsg") ~= "none" ) then self:DisplayLoadMsgSummary() end |
||
75 | |||
76 | -- Remove any existing Ace translations. |
||
77 | for _, lang in ace.langs do |
||
78 | setglobal("Ace_Locals_"..lang, nil) |
||
79 | end |
||
80 | |||
81 | -- Get rid of AceState entirely. |
||
82 | ace.event:UnregisterAllEvents(AceState) |
||
83 | AceState = nil |
||
84 | |||
85 | -- Register ADDON_LOADED on the ace object so addons can be loaded later on demand. |
||
86 | ace.event:RegisterEvent(ace, "ADDON_LOADED", "LoadAddon") |
||
87 | ace.event:TriggerEvent("ACE_ADDONS_LOADED") |
||
88 | end |
||
89 | |||
90 | function AceState:DisplayLoadMsgSummary(addon) |
||
91 | ace:print(format(ACE_LOAD_MSG_SUMMARY, |
||
92 | ace.addons.numAceApps, |
||
93 | ace.db.profileName |
||
94 | ) |
||
95 | ) |
||
96 | end |
||
97 | |||
98 | function AceState:DisplayLoadMsg(app) |
||
99 | ace:print(app.disabled and ACE_ADDON_STANDBY.." " or "", |
||
100 | format(ACE_ADDON_LOADED, app.name, app.version, app.author), |
||
101 | ((app.cmd and app.cmd.commands) |
||
102 | and " "..format(ACE_ADDON_CHAT_COMMAND, app.cmd.commands[1]) |
||
103 | or "" |
||
104 | ), |
||
105 | app.aceMismatch and " "..ACE_VERSION_MISMATCH |
||
106 | ) |
||
107 | end |
||
108 | |||
109 | |||
110 | --[[-------------------------------------------------------------------------------- |
||
111 | Events |
||
112 | -----------------------------------------------------------------------------------]] |
||
113 | |||
114 | function AceState:ADDON_LOADED() |
||
115 | for _, app in ace._load do |
||
116 | tinsert(self._appList, app) |
||
117 | end |
||
118 | ace:LoadAddon() |
||
119 | end |
||
120 | |||
121 | function AceState:VARIABLES_LOADED() |
||
122 | self.varsLoaded = TRUE |
||
123 | self:Finish() |
||
124 | end |
||
125 | |||
126 | function AceState:PLAYER_ENTERING_WORLD() |
||
127 | self.playerEnter = TRUE |
||
128 | self:Finish() |
||
129 | end |
||
130 | |||
131 | |||
132 | AceState:BuildAddonList() |
||
133 | ace.event:RegisterEvent(AceState, "VARIABLES_LOADED") |
||
134 | ace.event:RegisterEvent(AceState, "PLAYER_ENTERING_WORLD") |
||
135 | ace.event:RegisterEvent(AceState, "ADDON_LOADED") |