Zerotorescue@74: local addon = select(2, ...); Zerotorescue@74: Zerotorescue@74: -- Define the class Zerotorescue@74: Zerotorescue@74: addon.ItemData = {}; Zerotorescue@74: addon.ItemData.__index = addon.ItemData; Zerotorescue@74: Zerotorescue@74: -- Construct Zerotorescue@74: function addon.ItemData:New(itemId) Zerotorescue@74: local self = {}; Zerotorescue@74: Zerotorescue@74: setmetatable(self, addon.ItemData); Zerotorescue@74: Zerotorescue@74: local itemName, itemLink, itemRarity, _, _, _, _, _, _, itemTexture = GetItemInfo(itemId); Zerotorescue@74: Zerotorescue@74: -- Standard info everything needs Zerotorescue@74: self.id = itemId; Zerotorescue@74: self.name = itemName; Zerotorescue@74: self.link = itemLink; Zerotorescue@74: self.rarity = itemRarity; Zerotorescue@74: self.icon = itemTexture; Zerotorescue@74: Zerotorescue@74: -- Detailed stuff Zerotorescue@74: self.value = -3; Zerotorescue@74: self.globalCount = -3; Zerotorescue@74: self.localCount = -3; Zerotorescue@74: self.set = {}; Zerotorescue@74: Zerotorescue@74: return self; Zerotorescue@74: end Zerotorescue@76: Zerotorescue@76: function addon.ItemData:AddToGroup(groupName) Zerotorescue@76: if self:InGroup() then Zerotorescue@76: return false; Zerotorescue@76: end Zerotorescue@76: Zerotorescue@76: if not addon.db.profile.groups[groupName].items then Zerotorescue@76: addon.db.profile.groups[groupName].items = {}; Zerotorescue@76: end Zerotorescue@76: Zerotorescue@76: -- Set this item Zerotorescue@76: addon.db.profile.groups[groupName].items[self.id] = true; Zerotorescue@76: Zerotorescue@76: return true; Zerotorescue@76: end Zerotorescue@76: Zerotorescue@76: -- To remove an item without groupname just do RemoveFromGroup(InGroup()), although providing the group name is a nice sanity check Zerotorescue@76: function addon.ItemData:RemoveFromGroup(groupName) Zerotorescue@76: if self:InGroup() ~= groupName then Zerotorescue@76: return false; Zerotorescue@76: end Zerotorescue@76: Zerotorescue@76: -- Unset this item Zerotorescue@76: addon.db.profile.groups[groupName].items[self.id] = nil; Zerotorescue@76: Zerotorescue@76: return true; Zerotorescue@76: end Zerotorescue@76: Zerotorescue@76: function addon.ItemData:InGroup() Zerotorescue@76: -- Go through all groups to see if this item is already somewhere Zerotorescue@76: for groupName, values in pairs(addon.db.profile.groups) do Zerotorescue@76: if values.items and values.items[self.id] then Zerotorescue@76: return groupName; Zerotorescue@76: end Zerotorescue@76: end Zerotorescue@76: Zerotorescue@76: return; Zerotorescue@76: end