view Plugins/ItemCountAddons/DataStore (with guilds).lua @ 119:dc6f405c1a5d

Now resizing the mover frame based on text size. addon.Locations table now uses location names as value, rather than random numbers. Added proper Merchant restocking support. Please note this currently doesn?t take the bonus queue nor the min crafting queue options into account.
author Zerotorescue
date Sat, 15 Jan 2011 17:03:05 +0100
parents de18ef96983b
children 314943963155
line wrap: on
line source
do
	
	local function GetTotalCount(itemId)
		local realm = GetRealmName();
		
		local totalCount = 0;
		
		local guilds = {};
		
		-- Process all accounts
		for accountName in pairs(DataStore:GetAccounts()) do
		
			-- Process all charracters
			for characterName, character in pairs(DataStore:GetCharacters(realm, accountName)) do
				-- Get only useful info (currency / gear shouldn't contain the stuff we are interested in)
				local bag, bank = DataStore:GetContainerItemCount(character, itemId);
				bag = (bag or 0); bank = (bank or 0);
				local auctionHouse = DataStore:GetAuctionHouseItemCount(character, itemId) or 0;
				local mail = DataStore:GetMailItemCount(character, itemId) or 0;
				
				totalCount = totalCount + bag + bank + auctionHouse + mail;
			end
			
			-- Process all guilds
			for guildName, guild in pairs(DataStore:GetGuilds(realm, accountName)) do
				if not guilds[guildName] then
					-- We don't want itemcounts from a single guild to be counted twice, so first to present data wins
					
					guilds[guildName] = true;
					
					local guild = DataStore:GetGuildBankItemCount(guild, itemId) or 0;
				
					totalCount = totalCount + guild;
				end
			end
		end
		
		return totalCount or -1;
	end
	
	local function GetCharacterCount(itemId)
		local character = DataStore:GetCharacter();
		
		local bag, bank = DataStore:GetContainerItemCount(character, itemId);
		bag = (bag or 0); bank = (bank or 0);
		local auctionHouse = DataStore:GetAuctionHouseItemCount(character, itemId) or 0;
		local mail = DataStore:GetMailItemCount(character, itemId) or 0;
		
		return bag, bank, auctionHouse, mail;
	end
	
	local function IsEnabled()
		return (DataStore and DataStore.GetContainerItemCount and DataStore.GetAuctionHouseItemCount and DataStore.GetMailItemCount);
	end
	
	IMRegisterItemCountAddon("DataStore (with guilds)", GetTotalCount, GetCharacterCount, IsEnabled);
	
end