annotate ItemCountAddons/DataStore (with guilds).lua @ 30:8177b5bcb883

Added tag ?NYI? to the ?Alert when below minimum? option. Added ?Don't queue when below threshold? option. This isn?t functional yet, just a place holder to indicate it will be implemented at a later time. Added initial functionality for ?virtual? groups (feel free to suggest a better name :P), with these groups you can override the defaults for multiple groups. By default, settings will be retrieved as CURRENT_GROUP -> DEFAULTS, with this it can become CURRENT_GROUP -> VIRTUAL_GROUP -> DEFAULTS. This will come in handy when managing a lot of groups. Full functionality is not yet implemented, it is just a placeholder to indicate it will be added. Reduced the softmax for the restock target option from 1000 to 100 to make the slider actually useful. You can still enter a value of upto 100.000 in the edit box below.
author Zerotorescue
date Fri, 29 Oct 2010 13:43:41 +0200
parents 8f5c02113c5c
children 06fee4208bf2
rev   line source
Zerotorescue@17 1 do
Zerotorescue@17 2
Zerotorescue@17 3 local function GetTotalCount(itemId)
Zerotorescue@17 4 local realm = GetRealmName();
Zerotorescue@17 5
Zerotorescue@17 6 local totalCount = 0;
Zerotorescue@17 7
Zerotorescue@17 8 local guilds = {};
Zerotorescue@17 9
Zerotorescue@17 10 -- Process all accounts
Zerotorescue@17 11 for accountName in pairs(DataStore:GetAccounts()) do
Zerotorescue@17 12
Zerotorescue@17 13 -- Process all charracters
Zerotorescue@17 14 for characterName, character in pairs(DataStore:GetCharacters(realm, accountName)) do
Zerotorescue@17 15 -- Get only useful info (currency / gear shouldn't contain the stuff we are interested in)
Zerotorescue@17 16 local bag, bank = DataStore:GetContainerItemCount(character, itemId);
Zerotorescue@17 17 local auctionHouse = DataStore:GetAuctionHouseItemCount(character, itemId);
Zerotorescue@17 18 local mail = DataStore:GetMailItemCount(character, itemId);
Zerotorescue@17 19
Zerotorescue@17 20 totalCount = totalCount + bag + bank + auctionHouse + mail;
Zerotorescue@17 21 end
Zerotorescue@17 22
Zerotorescue@17 23 -- Process all guilds
Zerotorescue@17 24 for guildName, guild in pairs(DataStore:GetGuilds(realm, accountName)) do
Zerotorescue@17 25 if not guilds[guildName] then
Zerotorescue@17 26 -- We don't want itemcounts from a single guild to be counted twice, so first to present data wins
Zerotorescue@17 27
Zerotorescue@17 28 guilds[guildName] = true;
Zerotorescue@17 29
Zerotorescue@17 30 local guild = DataStore:GetGuildBankItemCount(guild, itemId);
Zerotorescue@17 31
Zerotorescue@17 32 totalCount = totalCount + guild;
Zerotorescue@17 33 end
Zerotorescue@17 34 end
Zerotorescue@17 35 end
Zerotorescue@17 36
Zerotorescue@17 37 return totalCount or -1;
Zerotorescue@17 38 end
Zerotorescue@17 39
Zerotorescue@17 40 local function GetCharacterCount(itemId)
Zerotorescue@17 41 local character = DataStore:GetCharacter();
Zerotorescue@17 42
Zerotorescue@17 43 local bag, bank = DataStore:GetContainerItemCount(character, itemId);
Zerotorescue@17 44 local auctionHouse = DataStore:GetAuctionHouseItemCount(character, itemId);
Zerotorescue@17 45 local mail = DataStore:GetMailItemCount(character, itemId);
Zerotorescue@17 46
Zerotorescue@17 47 return bag, bank, auctionHouse, mail;
Zerotorescue@17 48 end
Zerotorescue@17 49
Zerotorescue@17 50 local function IsEnabled()
Zerotorescue@17 51 return (DataStore and DataStore.GetContainerItemCount and DataStore.GetAuctionHouseItemCount and DataStore.GetMailItemCount);
Zerotorescue@17 52 end
Zerotorescue@17 53
Zerotorescue@17 54 IMRegisterItemCountAddon("DataStore (with guilds)", GetTotalCount, GetCharacterCount, IsEnabled);
Zerotorescue@17 55
Zerotorescue@17 56 end