view ItemData.class.lua @ 81:58617c7827fa

Item refilling should now be working. Probably very slow if your bags, bank or guild bank is filled with over 200 unique items or so (needs some real testing, but know that it is a known (possible) issue).
author Zerotorescue
date Thu, 06 Jan 2011 01:01:25 +0100
parents 958aba5f3297
children
line wrap: on
line source
local addon = select(2, ...);

-- Define the class

addon.ItemData = {};
addon.ItemData.__index = addon.ItemData;

-- Construct
function addon.ItemData:New(itemId)
	local self = {};
	
	setmetatable(self, addon.ItemData);
	
	local itemName, itemLink, itemRarity, _, _, _, _, _, _, itemTexture = GetItemInfo(itemId);
	
	-- Standard info everything needs
	self.id = itemId;
	self.name = itemName;
	self.link = itemLink;
	self.rarity = itemRarity;
	self.icon = itemTexture;
	
	-- Detailed stuff
	self.value = -3;
	self.globalCount = -3;
	self.localCount = -3;
	self.set = {};
	
	return self;
end

function addon.ItemData:AddToGroup(groupName)
	if self:InGroup() then
		return false;
	end
	
	if not addon.db.profile.groups[groupName].items then
		addon.db.profile.groups[groupName].items = {};
	end
	
	-- Set this item
	addon.db.profile.groups[groupName].items[self.id] = true;
	
	return true;
end

-- To remove an item without groupname just do RemoveFromGroup(InGroup()), although providing the group name is a nice sanity check
function addon.ItemData:RemoveFromGroup(groupName)
	if self:InGroup() ~= groupName then
		return false;
	end
	
	-- Unset this item
	addon.db.profile.groups[groupName].items[self.id] = nil;
	
	return true;
end

function addon.ItemData:InGroup()
	-- Go through all groups to see if this item is already somewhere
	for groupName, values in pairs(addon.db.profile.groups) do
		if values.items and values.items[self.id] then
			return groupName;
		end
	end
	
	return;
end