Mercurial > wow > inventory
comparison Core.lua @ 215:fbd52851dcd1
Now using the best item count addon available when the selected is unavailable, rather than a random.
| author | Zerotorescue |
|---|---|
| date | Sun, 06 Feb 2011 14:00:19 +0100 |
| parents | 1959e2b3dfe1 |
| children | ca05b8ade1ea |
comparison
equal
deleted
inserted
replaced
| 214:a7c02f65b072 | 215:fbd52851dcd1 |
|---|---|
| 227 else | 227 else |
| 228 return nil; | 228 return nil; |
| 229 end | 229 end |
| 230 end | 230 end |
| 231 | 231 |
| 232 local autoSelectedItemCountAddon; | |
| 232 function addon:GetItemCountAddon(group) | 233 function addon:GetItemCountAddon(group) |
| 233 local selectedExternalAddon = self:GetOptionByKey(group, "itemCountAddon"); | 234 local selectedExternalAddon = self:GetOptionByKey(group, "itemCountAddon"); |
| 234 | 235 |
| 235 if self.supportedAddons.itemCount[selectedExternalAddon] and self.supportedAddons.itemCount[selectedExternalAddon].IsEnabled() then | 236 if self.supportedAddons.itemCount[selectedExternalAddon] and self.supportedAddons.itemCount[selectedExternalAddon].IsEnabled() then |
| 236 -- Try to use the default item count addon | 237 -- Try to use the default item count addon |
| 238 if self.supportedAddons.itemCount[selectedExternalAddon].SetGuildState then | 239 if self.supportedAddons.itemCount[selectedExternalAddon].SetGuildState then |
| 239 self.supportedAddons.itemCount[selectedExternalAddon].SetGuildState(self.db.profile.defaults.itemCountGuildsExcluded); | 240 self.supportedAddons.itemCount[selectedExternalAddon].SetGuildState(self.db.profile.defaults.itemCountGuildsExcluded); |
| 240 end | 241 end |
| 241 | 242 |
| 242 return self.supportedAddons.itemCount[selectedExternalAddon], selectedExternalAddon; | 243 return self.supportedAddons.itemCount[selectedExternalAddon], selectedExternalAddon; |
| 244 elseif self.supportedAddons.itemCount[autoSelectedItemCountAddon] and self.supportedAddons.itemCount[autoSelectedItemCountAddon].IsEnabled() then | |
| 245 -- Use previously automatically selected addon | |
| 246 | |
| 247 if self.supportedAddons.itemCount[autoSelectedItemCountAddon].SetGuildState then | |
| 248 self.supportedAddons.itemCount[autoSelectedItemCountAddon].SetGuildState(self.db.profile.defaults.itemCountGuildsExcluded); | |
| 249 end | |
| 250 | |
| 251 return self.supportedAddons.itemCount[autoSelectedItemCountAddon], autoSelectedItemCountAddon; | |
| 243 else | 252 else |
| 244 -- Default not available, get the first one then | 253 -- Default not available, get the first one then |
| 245 | 254 |
| 255 -- We are finding the best match, quality is used to compare everything | |
| 256 local altName, altValue, altQuality; | |
| 257 | |
| 246 for name, value in pairs(self.supportedAddons.itemCount) do | 258 for name, value in pairs(self.supportedAddons.itemCount) do |
| 247 if value.IsEnabled() then | 259 if value.IsEnabled() then |
| 248 if value.SetGuildState then | 260 -- Quality is based on functionality supported; TotalCount, LocalCount & GuildSelect = 3; TotalCount & LocalCount = 2, TotalCount = 1 |
| 249 value.SetGuildState(self.db.profile.defaults.itemCountGuildsExcluded); | 261 local quality = ((value.GetTotalCount and value.GetCharacterCount and value.SetGuildState and 3) or (value.GetTotalCount and value.GetCharacterCount and 2) or (value.GetTotalCount and 1) or 0); |
| 262 | |
| 263 if quality == 3 then | |
| 264 -- Best quality means instant return | |
| 265 | |
| 266 -- Remember this was auto selected so we don't loop again | |
| 267 autoSelectedItemCountAddon = name; | |
| 268 | |
| 269 return value, name; | |
| 270 elseif not altQuality or quality > altQuality then | |
| 271 -- Compare quality; improvement? = overwrite | |
| 272 altName = name; | |
| 273 altValue = value; | |
| 274 altQuality = quality; | |
| 250 end | 275 end |
| 251 | 276 end |
| 252 return value, name; | 277 end |
| 253 end | 278 |
| 279 if altName and altValue and altQuality then | |
| 280 -- Remember this was auto selected so we don't loop again | |
| 281 autoSelectedItemCountAddon = altName; | |
| 282 | |
| 283 return altValue, altName; | |
| 254 end | 284 end |
| 255 end | 285 end |
| 256 | 286 |
| 257 return; | 287 return; |
| 258 end | 288 end |
| 262 | 292 |
| 263 if not itemId then return; end | 293 if not itemId then return; end |
| 264 | 294 |
| 265 local itemCountAddon = self:GetItemCountAddon(group); | 295 local itemCountAddon = self:GetItemCountAddon(group); |
| 266 | 296 |
| 267 return (itemCountAddon and itemCountAddon.GetTotalCount(itemId)) or -1; | 297 return (itemCountAddon and itemCountAddon.GetTotalCount and itemCountAddon.GetTotalCount(itemId)) or -1; |
| 268 end | 298 end |
| 269 | 299 |
| 270 function addon:GetLocalItemCount(itemId, group) | 300 function addon:GetLocalItemCount(itemId, group) |
| 271 itemId = tonumber(itemId); | 301 itemId = tonumber(itemId); |
| 272 | 302 |
