view Classes/ItemData.class.lua @ 176:26c750a10b14

Renamed Inventorium debug channel to IMDebug (so it?s easier to recognize only IM changes, not from other addons), write /im d to register this new channel. Implemented stock alerts. Added ?don?t alert at characters? option which allows you to track groups at characters without being bothered about low stock. You can change the speed of the stock alert at the extra config tab.
author Zerotorescue
date Sun, 30 Jan 2011 15:39:18 +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