vanilla-wow-addons – Blame information for rev 1

Subversion Repositories:
Rev:
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")