view Classes/ItemData.class.lua @ 134:e0e473f89e79 v0.4.0-BETA

Changelog & todo list update.
author Zerotorescue
date Tue, 18 Jan 2011 00:36:38 +0100
parents 3bec0ea44607
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