comparison Modules/Currency.lua @ 123:b3c0258b419d v7.3.0-1

ArtifactPower: - XP progress bar fixes Currency: - More argus stuff - Block dimensions are calculated more consistently TalkingHead - Aesthetic changes - Default right-click behaviour restored (hides the text box)
author Nenue
date Tue, 05 Sep 2017 02:56:33 -0400
parents ddfe19d70a34
children 3f4794dca91b
comparison
equal deleted inserted replaced
122:ea2c616a3b4f 123:b3c0258b419d
6 -- To change this template use File | Settings | File Templates. 6 -- To change this template use File | Settings | File Templates.
7 -- 7 --
8 8
9 local print = DEVIAN_WORKSPACE and function(...) print('VnWorldState', ...) end or nop 9 local print = DEVIAN_WORKSPACE and function(...) print('VnWorldState', ...) end or nop
10 local profileUpdate, needsUpdate 10 local profileUpdate, needsUpdate
11
12
13 local itemBlock = {}
14 local currencyBlock = {}
15
11 16
12 local zoneEvents = { 17 local zoneEvents = {
13 "ZONE_CHANGED_NEW_AREA", "ZONE_CHANGED_INDOORS", "ZONE_CHANGED" 18 "ZONE_CHANGED_NEW_AREA", "ZONE_CHANGED_INDOORS", "ZONE_CHANGED"
14 } 19 }
15 local currencyEvents = { 20 local currencyEvents = {
38 ["Legionfall War Supplies"] = { 43 ["Legionfall War Supplies"] = {
39 currencyID = 1342, 44 currencyID = 1342,
40 }, 45 },
41 ["Nethershard"] = { 46 ["Nethershard"] = {
42 currencyID = 1226, 47 currencyID = 1226,
48 },
49 ["Veiled Argunite"] = {
50 currencyID = 1508,
51 },
52 ["Argus Waystone"] = {
53 currencyID = 1506,
43 } 54 }
44 } 55 }
45 local items, currencies = {}, {} 56 local items, currencies = {}, {}
46 57
47 58
75 for k,v in pairs(info) do 86 for k,v in pairs(info) do
76 print(name, k, '=', v) 87 print(name, k, '=', v)
77 frame[k] = v 88 frame[k] = v
78 end 89 end
79 90
80 local debug = function(...) 91 frame.debug = function(...)
81 print('|cFF0088FF<'..frame.name..'>|r', ...) 92 print('|cFF0088FF<'..frame.name..'>|r', ...)
82 end 93 end
94 frame.id = info.itemID or info.currencyID
95
83 96
84 if info.itemID then 97 if info.itemID then
85 local itemID = info.itemID 98 local itemID = info.itemID
86 items[itemID] = { 99 items[itemID] = {
87 count = 0, 100 count = 0,
88 frame = frame 101 frame = frame
89 } 102 }
90 frame.Update = function(block) 103 frame.Update = itemBlock.Update
91 debug('Update [Item]')
92 if items[itemID].count >= 1 then
93 block.Icon:SetTexture(GetItemIcon(itemID))
94 block.Label:SetFormattedText("%d", items[itemID].count)
95 return true
96 end
97 end
98 RegisterEvents(self, itemEvents) 104 RegisterEvents(self, itemEvents)
99 elseif info.currencyID then 105 elseif info.currencyID then
100 local currencyID = info.currencyID 106 local currencyID = info.currencyID
101 frame.Update = function (block) 107 frame.Update = currencyBlock.Update
102 debug('Update [Currency]')
103 local name, earned, texture, earnedThisWeek, weeklyMax, totalMax = GetCurrencyInfo(currencyID)
104
105 block.Icon:SetTexture(texture)
106 if self.showMax then
107 block.Label:SetFormattedText("%d / %d", earned, totalMax)
108 else
109 block.Label:SetFormattedText("%d", earned)
110 end
111
112 block:SetWidth(block.Icon:GetWidth() + block.Label:GetStringWidth() + 6)
113 return true
114 end
115
116 RegisterEvents(frame, currencyEvents) 108 RegisterEvents(frame, currencyEvents)
117 end 109 end
110
111
112
118 if info.zones then 113 if info.zones then
119 RegisterEvents(frame, zoneEvents) 114 RegisterEvents(frame, zoneEvents)
120 local zones = info.zones 115 local zones = info.zones
121 local of = frame.Update 116 local of = frame.Update
122 frame.Update = function(block) 117 frame.Update = function(block)
123 debug('Update [Zone]') 118 frame.debug('Update [Zone]')
124 local zone = self.zoneText 119 local zone = self.zoneText
125 local canShow = (zone and block.zones[zone]) and true or false 120 local canShow = (zone and block.zones[zone]) and true or false
126 if of then 121 if of then
127 canShow = canShow and of(frame) 122 canShow = canShow and of(frame)
128 end 123 end
186 block:SetPoint('TOPLEFT', self, 'TOPLEFT') 181 block:SetPoint('TOPLEFT', self, 'TOPLEFT')
187 end 182 end
188 lastBlock = block 183 lastBlock = block
189 184
190 block:SetHeight(24) 185 block:SetHeight(24)
191 block:SetWidth(block.Icon:GetWidth() + block.Label:GetWidth()+4) 186 block:SetWidth(block.Icon:GetWidth() + block.Label:GetStringWidth()+4)
192 totalWidth = totalWidth + block:GetWidth() 187 totalWidth = totalWidth + block:GetWidth()
193 end 188 end
194 print(block:IsShown(), '|cFF0088FF'..block.name..'|r', block:GetSize()) 189 print(block:IsShown(), '|cFF0088FF'..block.name..'|r', block:GetSize())
195 end 190 end
196 191
247 end 242 end
248 243
249 function block:Setup() 244 function block:Setup()
250 245
251 end 246 end
247 function itemBlock:Update()
248 self.debug('Update [Item]')
249 if items[self.itemID].count >= 1 then
250 self.Icon:SetTexture(GetItemIcon(self.id))
251 self.Label:SetFormattedText("%d", items[self.id].count)
252 return true
253 end
254 end
255
256 function currencyBlock:Update()
257 self.debug('Update [Currency]')
258 local name, earned, texture, earnedThisWeek, weeklyMax, totalMax = GetCurrencyInfo(self.id)
259
260 self.Icon:SetTexture(texture)
261 if self.showMax then
262 self.Label:SetFormattedText("%d / %d", earned, totalMax)
263 else
264 self.Label:SetFormattedText("%d", earned)
265 end
266
267 --self:SetWidth(self.Icon:GetWidth() + self.Label:GetStringWidth() + 6)
268 return true
269 end