annotate Classes/ItemData.class.lua @ 111:41f0689dfda1
This implementation of vendor buying did not work well. Too many customizations were needed that made the code hard to read and understand and eventually it was found that vendor buying should be based on refill target, not local stock. The mover/refiller is not meant for this, we should just do this somewhere else.
author |
Zerotorescue |
date |
Fri, 14 Jan 2011 23:31:12 +0100 |
parents |
3bec0ea44607 |
children |
|
rev |
line source |
Zerotorescue@74
|
1 local addon = select(2, ...);
|
Zerotorescue@74
|
2
|
Zerotorescue@74
|
3 -- Define the class
|
Zerotorescue@74
|
4
|
Zerotorescue@74
|
5 addon.ItemData = {};
|
Zerotorescue@74
|
6 addon.ItemData.__index = addon.ItemData;
|
Zerotorescue@74
|
7
|
Zerotorescue@74
|
8 -- Construct
|
Zerotorescue@74
|
9 function addon.ItemData:New(itemId)
|
Zerotorescue@74
|
10 local self = {};
|
Zerotorescue@74
|
11
|
Zerotorescue@74
|
12 setmetatable(self, addon.ItemData);
|
Zerotorescue@74
|
13
|
Zerotorescue@74
|
14 local itemName, itemLink, itemRarity, _, _, _, _, _, _, itemTexture = GetItemInfo(itemId);
|
Zerotorescue@74
|
15
|
Zerotorescue@74
|
16 -- Standard info everything needs
|
Zerotorescue@74
|
17 self.id = itemId;
|
Zerotorescue@74
|
18 self.name = itemName;
|
Zerotorescue@74
|
19 self.link = itemLink;
|
Zerotorescue@74
|
20 self.rarity = itemRarity;
|
Zerotorescue@74
|
21 self.icon = itemTexture;
|
Zerotorescue@74
|
22
|
Zerotorescue@74
|
23 -- Detailed stuff
|
Zerotorescue@74
|
24 self.value = -3;
|
Zerotorescue@74
|
25 self.globalCount = -3;
|
Zerotorescue@74
|
26 self.localCount = -3;
|
Zerotorescue@74
|
27 self.set = {};
|
Zerotorescue@74
|
28
|
Zerotorescue@74
|
29 return self;
|
Zerotorescue@74
|
30 end
|
Zerotorescue@76
|
31
|
Zerotorescue@76
|
32 function addon.ItemData:AddToGroup(groupName)
|
Zerotorescue@76
|
33 if self:InGroup() then
|
Zerotorescue@76
|
34 return false;
|
Zerotorescue@76
|
35 end
|
Zerotorescue@76
|
36
|
Zerotorescue@76
|
37 if not addon.db.profile.groups[groupName].items then
|
Zerotorescue@76
|
38 addon.db.profile.groups[groupName].items = {};
|
Zerotorescue@76
|
39 end
|
Zerotorescue@76
|
40
|
Zerotorescue@76
|
41 -- Set this item
|
Zerotorescue@76
|
42 addon.db.profile.groups[groupName].items[self.id] = true;
|
Zerotorescue@76
|
43
|
Zerotorescue@76
|
44 return true;
|
Zerotorescue@76
|
45 end
|
Zerotorescue@76
|
46
|
Zerotorescue@76
|
47 -- To remove an item without groupname just do RemoveFromGroup(InGroup()), although providing the group name is a nice sanity check
|
Zerotorescue@76
|
48 function addon.ItemData:RemoveFromGroup(groupName)
|
Zerotorescue@76
|
49 if self:InGroup() ~= groupName then
|
Zerotorescue@76
|
50 return false;
|
Zerotorescue@76
|
51 end
|
Zerotorescue@76
|
52
|
Zerotorescue@76
|
53 -- Unset this item
|
Zerotorescue@76
|
54 addon.db.profile.groups[groupName].items[self.id] = nil;
|
Zerotorescue@76
|
55
|
Zerotorescue@76
|
56 return true;
|
Zerotorescue@76
|
57 end
|
Zerotorescue@76
|
58
|
Zerotorescue@76
|
59 function addon.ItemData:InGroup()
|
Zerotorescue@76
|
60 -- Go through all groups to see if this item is already somewhere
|
Zerotorescue@76
|
61 for groupName, values in pairs(addon.db.profile.groups) do
|
Zerotorescue@76
|
62 if values.items and values.items[self.id] then
|
Zerotorescue@76
|
63 return groupName;
|
Zerotorescue@76
|
64 end
|
Zerotorescue@76
|
65 end
|
Zerotorescue@76
|
66
|
Zerotorescue@76
|
67 return;
|
Zerotorescue@76
|
68 end
|