Nenue@80
|
1 -- Veneer
|
Nenue@84
|
2 -- WorldState.lua
|
Nenue@80
|
3 -- Created: 10/7/2016 10:55 PM
|
Nenue@80
|
4 -- %file-revision%
|
Nenue@80
|
5 --
|
Nenue@80
|
6
|
Nenue@87
|
7 local WorldStateBlockMixin = {}
|
Nenue@87
|
8 VeneerOrderHallMixin = {
|
Nenue@87
|
9 anchorPoint = 'TOP',
|
Nenue@87
|
10 }
|
Nenue@87
|
11 VeneerWorldStateCurrencyMixin = {
|
Nenue@87
|
12 }
|
Nenue@84
|
13 VeneerWorldStateProgressMixin = {
|
Nenue@84
|
14 keepOpen = true
|
Nenue@84
|
15 }
|
Nenue@81
|
16 VeneerWorldStateMixin = {
|
Nenue@82
|
17 maxHeight = 0,
|
Nenue@87
|
18 detectedFrames = {},
|
Nenue@87
|
19 anchorPoint = 'TOP',
|
Nenue@81
|
20 }
|
Nenue@80
|
21 local print = DEVIAN_WORKSPACE and function(...) print('VnWorldState', ...) end or nop
|
Nenue@80
|
22
|
Nenue@87
|
23 function VeneerWorldStateMixin:Reset()
|
Nenue@87
|
24 for i, frame in ipairs(self.modules) do
|
Nenue@87
|
25 if frame.Reset then
|
Nenue@87
|
26 frame:Reset()
|
Nenue@87
|
27 end
|
Nenue@87
|
28 end
|
Nenue@87
|
29 self:Update()
|
Nenue@87
|
30 end
|
Nenue@87
|
31
|
Nenue@80
|
32 function VeneerWorldStateMixin:Setup()
|
Nenue@80
|
33 --DEFAULT_CHAT_FRAME:AddMessage('Loaded')
|
Nenue@84
|
34 print('|cFFFFFF00'..self:GetName()..'|r:Setup()')
|
Nenue@81
|
35
|
Nenue@81
|
36 self.modules = self.modules or {self:GetChildren()}
|
Nenue@81
|
37 for i, frame in ipairs(self.modules) do
|
Nenue@84
|
38 print('--'.. frame:GetName()..' exists')
|
Nenue@81
|
39 if frame.Setup then
|
Nenue@84
|
40 print('--'.. frame:GetName()..':Setup()')
|
Nenue@81
|
41 frame:Setup()
|
Nenue@81
|
42 end
|
Nenue@82
|
43
|
Nenue@87
|
44
|
Nenue@87
|
45 for k,v in pairs(WorldStateBlockMixin) do
|
Nenue@87
|
46 if not frame[k] then
|
Nenue@87
|
47 frame[k] = v
|
Nenue@87
|
48 if k:match('^On') then
|
Nenue@87
|
49 frame:SetScript(k, v)
|
Nenue@87
|
50 end
|
Nenue@82
|
51 end
|
Nenue@87
|
52 end
|
Nenue@82
|
53
|
Nenue@81
|
54 end
|
Nenue@84
|
55 self:UnregisterEvent('PLAYER_LOGIN')
|
Nenue@80
|
56 end
|
Nenue@80
|
57
|
Nenue@82
|
58 function VeneerWorldStateMixin:SetOrderHallUIMods()
|
Nenue@87
|
59 print('|cFFFF4400remove me', debugstack())
|
Nenue@80
|
60 end
|
Nenue@84
|
61
|
Nenue@84
|
62
|
Nenue@84
|
63 function VeneerWorldStateMixin:OnLoad ()
|
Nenue@87
|
64 self.modules = {self:GetChildren()}
|
Nenue@84
|
65 print('|cFFFFFF00'..self:GetName()..'|r!')
|
Nenue@84
|
66 self:RegisterEvent('PLAYER_ENTERING_WORLD')
|
Nenue@84
|
67 self:RegisterEvent('PLAYER_REGEN_ENABLED')
|
Nenue@84
|
68 self:RegisterEvent('PLAYER_REGEN_DISABLED')
|
Nenue@87
|
69 self:RegisterEvent('ZONE_CHANGED_NEW_AREA')
|
Nenue@87
|
70 self:RegisterEvent('ADDON_LOADED')
|
Nenue@87
|
71 Veneer:AddHandler(self, self.anchorPoint, true)
|
Nenue@87
|
72 SLASH_VENEERWORLDSTATE1 = "/vws"
|
Nenue@87
|
73 SLASH_VENEERWORLDSTATE2 = "/worldstate"
|
Nenue@87
|
74 SlashCmdList.VENEERWORLDSTATE = function()
|
Nenue@87
|
75 self:Reset()
|
Nenue@87
|
76 end
|
Nenue@84
|
77 end
|
Nenue@84
|
78
|
Nenue@80
|
79 function VeneerWorldStateMixin:OnEvent(event, arg)
|
Nenue@80
|
80 print(event, arg)
|
Nenue@88
|
81 if event == 'ZONE_CHANGED_NEW_AREA' or event == 'ADDON_LOADED' then
|
Nenue@87
|
82 if OrderHallCommandBar then
|
Nenue@87
|
83 self:UnregisterEvent('ZONE_CHANGED_NEW_AREA')
|
Nenue@87
|
84 self:UnregisterEvent('ADDON_LOADED')
|
Nenue@87
|
85 Veneer:AddHandler(VeneerOrderHallHandler, 'TOP', true)
|
Nenue@82
|
86 end
|
Nenue@82
|
87 elseif event == 'PLAYER_ENTERING_WORLD' then
|
Nenue@80
|
88 self:Update()
|
Nenue@81
|
89 elseif event == 'PLAYER_REGEN_ENABLED' then
|
Nenue@83
|
90 self:SetShown(true)
|
Nenue@81
|
91 elseif event == 'PLAYER_REGEN_DISABLED' then
|
Nenue@83
|
92 self:SetShown(false)
|
Nenue@80
|
93 end
|
Nenue@80
|
94 end
|
Nenue@80
|
95
|
Nenue@88
|
96 function VeneerWorldStateMixin:Update(isBatchUpdate)
|
Nenue@80
|
97 print('|cFFFFFF00All:Update()|r')
|
Nenue@88
|
98 for index, frame in ipairs(self.modules) do
|
Nenue@82
|
99 if frame.Update then
|
Nenue@88
|
100 print(' '..index..' |cFFFF00FFUpdate:|r '.. frame:GetName())
|
Nenue@88
|
101 frame:Update(isBatchUpdate)
|
Nenue@88
|
102 print(' ', frame:IsVisible(), frame:IsShown())
|
Nenue@82
|
103 end
|
Nenue@82
|
104 end
|
Nenue@82
|
105 end
|
Nenue@82
|
106
|
Nenue@87
|
107 function VeneerWorldStateMixin:Reanchor(isUpdate)
|
Nenue@88
|
108 print(' |cFF0088FF'..self:GetName()..':Reanchor()|r', #self.modules, 'blocks')
|
Nenue@81
|
109 self.maxHeight = 0
|
Nenue@81
|
110 for i, frame in ipairs(self.modules) do
|
Nenue@82
|
111 print(' '..frame:GetName()..':',frame:IsShown(), frame:IsVisible(), frame:GetHeight())
|
Nenue@82
|
112 if frame:IsShown() then
|
Nenue@82
|
113 self.maxHeight = max(self.maxHeight, frame:GetHeight())
|
Nenue@80
|
114 end
|
Nenue@80
|
115 end
|
Nenue@82
|
116 if self.maxHeight == 0 then
|
Nenue@87
|
117 print (' hiding because there are no blocks')
|
Nenue@82
|
118 self:Hide()
|
Nenue@82
|
119 else
|
Nenue@82
|
120 self:Show()
|
Nenue@87
|
121 print (' height update:', self.maxHeight)
|
Nenue@82
|
122 self:SetHeight(self.maxHeight)
|
Nenue@82
|
123 end
|
Nenue@82
|
124
|
Nenue@87
|
125 if not isUpdate then
|
Nenue@87
|
126 Veneer:InternalReanchor(self, print)
|
Nenue@87
|
127 end
|
Nenue@80
|
128 end
|
Nenue@80
|
129
|
Nenue@80
|
130
|
Nenue@80
|
131
|
Nenue@84
|
132 function VeneerWorldStateMixin:OnMouseDown()
|
Nenue@80
|
133 end
|
Nenue@80
|
134
|
Nenue@87
|
135 function VeneerOrderHallMixin:Setup()
|
Nenue@87
|
136 print('|cFFFFFF00'..self:GetName()..':Setup()')
|
Nenue@88
|
137 self:SetParent(OrderHallCommandBar)
|
Nenue@88
|
138 self:RegisterEvent("ZONE_CHANGED");
|
Nenue@88
|
139 self:RegisterEvent("ZONE_CHANGED_INDOORS");
|
Nenue@88
|
140 self:RegisterEvent("ZONE_CHANGED_NEW_AREA");
|
Nenue@88
|
141 self:SetShown(true)
|
Nenue@88
|
142 end
|
Nenue@88
|
143
|
Nenue@88
|
144 function VeneerOrderHallMixin:OnEvent(event, ...)
|
Nenue@88
|
145
|
Nenue@88
|
146 print('|cFF00AAFF'..self:GetName()..'|r:'.. event, ...)
|
Nenue@88
|
147 self:Update()
|
Nenue@88
|
148 end
|
Nenue@88
|
149
|
Nenue@88
|
150 function VeneerOrderHallMixin:OnShow()
|
Nenue@88
|
151 print('|cFF00AAFF'..self:GetName()..'|r:OnShow()', OrderHallCommandBar:IsShown(), self:IsShown())
|
Nenue@88
|
152 self:Update()
|
Nenue@88
|
153 Veneer:InternalReanchor(self)
|
Nenue@88
|
154 end
|
Nenue@88
|
155
|
Nenue@88
|
156 function VeneerOrderHallMixin:OnHide()
|
Nenue@88
|
157 print('|cFF00AAFF'..self:GetName()..'|r:OnHide()', OrderHallCommandBar:IsShown(), self:IsShown())
|
Nenue@88
|
158 Veneer:Reanchor()
|
Nenue@87
|
159 end
|
Nenue@87
|
160
|
Nenue@87
|
161 function VeneerOrderHallMixin:Update()
|
Nenue@87
|
162
|
Nenue@87
|
163 if not OrderHallCommandBar then
|
Nenue@87
|
164 print('|cFFFF4400'..self:GetName()..' updater called without target')
|
Nenue@87
|
165 return
|
Nenue@87
|
166 end
|
Nenue@87
|
167
|
Nenue@87
|
168 OrderHallCommandBar:ClearAllPoints()
|
Nenue@88
|
169 OrderHallCommandBar:SetPoint('TOP', UIParent, 'TOP')
|
Nenue@87
|
170 OrderHallCommandBar:SetWidth(600)
|
Nenue@87
|
171 OrderHallCommandBar.Background:SetColorTexture(0,0,0,0.5)
|
Nenue@87
|
172 OrderHallCommandBar.WorldMapButton:Hide()
|
Nenue@87
|
173 OrderHallCommandBar:EnableMouse(false)
|
Nenue@88
|
174 self:SetSize(OrderHallCommandBar:GetSize())
|
Nenue@87
|
175
|
Nenue@88
|
176 print('|cFF00AAFF'..self:GetName()..'|r:Update()', OrderHallCommandBar:IsVisible(), self:IsShown())
|
Nenue@88
|
177 print(debugstack(6))
|
Nenue@88
|
178
|
Nenue@87
|
179 end
|
Nenue@87
|
180
|
Nenue@80
|
181 function VeneerWorldStateCurrencyMixin:OnLoad ()
|
Nenue@80
|
182
|
Nenue@84
|
183 self:RegisterEvent("PLAYER_ENTERING_WORLD");
|
Nenue@84
|
184 self:RegisterEvent("ZONE_CHANGED");
|
Nenue@84
|
185 self:RegisterEvent("ZONE_CHANGED_INDOORS");
|
Nenue@84
|
186 self:RegisterEvent("ZONE_CHANGED_NEW_AREA");
|
Nenue@80
|
187 self:RegisterEvent('CURRENCY_DISPLAY_UPDATE')
|
Nenue@80
|
188 self:RegisterEvent('CHAT_MSG_CURRENCY')
|
Nenue@80
|
189
|
Nenue@80
|
190 end
|
Nenue@80
|
191
|
Nenue@80
|
192 function VeneerWorldStateCurrencyMixin:OnEvent (event, arg)
|
Nenue@80
|
193 self:Update()
|
Nenue@80
|
194 end
|
Nenue@80
|
195
|
Nenue@80
|
196
|
Nenue@88
|
197 function VeneerWorldStateCurrencyMixin:Update(isBatchUpdate)
|
Nenue@81
|
198
|
Nenue@82
|
199 print(' Zone:', GetZoneText())
|
Nenue@81
|
200 if GetZoneText() == 'Suramar' then
|
Nenue@80
|
201 local name, earned, texture, earnedThisWeek, weeklyMax, totalMax = GetCurrencyInfo(1155)
|
Nenue@80
|
202
|
Nenue@80
|
203 self.Icon:SetTexture(texture)
|
Nenue@80
|
204 self.Label:SetFormattedText("%d / %d", earned, totalMax)
|
Nenue@80
|
205 self:Show()
|
Nenue@80
|
206 self:SetWidth(self.Icon:GetWidth() + self.Label:GetStringWidth() + 6)
|
Nenue@82
|
207 self:SetSize(200,16)
|
Nenue@80
|
208 else
|
Nenue@80
|
209 self:Hide()
|
Nenue@80
|
210 end
|
Nenue@81
|
211
|
Nenue@82
|
212
|
Nenue@81
|
213 end
|
Nenue@81
|
214
|
Nenue@82
|
215 function VeneerWorldStateProgressMixin:OnUpdate(sinceLast)
|
Nenue@87
|
216 self.timeLived = (self.timeLived or 0) + sinceLast
|
Nenue@84
|
217 if self.keepOpen then
|
Nenue@84
|
218 return
|
Nenue@84
|
219 end
|
Nenue@82
|
220 if self.timeLived >= 3 and not self.TransitionFadeOut:IsPlaying() then
|
Nenue@82
|
221 if not self.timeOut then
|
Nenue@82
|
222 self.timeOut = true
|
Nenue@84
|
223 self.TimedFadeOut:Play()
|
Nenue@82
|
224 end
|
Nenue@82
|
225 end
|
Nenue@82
|
226 end
|
Nenue@82
|
227
|
Nenue@82
|
228
|
Nenue@81
|
229 function VeneerWorldStateProgressMixin:OnLoad()
|
Nenue@82
|
230 self:RegisterEvent('PLAYER_EQUIPMENT_CHANGED')
|
Nenue@81
|
231
|
Nenue@82
|
232 self:RegisterEvent("PLAYER_XP_UPDATE");
|
Nenue@82
|
233 self:RegisterEvent("UPDATE_EXHAUSTION");
|
Nenue@82
|
234 self:RegisterEvent("PLAYER_LEVEL_UP");
|
Nenue@82
|
235 self:RegisterEvent("PLAYER_UPDATE_RESTING");
|
Nenue@82
|
236
|
Nenue@82
|
237 self:RegisterEvent("ARTIFACT_UPDATE");
|
Nenue@82
|
238 self:RegisterEvent("ARTIFACT_XP_UPDATE");
|
Nenue@82
|
239 self:RegisterEvent("ARTIFACT_CLOSE");
|
Nenue@82
|
240 self:RegisterEvent("ARTIFACT_MAX_RANKS_UPDATE");
|
Nenue@82
|
241
|
Nenue@82
|
242 self.progressPercent = 0
|
Nenue@82
|
243 self.progressAmount = 0
|
Nenue@82
|
244 self.progressMax = 1
|
Nenue@82
|
245 self.progressOverflow = 0
|
Nenue@84
|
246
|
Nenue@81
|
247 end
|
Nenue@81
|
248
|
Nenue@81
|
249 function VeneerWorldStateProgressMixin:Setup()
|
Nenue@81
|
250 self:UpdateXPGain()
|
Nenue@82
|
251 if self.canGainXP then
|
Nenue@81
|
252 self.mode = 'xp'
|
Nenue@81
|
253 else
|
Nenue@81
|
254 self.mode = 'artifact'
|
Nenue@81
|
255 end
|
Nenue@81
|
256 print('setup mode:', self.mode)
|
Nenue@81
|
257 end
|
Nenue@81
|
258
|
Nenue@82
|
259 function VeneerWorldStateProgressMixin:OnEvent(event, ...)
|
Nenue@82
|
260 local lastMode = self.mode
|
Nenue@82
|
261 if event == 'PLAYER_LEVEL_UP' or event == 'ENABLE_XP_GAIN' or event == 'DISABLE_XP_GAIN' then
|
Nenue@81
|
262 self:UpdateXPGain()
|
Nenue@81
|
263 elseif event == 'ARTIFACT_XP_UPDATE' or event == 'ARTIFACT_UPDATE' then
|
Nenue@81
|
264 self.mode = 'artifact'
|
Nenue@82
|
265
|
Nenue@82
|
266 elseif event == 'PLAYER_EQUIPMENT_CHANGED' then
|
Nenue@82
|
267 local slot, hasEquip = ...
|
Nenue@82
|
268 if slot == 16 then
|
Nenue@82
|
269 self.mode = 'artifact'
|
Nenue@82
|
270 lastMode = nil
|
Nenue@82
|
271 end
|
Nenue@82
|
272 elseif event == 'PLAYER_XP_UPDATE' or event == 'PLAYER_LEVEL_UP' then
|
Nenue@82
|
273 print('forcing to XP mode')
|
Nenue@81
|
274 self.mode = 'xp'
|
Nenue@81
|
275 end
|
Nenue@82
|
276 self.modeChanged = (lastMode ~= self.mode)
|
Nenue@82
|
277 if self.modeChanged and self:IsVisible() then
|
Nenue@82
|
278 print('|cFF88FF00'..self:GetName()..'.TransitionFadeOut:Play()', event, ...)
|
Nenue@84
|
279 self:AnimateMode()
|
Nenue@82
|
280 else
|
Nenue@82
|
281 print('|cFFFFFF00'..self:GetName()..':Update()', event, ...)
|
Nenue@82
|
282 self:Update()
|
Nenue@82
|
283 end
|
Nenue@81
|
284 end
|
Nenue@81
|
285 function VeneerWorldStateProgressMixin:UpdateXPGain()
|
Nenue@82
|
286 self.canGainXP = (UnitLevel('player') < GetMaxPlayerLevel()) and (not IsXPUserDisabled())
|
Nenue@82
|
287 if not self.canGainXP then
|
Nenue@81
|
288 self.ProgressBar:SetColorTexture(0.75,0.75,0.75)
|
Nenue@81
|
289 end
|
Nenue@81
|
290 end
|
Nenue@81
|
291
|
Nenue@81
|
292 local GetEquippedArtifactInfo = _G.C_ArtifactUI.GetEquippedArtifactInfo
|
Nenue@81
|
293 local GetCostForPointAtRank = _G.C_ArtifactUI.GetCostForPointAtRank
|
Nenue@87
|
294
|
Nenue@87
|
295 function VeneerWorldStateProgressMixin:AnimateProgress(progressChange)
|
Nenue@87
|
296
|
Nenue@87
|
297 local progressWidth = self:GetWidth() * progressChange
|
Nenue@87
|
298
|
Nenue@87
|
299 print(' Render change:', progressChange, progressWidth)
|
Nenue@87
|
300 self.ProgressAdded:Show()
|
Nenue@87
|
301 self.ProgressAdded:ClearAllPoints()
|
Nenue@87
|
302 self.ProgressAdded:SetPoint('TOPRIGHT', self.ProgressBar, 'TOPRIGHT', 0, 0)
|
Nenue@87
|
303 self.ProgressAdded:SetPoint('BOTTOMLEFT', self.ProgressBar, 'BOTTOMRIGHT', - (progressWidth), 0)
|
Nenue@87
|
304
|
Nenue@87
|
305
|
Nenue@87
|
306 self.ProgressFlash.translation:SetOffset(progressWidth, 0)
|
Nenue@87
|
307 self.ProgressFlash:Play()
|
Nenue@87
|
308 end
|
Nenue@87
|
309
|
Nenue@88
|
310 function VeneerWorldStateProgressMixin:Update(isBatchUpdate)
|
Nenue@82
|
311 local hasNewInfo = false
|
Nenue@82
|
312 local progressChange = false
|
Nenue@82
|
313 print(' current mode:', self.mode)
|
Nenue@81
|
314
|
Nenue@81
|
315
|
Nenue@81
|
316 if self.mode == 'xp' then
|
Nenue@81
|
317 local xp = UnitXP('player')
|
Nenue@81
|
318 local xpMax = UnitXPMax('player')
|
Nenue@81
|
319 local bonusXP = GetXPExhaustion()
|
Nenue@81
|
320 if xp then
|
Nenue@81
|
321 self.progressPercent = xp / xpMax
|
Nenue@81
|
322 end
|
Nenue@84
|
323 self.progressText = '|cFFFFCC00' .. UnitLevel('player') .. '|r ' .. xp .. '/' .. xpMax
|
Nenue@82
|
324 if bonusXP then
|
Nenue@82
|
325 self.ProgressBar:SetColorTexture(0, 0.5,1)
|
Nenue@82
|
326 self.OverflowBar:Show()
|
Nenue@82
|
327 self.OverflowBar:ClearAllPoints()
|
Nenue@82
|
328 self.OverflowBar:SetPoint('BOTTOMLEFT', self.ProgressBar, 'BOTTOMRIGHT', 0, 0)
|
Nenue@82
|
329 else
|
Nenue@82
|
330 self.ProgressBar:SetColorTexture(0.5,0,1)
|
Nenue@82
|
331 end
|
Nenue@82
|
332 hasNewInfo = (self.progressAmount ~= xp)
|
Nenue@83
|
333 progressChange = (hasNewInfo and not self.modeChanged) and ((xp - self.progressAmount) / xpMax)
|
Nenue@88
|
334 self.progressOverflow = bonusXP or 0
|
Nenue@82
|
335 self.progressAmount = xp
|
Nenue@82
|
336 self.progressMax = xpMax
|
Nenue@85
|
337
|
Nenue@81
|
338 elseif self.mode == 'artifact' then
|
Nenue@81
|
339 local itemID, altItemID, name, icon, totalXP, pointsSpent = GetEquippedArtifactInfo()
|
Nenue@82
|
340
|
Nenue@82
|
341 if itemID then
|
Nenue@82
|
342 local nextRankCost = GetCostForPointAtRank(pointsSpent) or 0
|
Nenue@88
|
343 print(' API:', itemID, name, 'XP:', totalXP, 'Points:', pointsSpent, 'Next:', nextRankCost)
|
Nenue@82
|
344 hasNewInfo = (self.progressAmount ~= totalXP)
|
Nenue@83
|
345 progressChange = (hasNewInfo and not self.modeChanged) and (((totalXP - self.progressAmount) / nextRankCost))
|
Nenue@82
|
346
|
Nenue@82
|
347 if totalXP > nextRankCost then
|
Nenue@82
|
348 self.progressPercent = 1
|
Nenue@85
|
349 else
|
Nenue@82
|
350 self.progressPercent = totalXP / nextRankCost
|
Nenue@82
|
351 end
|
Nenue@82
|
352
|
Nenue@82
|
353 self.progressText = name .. ' ('..pointsSpent .. '): '.. totalXP .. ' / ' .. nextRankCost
|
Nenue@82
|
354
|
Nenue@82
|
355 self.ProgressBar:SetColorTexture(1,0.5,0,1)
|
Nenue@82
|
356 self.OverflowBar:Hide()
|
Nenue@82
|
357
|
Nenue@85
|
358 self.progressOverflow = 0
|
Nenue@82
|
359 self.progressAmount = totalXP
|
Nenue@82
|
360 self.progressMax = nextRankCost
|
Nenue@82
|
361 else
|
Nenue@88
|
362 self.progressOverflow = 0
|
Nenue@82
|
363 self.progressAmount = 0
|
Nenue@82
|
364 self.progressMax = 1
|
Nenue@82
|
365 self.progressText = ''
|
Nenue@82
|
366 end
|
Nenue@82
|
367 end
|
Nenue@82
|
368
|
Nenue@82
|
369 if self.mode then
|
Nenue@82
|
370 self:SetSize(600,16)
|
Nenue@82
|
371 if hasNewInfo then
|
Nenue@82
|
372 self.timeOut = nil
|
Nenue@82
|
373 self.timeLived = 0
|
Nenue@82
|
374 if self.TransitionFadeOut:IsPlaying() then
|
Nenue@82
|
375 self.TransitionFadeOut:Stop()
|
Nenue@82
|
376 self:SetAlpha(1)
|
Nenue@82
|
377 end
|
Nenue@82
|
378 if not self:IsVisible() then
|
Nenue@82
|
379 self.TransitionFadeIn:Play()
|
Nenue@82
|
380 else
|
Nenue@82
|
381 self:ShowPanel()
|
Nenue@82
|
382 end
|
Nenue@82
|
383
|
Nenue@81
|
384 end
|
Nenue@81
|
385
|
Nenue@81
|
386
|
Nenue@88
|
387 print(' Percent:', floor(self.progressPercent*100)/100, 'BarLength:', floor(self:GetWidth()* self.progressPercent), 'new:', hasNewInfo, 'shown:', self:IsShown())
|
Nenue@88
|
388 print(' Metrics:', self:IsVisible(), self:GetWidth(), self.ProgressBG:GetWidth())
|
Nenue@81
|
389
|
Nenue@82
|
390 if progressChange then
|
Nenue@87
|
391 self:AnimateProgress(progressChange)
|
Nenue@81
|
392 end
|
Nenue@81
|
393
|
Nenue@82
|
394
|
Nenue@82
|
395 if self.progressPercent > 0 then
|
Nenue@82
|
396 self.ProgressBar:Show()
|
Nenue@82
|
397 self.ProgressBar:SetPoint('TOPRIGHT', self.ProgressBG, 'TOPLEFT', self:GetWidth()* self.progressPercent , 0)
|
Nenue@84
|
398 self.Label:SetText(self.progressText)
|
Nenue@82
|
399
|
Nenue@84
|
400 self.progressLeft = self.progressMax - self.progressAmount
|
Nenue@84
|
401 if self.progressOverflow >= self.progressLeft then
|
Nenue@84
|
402
|
Nenue@88
|
403 self.OverflowBar:SetPoint('TOPRIGHT', self.ProgressBG, 'TOPRIGHT', 0, 0)
|
Nenue@88
|
404 else
|
Nenue@84
|
405 self.OverflowBar:SetPoint('TOPRIGHT', self.ProgressBar, 'TOPRIGHT', (self.progressOverflow / self.progressMax) * self:GetWidth(), 0)
|
Nenue@84
|
406 end
|
Nenue@84
|
407
|
Nenue@82
|
408 else
|
Nenue@82
|
409 self.ProgressBar:Hide()
|
Nenue@82
|
410 end
|
Nenue@81
|
411 else
|
Nenue@85
|
412 self:HidePanel()
|
Nenue@81
|
413 end
|
Nenue@81
|
414
|
Nenue@82
|
415 self.modeChanged = nil
|
Nenue@84
|
416 end
|
Nenue@84
|
417
|
Nenue@84
|
418 function VeneerWorldStateProgressMixin:OnMouseDown(button)
|
Nenue@84
|
419 if button == 'RightButton' then
|
Nenue@84
|
420 if self.keepOpen then
|
Nenue@84
|
421 self.keepOpen = nil
|
Nenue@87
|
422 self.timeLived = 1000
|
Nenue@84
|
423 else
|
Nenue@84
|
424 self.keepOpen = true
|
Nenue@84
|
425 end
|
Nenue@84
|
426 print('keepOpen =', self.keepOpen)
|
Nenue@84
|
427 else
|
Nenue@84
|
428 if self.mode == 'xp' then
|
Nenue@84
|
429 self.mode = 'artifact'
|
Nenue@84
|
430 else
|
Nenue@85
|
431 if not self.canGainXP then
|
Nenue@85
|
432 return
|
Nenue@85
|
433 end
|
Nenue@84
|
434 self.mode = 'xp'
|
Nenue@84
|
435 end
|
Nenue@84
|
436 self:AnimateMode()
|
Nenue@84
|
437 end
|
Nenue@84
|
438
|
Nenue@84
|
439 end
|
Nenue@84
|
440
|
Nenue@84
|
441 function VeneerWorldStateProgressMixin:AnimateMode()
|
Nenue@84
|
442
|
Nenue@84
|
443 self.TransitionFadeIn:Stop()
|
Nenue@84
|
444 print('|cFF88FF00'..self:GetName()..'.TransitionFadeOut:Play()')
|
Nenue@84
|
445 self.modeChanged = true
|
Nenue@84
|
446 self.TransitionFadeOut:Play()
|
Nenue@87
|
447 end
|
Nenue@87
|
448
|
Nenue@87
|
449 do
|
Nenue@87
|
450 function WorldStateBlockMixin:ShowPanel()
|
Nenue@87
|
451 print('|cFF0088FF'..self:GetName()..':ShowPanel()')
|
Nenue@87
|
452 self:SetShown(true)
|
Nenue@87
|
453 VeneerWorldState:Show()
|
Nenue@87
|
454 end
|
Nenue@87
|
455 function WorldStateBlockMixin:HidePanel()
|
Nenue@87
|
456 print('|cFF0088FF'..self:GetName()..':HidePanel()')
|
Nenue@87
|
457 self:SetShown(false)
|
Nenue@87
|
458 VeneerWorldState:Reanchor()
|
Nenue@87
|
459 end
|
Nenue@87
|
460
|
Nenue@87
|
461 function WorldStateBlockMixin:OnSizeChanged ()
|
Nenue@87
|
462 local h = self:GetHeight()
|
Nenue@87
|
463 if h > VeneerWorldState.maxHeight then
|
Nenue@87
|
464 VeneerWorldState.maxHeight = h
|
Nenue@87
|
465 VeneerWorldState:SetHeight(h)
|
Nenue@87
|
466 print('updating max height:', h)
|
Nenue@87
|
467 elseif h < VeneerWorldState.maxHeight then
|
Nenue@87
|
468 VeneerWorldState:Reanchor()
|
Nenue@87
|
469 end
|
Nenue@87
|
470 end
|
Nenue@87
|
471 function WorldStateBlockMixin:OnHide ()
|
Nenue@87
|
472 print('|cFF0088FF'..self:GetName()..':OnHide()')
|
Nenue@87
|
473 VeneerWorldState:Reanchor()
|
Nenue@87
|
474 end
|
Nenue@87
|
475 function WorldStateBlockMixin:OnShow ()
|
Nenue@87
|
476 self.timeLived = 0
|
Nenue@87
|
477 print('|cFF0088FF'..self:GetName()..':OnShow()')
|
Nenue@87
|
478 VeneerWorldState:Reanchor()
|
Nenue@87
|
479 end
|
Nenue@87
|
480 function WorldStateBlockMixin:Setup()
|
Nenue@87
|
481 print('|cFF0088FF'..self:GetName()..':Setup()|r -- nop')
|
Nenue@88
|
482 self:Update()
|
Nenue@87
|
483 end
|
Nenue@87
|
484 function WorldStateBlockMixin:Reset()
|
Nenue@87
|
485 print('|cFF0088FF'..self:GetName()..':Reset()')
|
Nenue@87
|
486 self.keepOpen = true
|
Nenue@87
|
487 self:Setup()
|
Nenue@87
|
488 end
|
Nenue@80
|
489 end |