comparison Modules/Currency.lua @ 128:799ec6dce9c3

- use BagBrother for inventory items, fixes bank stuff not being counted
author Nenue
date Thu, 19 Oct 2017 10:39:04 -0400
parents 3de635cda288
children 15a7f27b11e6
comparison
equal deleted inserted replaced
127:8a915f85b96c 128:799ec6dce9c3
36 itemID = 124124, 36 itemID = 124124,
37 }, 37 },
38 ["Legionfall War Supplies"] = { 38 ["Legionfall War Supplies"] = {
39 currencyID = 1342, 39 currencyID = 1342,
40 zones = { 40 zones = {
41 ["The Broken Shore"] = true 41 ["Broken Shore"] = true
42 } 42 }
43 }, 43 },
44 ["Nethershard"] = { 44 ["Nethershard"] = {
45 currencyID = 1226, 45 currencyID = 1226,
46 zones = { 46 zones = {
47 ["The Broken Shore"] = true 47 ["Broken Shore"] = true
48 } 48 }
49 }, 49 },
50 ["Veiled Argunite"] = { 50 ["Veiled Argunite"] = {
51 currencyID = 1508, 51 currencyID = 1508,
52 zones = { 52 zones = {
79 frame:RegisterEvent(event) 79 frame:RegisterEvent(event)
80 end 80 end
81 end 81 end
82 82
83 function module:Setup() 83 function module:Setup()
84 self:Update() 84 self:Reanchor()
85 end 85 end
86 86
87 function module:OnLoad () 87 function module:OnLoad ()
88 Veneer:AddHandler(self) 88 Veneer:AddHandler(self)
89 89
106 items[itemID] = { 106 items[itemID] = {
107 count = 0, 107 count = 0,
108 frame = block 108 frame = block
109 } 109 }
110 block.Update = itemBlock.Update 110 block.Update = itemBlock.Update
111 RegisterEvents(self, itemEvents) 111 RegisterEvents(block, itemEvents)
112 elseif info.currencyID then 112 elseif info.currencyID then
113 local currencyID = info.currencyID 113 local currencyID = info.currencyID
114 block.Update = currencyBlock.Update 114 block.Update = currencyBlock.Update
115 RegisterEvents(block, currencyEvents) 115 RegisterEvents(self, currencyEvents)
116 end 116 end
117 117
118 118
119 119
120 if info.zones then 120 if info.zones then
121 RegisterEvents(block, zoneEvents) 121 RegisterEvents(self, zoneEvents)
122 local zones = info.zones 122 local zones = info.zones
123 local of = block.Update 123 local of = block.Update
124 function block:Update(zone, subZone) 124 function block:Update()
125 125
126 local zone = GetRealZoneText() 126 local zone = GetRealZoneText()
127 local subZone = GetSubZoneText() 127 local subZone = GetSubZoneText()
128 block.debug('Zone Check', zone, subZone)
129 local canShow = ((zone and self.zones[zone]) or (subZone and self.zones[subZone])) and true or false 128 local canShow = ((zone and self.zones[zone]) or (subZone and self.zones[subZone])) and true or false
129 block.debug('Zone Check', zone, subZone, canShow)
130 if of then 130 if of then
131 canShow = canShow and of(self) 131 canShow = canShow and of(self)
132 end 132 end
133 return canShow 133 return canShow
134 end 134 end
136 end 136 end
137 end 137 end
138 138
139 function module:OnEvent (event, arg) 139 function module:OnEvent (event, arg)
140 print(self:GetName(), 'OnEvent', event, arg) 140 print(self:GetName(), 'OnEvent', event, arg)
141 end 141 self:Update()
142 142 end
143 function module:Update(isBatchUpdate) 143
144 print(self:GetName(), 'Update()') 144 function module:Update()
145 print(self:GetName(), 'Reanchor()')
145 if InCombatLockdown() then 146 if InCombatLockdown() then
146 self:SetShown(false) 147 self:SetShown(false)
147 return 148 return
148 end 149 end
149 150
152 items[itemID].count = 0 153 items[itemID].count = 0
153 end 154 end
154 155
155 local canShow = false 156 local canShow = false
156 157
157 for i = 0, NUM_BAG_SLOTS do 158 if BagBrother then
158 local numSlots = GetContainerNumSlots(i) 159 for i, bag in pairs(BagBrother.Player) do
159 for j = 1, numSlots do 160 if type(bag) == 'table' then
160 local itemID = GetContainerItemID(i, j) 161 --print(i)
161 local texture, count = GetContainerItemInfo(i,j) 162 for j, item in pairs(bag) do
162 if items[itemID] then 163 local itemID, count = string.match(item ,"^(%d+):.+;(%d*)")
163 items[itemID].count = items[itemID].count + (count or 1) 164 itemID = tonumber(itemID)
164 if not items[itemID].texture then 165 if itemID then
165 items[itemID].texture = texture 166 --print(j, itemID)
166 print('tracked currency tally', items[itemID].count, '|T'..texture..':16:16|t') 167 count = tonumber(count)
167 items[itemID].frame.Icon:SetTexture(texture) 168 if count and count >= 1 then
169 local texture = GetItemIcon(itemID)
170 --print(itemID)
171
172 if items[itemID] then
173 items[itemID].count = items[itemID].count + (count or 1)
174 if not items[itemID].texture then
175 items[itemID].texture = texture
176 --print('tracked currency tally', items[itemID].count, '|T'..texture..':16:16|t')
177 items[itemID].frame.Icon:SetTexture(texture)
178 end
179 end
180 end
181 end
182 end
183 end
184
185 end
186 else
187 for i = 0, NUM_BAG_SLOTS do
188 local numSlots = GetContainerNumSlots(i)
189 for j = 1, numSlots do
190 local itemID = GetContainerItemID(i, j)
191 local texture, count = GetContainerItemInfo(i,j)
192 if items[itemID] then
193 items[itemID].count = items[itemID].count + (count or 1)
194 if not items[itemID].texture then
195 items[itemID].texture = texture
196 print('tracked currency tally', items[itemID].count, '|T'..texture..':16:16|t')
197 items[itemID].frame.Icon:SetTexture(texture)
198 end
168 end 199 end
169 end 200 end
170 end 201 end
171 end 202 end
172 203
173 204
174 205
175 local lastBlock 206 local lastBlock
176 local totalWidth = 0 207 local totalWidth = 0
177 for _, block in ipairs(self.Blocks) do 208 for _, block in ipairs(self.Blocks) do
178 local blockIsShown = block:Update(self.realZoneText, self.subZoneText) or false 209 local blockIsShown = block:Update()
210 print(block.name, blockIsShown)
179 block:SetShown(blockIsShown) 211 block:SetShown(blockIsShown)
180 canShow = canShow or blockIsShown 212 canShow = canShow or blockIsShown
181 213
182 214
183 if blockIsShown then 215 if blockIsShown then