view Classes/ItemData.class.lua @ 184:679d3664849d

The stock alert should now properly scan immediately after a login. Setting the stock scan speed at fast or higher now properly speeds things up when your FPS is below 100. Renamed ?instant? speed to ?(Near) instant? and changed it to 100 steps per scan rather than everything at once.
author Zerotorescue
date Sun, 30 Jan 2011 20:53:13 +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