Mercurial > wow > dependencyloader
comparison DependencyLoader/Addon.lua @ 10:e0a4a8b5b389
lots more modifications...
| author | mckenziemc |
|---|---|
| date | Sun, 05 Dec 2010 03:10:07 -0800 |
| parents | 5362e308c3eb |
| children | b230b94d4487 |
comparison
equal
deleted
inserted
replaced
| 9:5362e308c3eb | 10:e0a4a8b5b389 |
|---|---|
| 1 -- Addon | 1 -- Addon |
| 2 -- Represents individual addon modules | 2 -- Represents individual addon modules. |
| 3 | 3 |
| 4 | 4 |
| 5 local addonName, addonTable = ... | 5 local addonName, addonTable = ... |
| 6 | 6 |
| 7 | 7 |
| 8 -- NOTE: I assume that the API addon functions are | 8 -- TODO: test if the API functions are quicker with indexes than names. |
| 9 -- slightly quicker with an index than with a number. | 9 -- TODO: modify the dependency stuff to check the Errata module. |
| 10 | |
| 11 -- TODO: modify the dependency stuff to use the Errata module if available | |
| 12 | 10 |
| 13 local Addon, addon = addonTable:NewClass("Addon") | 11 local Addon, addon = addonTable:NewClass("Addon") |
| 14 | |
| 15 | |
| 16 -- load ability masks | |
| 17 Addon.loadMasks = { | |
| 18 reload = bit.lshift(1, 0), -- can load after reloadui | |
| 19 ondemand = bit.lshift(1, 1), -- can load on demand | |
| 20 forceafter = bit.lshift(1, 2), -- force load after it would normally be loaded | |
| 21 forcebefore = bit.lshift(1, 3), -- force load before it would normally be loaded | |
| 22 } | |
| 23 | 12 |
| 24 | 13 |
| 25 Addon.addons = {} | 14 Addon.addons = {} |
| 26 Addon.nameToIndex = {} | 15 Addon.nameToIndex = {} |
| 27 | 16 |
| 88 self.nameToIndex[id] = new:GetIndex() | 77 self.nameToIndex[id] = new:GetIndex() |
| 89 | 78 |
| 90 return new | 79 return new |
| 91 end | 80 end |
| 92 end | 81 end |
| 82 | |
| 93 | 83 |
| 94 -- Checks if an addon exists with the specified name. | 84 -- Checks if an addon exists with the specified name. |
| 95 -- @param addon Name of the addon. | 85 -- @param addon Name of the addon. |
| 96 -- @return True if the addon is present, false otherwise. | 86 -- @return True if the addon is present, false otherwise. |
| 97 function Addon:Exists(addon) | 87 function Addon:Exists(addon) |
| 113 error() | 103 error() |
| 114 end | 104 end |
| 115 end | 105 end |
| 116 | 106 |
| 117 | 107 |
| 118 function Addon:GetLoadMasks() | |
| 119 return self.masks | |
| 120 end | |
| 121 | |
| 122 | |
| 123 function addon:GetName() | 108 function addon:GetName() |
| 124 return self.name | 109 return self.name |
| 125 end | 110 end |
| 126 | 111 |
| 127 | 112 |
| 137 if status == "DISABLED" then | 122 if status == "DISABLED" then |
| 138 return false | 123 return false |
| 139 else | 124 else |
| 140 return true | 125 return true |
| 141 end | 126 end |
| 142 end | |
| 143 | |
| 144 | |
| 145 function addon:GetLoadBitfield() | |
| 146 local bitfield = 0 | |
| 147 | |
| 148 if self:CanLoad() then | |
| 149 bitfield = bitfield + self.masks.reload | |
| 150 end | |
| 151 | |
| 152 if self:CanLoD() then | |
| 153 bitfield = bitfield + self.masks.ondemand | |
| 154 end | |
| 155 | |
| 156 if self:CanForceLoadAfter() then | |
| 157 bitfield = bitfield + self.masks.forceafter | |
| 158 end | |
| 159 | |
| 160 if self:CanForceLoadBefore() then | |
| 161 bitfield = bitfield + self.masks.forcebefore | |
| 162 end | |
| 163 | |
| 164 return bitfield | |
| 165 end | 127 end |
| 166 | 128 |
| 167 | 129 |
| 168 --- Checks if the addon is loadable. | 130 --- Checks if the addon is loadable. |
| 169 -- Considers interface issues, missing, etc. (NYI) | 131 -- Considers interface issues, missing, etc. (NYI) |
| 194 -- TODO: check Errata module | 156 -- TODO: check Errata module |
| 195 return false -- TODO: check if there's any reason addons can't be forceloaded | 157 return false -- TODO: check if there's any reason addons can't be forceloaded |
| 196 end | 158 end |
| 197 | 159 |
| 198 | 160 |
| 161 function addon:CanForceLoad() | |
| 162 -- FIXME: check if this would've already been loaded | |
| 163 return self:CanForceLoadAfter() | |
| 164 end | |
| 165 | |
| 166 | |
| 199 function addon:Enable() | 167 function addon:Enable() |
| 200 -- FIXME: delay this till after PLAYER_LOGIN or it'll get force-loaded | 168 -- FIXME: delay this till after PLAYER_LOGIN or it'll get force-loaded |
| 201 EnableAddOn(self.name) | 169 EnableAddOn(self.name) |
| 202 end | 170 end |
| 203 | 171 |
