Nick@108
|
1
|
Nick@108
|
2 local print = DEVIAN_WORKSPACE and function(...) print('VnRoster', ...) end or nop
|
Nick@108
|
3
|
Nenue@102
|
4 VeneerRosterKunMixin = {
|
Nenue@121
|
5 anchorFrame = 'LFGListFrame',
|
Nenue@121
|
6 anchorPoint = 'TOPLEFT',
|
Nenue@102
|
7
|
Nenue@121
|
8 AchievementsDirty = true,
|
Nenue@121
|
9 GuildInfoDirty = true,
|
Nenue@121
|
10 blocks = {},
|
Nenue@102
|
11 }
|
Nenue@102
|
12
|
Nenue@102
|
13
|
Nenue@102
|
14 local module = VeneerRosterKunMixin
|
Nenue@102
|
15
|
Nenue@102
|
16 function module:OnLoad()
|
Nenue@102
|
17 Veneer:AddHandler(self, self.anchorPoint)
|
Nenue@121
|
18 --self:RegisterEvent('GUILD_ROSTER_UPDATE')
|
Nenue@121
|
19 --self:RegisterEvent('GUILD_TRADESKILL_UPDATE')
|
Nick@108
|
20
|
Nenue@133
|
21 --self:RegisterEvent('LFG_LIST_SEARCH_RESULT_UPDATED')
|
Nenue@121
|
22 --self:RegisterEvent('LFG_LIST_SEARCH_RESULTS_RECEIVED')
|
Nenue@121
|
23 --self:RegisterEvent('LFG_LIST_AVAILABILITY_UPDATE')
|
Nenue@121
|
24 --self:RegisterEvent('LFG_LIST_LOCK_INFO_RECEIVED')
|
Nenue@121
|
25 self:RegisterEvent('ADDON_LOADED')
|
Nenue@121
|
26
|
Nenue@121
|
27 hooksecurefunc("LFGListSearchPanel_SelectResult", function(obj)
|
Nenue@121
|
28 print('LFGListSearchPanel_SelectResult')
|
Nenue@121
|
29 self.selectedID = obj.selectedResult
|
Nenue@121
|
30 print('selected =', self.selectedID)
|
Nenue@121
|
31 self:UpdateAchievementLinks()
|
Nenue@121
|
32 end)
|
Nenue@121
|
33 hooksecurefunc("LFGListSearchPanel_SignUp", function(obj)
|
Nenue@121
|
34 print('LFGListSearchPanel_SignUp', obj.selectedResult)
|
Nenue@121
|
35
|
Nenue@121
|
36
|
Nenue@121
|
37 self.selectedID = obj.selectedResult
|
Nenue@121
|
38 print('selected =', self.selectedID)
|
Nenue@121
|
39 self:UpdateAchievementLinks()
|
Nenue@121
|
40 end)
|
Nenue@102
|
41 end
|
Nenue@102
|
42
|
Nick@108
|
43 function module:Setup()
|
Nick@108
|
44 VeneerHandlerMixin.Setup(self)
|
Nenue@121
|
45 self:SetParent(LFGListFrame)
|
Nenue@121
|
46 self:SetPoint('TOPLEFT', LFGListFrame,'TOPRIGHT')
|
Nick@108
|
47 self:SetShown(true)
|
Nick@108
|
48 end
|
Nenue@102
|
49
|
Nick@108
|
50 function module:SetDirty()
|
Nick@108
|
51 if self:IsVisible() then
|
Nick@108
|
52 self:Update()
|
Nick@108
|
53 else
|
Nick@108
|
54 self.GuildInfoDirty = true
|
Nenue@121
|
55 self.AchievementsDirty = true
|
Nick@108
|
56 end
|
Nick@108
|
57 end
|
Nenue@121
|
58 local firstLoad = true
|
Nick@108
|
59 function module:OnShow()
|
Nick@108
|
60 print('|cFF00FFFFOnShow()|r')
|
Nenue@121
|
61 self:Update(firstLoad)
|
Nenue@121
|
62 firstLoad = nil
|
Nick@108
|
63 end
|
Nick@108
|
64
|
Nick@108
|
65 function module:UpdateGuildInfo()
|
Nick@108
|
66 local numMembers = GetNumGuildMembers()
|
Nick@108
|
67 print(numMembers)
|
Nick@108
|
68 for i = 1, numMembers do
|
Nenue@121
|
69 --print(GetGuildRosterInfo(i))
|
Nenue@121
|
70 end
|
Nenue@121
|
71 self.GuildInfoDirty = nil
|
Nenue@121
|
72 end
|
Nenue@121
|
73
|
Nenue@121
|
74 -- cheevos to link
|
Nenue@131
|
75 local overlaps = {
|
Nenue@131
|
76 [11781] = 11875,
|
Nenue@133
|
77 [12002] = 12111,
|
Nenue@131
|
78 }
|
Nenue@121
|
79 local cheevos = {
|
Nenue@133
|
80 -- Mythic Prog
|
Nenue@121
|
81 {
|
Nenue@133
|
82 -- Antorus
|
Nenue@133
|
83 12002, -- argus
|
Nenue@133
|
84 12001, -- aggramar
|
Nenue@133
|
85 12000, -- coven
|
Nenue@133
|
86 11999, -- barry
|
Nenue@133
|
87 11998, -- kin'garoth
|
Nenue@133
|
88 11997, -- imonar
|
Nenue@133
|
89 11996, -- eonar
|
Nenue@133
|
90 11995, -- portal keeper
|
Nenue@133
|
91 11994, -- high command
|
Nenue@133
|
92 11993, -- doggos
|
Nenue@133
|
93 11992, -- worldbreaker
|
Nenue@133
|
94
|
Nenue@133
|
95 -- Tomb of Sargeras
|
Nenue@121
|
96 11781, -- kj
|
Nenue@121
|
97 11780, -- avatar
|
Nenue@121
|
98 11779, -- maiden
|
Nenue@121
|
99 11776, -- mistress
|
Nenue@122
|
100 11778, -- host,
|
Nenue@121
|
101 11777, -- sisters
|
Nenue@121
|
102 11775, -- harjatan,
|
Nenue@121
|
103 11774, -- di,
|
Nenue@121
|
104 11773, -- goroth
|
Nenue@121
|
105 },
|
Nenue@133
|
106 -- Completion
|
Nenue@121
|
107 {
|
Nenue@133
|
108 12111, -- CE Argus,
|
Nenue@133
|
109 12110, -- AotC Argus,
|
Nenue@121
|
110 11875, -- CE KJ
|
Nenue@121
|
111 11874, -- AotC KJ
|
Nenue@121
|
112 11790 -- Deceiver's Fall,
|
Nenue@121
|
113
|
Nenue@121
|
114
|
Nenue@121
|
115 },
|
Nenue@121
|
116 -- Mythic+
|
Nenue@121
|
117 {
|
Nenue@121
|
118 11162, -- master
|
Nenue@121
|
119 11185, -- conqueror
|
Nenue@121
|
120 }
|
Nenue@121
|
121 }
|
Nenue@121
|
122
|
Nenue@133
|
123 local invasion = {}
|
Nenue@121
|
124 local cheev = {}
|
Nenue@121
|
125
|
Nenue@121
|
126 function cheev:OnClick()
|
Nenue@121
|
127 local resultID = LFGListFrame.SearchPanel.selectedResult or self:GetParent().selectedID
|
Nenue@121
|
128 print('current selection = ', resultID)
|
Nenue@121
|
129 if ACTIVE_CHAT_EDIT_BOX then
|
Nenue@121
|
130 ChatEdit_InsertLink(self.link)
|
Nenue@121
|
131 elseif resultID then
|
Nenue@121
|
132 local id, activityID, name, comment, voiceChat, iLvl, honorLevel, age, numBNetFriends, numCharFriends, numGuildMates, isDelisted, leaderName = C_LFGList.GetSearchResultInfo(resultID);
|
Nenue@121
|
133 --print(name, comment, leaderName)
|
Nenue@121
|
134 ChatFrame_OpenChat("/w "..leaderName.." "..self.link, DEFAULT_CHAT_FRAME)
|
Nick@108
|
135 end
|
Nick@108
|
136 end
|
Nick@108
|
137
|
Nenue@133
|
138 function invasion:OnClick()
|
Nenue@133
|
139
|
Nenue@133
|
140 end
|
Nenue@133
|
141
|
Nenue@133
|
142 function module:UpdateInvasionButtons()
|
Nenue@133
|
143
|
Nenue@133
|
144 end
|
Nenue@133
|
145
|
Nenue@133
|
146 local listed = {}
|
Nick@108
|
147
|
Nenue@121
|
148 function module:UpdateAchievementLinks()
|
Nenue@121
|
149 print('UpdateAchievementLinks()')
|
Nenue@121
|
150
|
Nenue@121
|
151 local resultID = LFGListFrame.SearchPanel.selectedResult or self.selectedID
|
Nenue@121
|
152 self:Show()
|
Nenue@121
|
153
|
Nenue@121
|
154
|
Nenue@121
|
155 local index = 0
|
Nenue@121
|
156 local lastBlock
|
Nenue@121
|
157 local contentsHeight = 0
|
Nenue@121
|
158 for _, group in ipairs(cheevos) do
|
Nenue@121
|
159 for _, id in ipairs(group) do
|
Nenue@121
|
160 local _, name, points, completed, month, day, year, description, flags, icon = GetAchievementInfo(id)
|
Nenue@121
|
161 if completed then
|
Nenue@133
|
162
|
Nenue@133
|
163 -- if the highest mythic kill
|
Nenue@133
|
164 if listed[overlaps[id]] then
|
Nenue@133
|
165 break
|
Nenue@133
|
166 end
|
Nenue@133
|
167
|
Nenue@133
|
168
|
Nenue@121
|
169 index = index + 1
|
Nenue@121
|
170 --print(index)
|
Nenue@121
|
171 local block =self.blocks[index]
|
Nenue@121
|
172 if not block then
|
Nenue@121
|
173 block = CreateFrame('Button', 'VeneerRosterKunBlock'..index, self, 'VeneerRosterKunBlock')
|
Nenue@121
|
174 block:SetScript('OnClick', cheev.OnClick)
|
Nenue@121
|
175 block:SetID(index)
|
Nenue@121
|
176 self.blocks[index] = block
|
Nenue@121
|
177 end
|
Nenue@121
|
178
|
Nenue@121
|
179 block.link = GetAchievementLink(id)
|
Nenue@121
|
180 block.Icon:SetTexture(icon)
|
Nenue@121
|
181 block.Label:SetText(name)
|
Nenue@121
|
182 block:ClearAllPoints()
|
Nenue@121
|
183 if lastBlock then
|
Nenue@121
|
184 block:SetPoint('TOPLEFT', lastBlock, 'BOTTOMLEFT', 0, 0)
|
Nenue@121
|
185 else
|
Nenue@121
|
186 block:SetPoint('TOPLEFT')
|
Nenue@121
|
187 end
|
Nenue@121
|
188 --print(block:GetHeight(), block:GetPoint(1))
|
Nenue@121
|
189 block:Show()
|
Nenue@121
|
190
|
Nenue@121
|
191 contentsHeight = contentsHeight + block:GetHeight()
|
Nenue@121
|
192
|
Nenue@121
|
193 --print(index, name, icon)
|
Nenue@121
|
194 lastBlock = block
|
Nenue@133
|
195 listed[id] = true
|
Nenue@121
|
196 break;
|
Nenue@121
|
197 end
|
Nenue@121
|
198 end
|
Nenue@121
|
199 end
|
Nenue@121
|
200
|
Nenue@133
|
201 --[[
|
Nenue@133
|
202 local areaPOIs = C_WorldMap.GetAreaPOIForMap(GetCurrentMapAreaID(), 1);
|
Nenue@133
|
203 if areaPOIs then
|
Nenue@133
|
204
|
Nenue@133
|
205
|
Nenue@133
|
206 for i, areaPoiID in ipairs(areaPOIs) do
|
Nenue@133
|
207 local poiInfo = C_WorldMap.GetAreaPOIInfo(GetCurrentMapAreaID(), areaPoiID, 1);
|
Nenue@133
|
208
|
Nenue@133
|
209 index = index + 1
|
Nenue@133
|
210 --print(index)
|
Nenue@133
|
211 local block =self.blocks[index]
|
Nenue@133
|
212 if not block then
|
Nenue@133
|
213 block = CreateFrame('Button', 'VeneerRosterKunBlock'..index, self, 'VeneerRosterKunBlock')
|
Nenue@133
|
214 block:SetScript('OnClick', invasion.OnClick)
|
Nenue@133
|
215 block:SetID(index)
|
Nenue@133
|
216 self.blocks[index] = block
|
Nenue@133
|
217 end
|
Nenue@133
|
218
|
Nenue@133
|
219
|
Nenue@133
|
220
|
Nenue@133
|
221 end
|
Nenue@133
|
222 end
|
Nenue@133
|
223 --]]
|
Nenue@133
|
224
|
Nenue@121
|
225 --print(index, #self.blocks)
|
Nenue@121
|
226 if index < #self.blocks then
|
Nenue@121
|
227 for i = index+1, #self.blocks do
|
Nenue@121
|
228 --print('hiding', i)
|
Nenue@121
|
229 self.blocks[i]:Hide()
|
Nenue@121
|
230 end
|
Nenue@121
|
231
|
Nenue@121
|
232 end
|
Nenue@121
|
233
|
Nenue@121
|
234 self:SetHeight(contentsHeight)
|
Nenue@121
|
235
|
Nenue@121
|
236 end
|
Nenue@121
|
237
|
Nenue@121
|
238 function module:Update(forced)
|
Nenue@121
|
239
|
Nenue@121
|
240
|
Nenue@121
|
241 if self.GuildInfoDirty or forced then
|
Nenue@121
|
242 self:UpdateGuildInfo()
|
Nenue@121
|
243 end
|
Nenue@121
|
244 if self.AchievementsDirty or forced then
|
Nenue@121
|
245 self:UpdateAchievementLinks()
|
Nenue@121
|
246 end
|
Nenue@121
|
247
|
Nenue@133
|
248
|
Nenue@121
|
249 end
|
Nenue@121
|
250 function module:SetupGuildUI()
|
Nenue@121
|
251 self:UnregisterEvent('ADDON_LOADED')
|
Nenue@121
|
252 end
|
Nick@108
|
253 function module:OnEvent(event, ...)
|
Nick@108
|
254 print('|cFFFF0088OnEvent()|r', event, ...)
|
Nenue@121
|
255 if event == 'ADDON_LOADED' then
|
Nenue@121
|
256 local addon = ...
|
Nenue@121
|
257 if addon == 'Blizzard_GuildUI' then
|
Nenue@121
|
258 self:SetupGuildUI()
|
Nenue@121
|
259 end
|
Nenue@121
|
260 elseif event == 'LFG_LIST_SEARCH_RESULTS_RECEIVED' then
|
Nick@108
|
261 elseif event == 'LFG_LIST_SEARCH_RESULT_UPDATED' then
|
Nick@108
|
262 end
|
Nenue@121
|
263 end
|
Nenue@133
|
264
|
Nenue@133
|
265
|
Nenue@133
|
266 VeneerPetBattleActionMixin = {}
|
Nenue@133
|
267 VeneerPetBattleInfoMixin = {}
|
Nenue@133
|
268 local pb = VeneerPetBattleInfoMixin
|
Nenue@133
|
269 local action = VeneerPetBattleActionMixin
|
Nenue@133
|
270
|
Nenue@133
|
271
|
Nenue@133
|
272 function pb:OnShow()
|
Nenue@133
|
273 self:ClearAllPoints()
|
Nenue@133
|
274 self:SetPoint('TOPLEFT', PetBattleFrame.EnemyBuffFrame, 'BOTTOMLEFT', 0, -12)
|
Nenue@133
|
275 self:RegisterEvent('PET_BATTLE_PET_ROUND_PLAYBACK_COMPLETE')
|
Nenue@133
|
276 self:RegisterEvent('PET_BATTLE_ACTION_SELECTED')
|
Nenue@133
|
277 self:RegisterEvent('PET_BATTLE_TURN_STARTED')
|
Nenue@133
|
278 print('pet on show')
|
Nenue@133
|
279 self:Refresh()
|
Nenue@133
|
280 end
|
Nenue@133
|
281
|
Nenue@133
|
282 function pb:OnHide()
|
Nenue@133
|
283 print('pet on hide')
|
Nenue@133
|
284 self:UnregisterAllEvents()
|
Nenue@133
|
285 end
|
Nenue@133
|
286
|
Nenue@133
|
287 function pb:OnEvent(event)
|
Nenue@133
|
288 print('pb event|cFFFF8800', event)
|
Nenue@133
|
289 self:Refresh()
|
Nenue@133
|
290 end
|
Nenue@133
|
291
|
Nenue@133
|
292 function pb:Refresh()
|
Nenue@133
|
293 local myPetSlot = C_PetBattles.GetActivePet(1)
|
Nenue@133
|
294 local myPetType = C_PetBattles.GetPetType(1, myPetSlot)
|
Nenue@133
|
295
|
Nenue@133
|
296 local index = 0
|
Nenue@133
|
297 local nonActiveIndex = 0
|
Nenue@133
|
298 local lastFrame, lastNonActive
|
Nenue@133
|
299 for petSlot = 1, C_PetBattles.GetNumPets(2) do
|
Nenue@133
|
300
|
Nenue@133
|
301 for abilitySlot = 1,3 do
|
Nenue@133
|
302 local _, name, texture, cooldown, tooltip,_, abilityType, noStrongWeakHints = C_PetBattles.GetAbilityInfo(2, petSlot, abilitySlot)
|
Nenue@133
|
303 local petHealth = C_PetBattles.GetHealth(2, petSlot)
|
Nenue@133
|
304
|
Nenue@133
|
305 if petHealth >= 1 then
|
Nenue@133
|
306 local isUsable, currentCooldown, currentLockdown = C_PetBattles.GetAbilityState(2, petSlot, abilitySlot);
|
Nenue@133
|
307 --print(index, petSlot, abilitySlot, name, currentCooldown, currentLockdown, cooldown, petHealth)
|
Nenue@133
|
308
|
Nenue@133
|
309 index = index + 1
|
Nenue@133
|
310 local frame = self.Abilities[index]
|
Nenue@133
|
311
|
Nenue@133
|
312 frame.ownerID = 2
|
Nenue@133
|
313 frame.petIndex = petSlot
|
Nenue@133
|
314 frame.abIndex = abilitySlot
|
Nenue@133
|
315 frame.tooltip = tooltip
|
Nenue@133
|
316 frame.Name:SetText(name)
|
Nenue@133
|
317 frame.Icon:SetTexture(texture)
|
Nenue@133
|
318 frame.TypeIcon:SetTexture("Interface\\PetBattles\\PetIcon-"..PET_TYPE_SUFFIX[abilityType])
|
Nenue@133
|
319
|
Nenue@133
|
320
|
Nenue@133
|
321 for i = 1,C_PetBattles.GetNumPets(1) do
|
Nenue@133
|
322 local myPetType = C_PetBattles.GetPetType(1, i)
|
Nenue@133
|
323 if not (myPetType or abilityType) then
|
Nenue@133
|
324 frame.BetterIcon[i]:Hide();
|
Nenue@133
|
325 else
|
Nenue@133
|
326 local modifier = C_PetBattles.GetAttackModifier(abilityType, myPetType)
|
Nenue@133
|
327 if ( noStrongWeakHints or modifier == 1 ) then
|
Nenue@133
|
328 frame.BetterIcon[i]:Hide();
|
Nenue@133
|
329 elseif (modifier > 1) then
|
Nenue@133
|
330 frame.BetterIcon[i]:SetTexture("Interface\\PetBattles\\BattleBar-AbilityBadge-Strong");
|
Nenue@133
|
331 frame.BetterIcon[i]:Show();
|
Nenue@133
|
332 elseif (modifier < 1) then
|
Nenue@133
|
333 frame.BetterIcon[i]:SetTexture("Interface\\PetBattles\\BattleBar-AbilityBadge-Weak");
|
Nenue@133
|
334 frame.BetterIcon[i]:Show();
|
Nenue@133
|
335 end
|
Nenue@133
|
336
|
Nenue@133
|
337 end
|
Nenue@133
|
338 end
|
Nenue@133
|
339
|
Nenue@133
|
340
|
Nenue@133
|
341 if cooldown >= 1 then
|
Nenue@133
|
342 frame.Border2:Show()
|
Nenue@133
|
343 else
|
Nenue@133
|
344
|
Nenue@133
|
345 frame.Border2:Hide()
|
Nenue@133
|
346 end
|
Nenue@133
|
347
|
Nenue@133
|
348
|
Nenue@133
|
349 currentCooldown = (currentCooldown >= 1) and currentCooldown or 0
|
Nenue@133
|
350 if petHealth == 0 then
|
Nenue@133
|
351 frame.Cooldown:SetText(nil)
|
Nenue@133
|
352 frame.Cooldown:SetTextColor(1,0,0)
|
Nenue@133
|
353 else
|
Nenue@133
|
354 if currentLockdown >= 1 and currentLockdown > currentCooldown then
|
Nenue@133
|
355 frame.Cooldown:SetTextColor(1,0,0)
|
Nenue@133
|
356 else
|
Nenue@133
|
357 frame.Cooldown:SetTextColor(1,1,1)
|
Nenue@133
|
358 end
|
Nenue@133
|
359 frame.Cooldown:SetText((currentCooldown >= 1) and currentCooldown or nil)
|
Nenue@133
|
360 end
|
Nenue@133
|
361
|
Nenue@133
|
362 frame:ClearAllPoints()
|
Nenue@133
|
363 if petSlot == C_PetBattles.GetActivePet(2) then
|
Nenue@133
|
364 frame:SetSize(48,48)
|
Nenue@133
|
365 frame.Border2:SetSize(72,72)
|
Nenue@133
|
366 frame.Icon:SetDesaturated(false)
|
Nenue@133
|
367 frame.Name:SetTextColor(1,1,0)
|
Nenue@133
|
368 if lastFrame then
|
Nenue@133
|
369 frame:SetPoint('TOPLEFT', lastFrame, 'BOTTOMLEFT', 0, -4)
|
Nenue@133
|
370 else
|
Nenue@133
|
371 frame:SetPoint('TOPLEFT', self, 'TOPLEFT')
|
Nenue@133
|
372 end
|
Nenue@133
|
373 lastFrame = frame
|
Nenue@133
|
374 else
|
Nenue@133
|
375 frame:SetSize(24,24)
|
Nenue@133
|
376 frame.Border2:SetSize(36,36)
|
Nenue@133
|
377 frame.Name:SetTextColor(0.5,0.5,0.5)
|
Nenue@133
|
378 frame.Icon:SetDesaturated(true)
|
Nenue@133
|
379 if lastNonActive then
|
Nenue@133
|
380 frame:SetPoint('TOPLEFT', lastNonActive, 'BOTTOMLEFT', 0, -2)
|
Nenue@133
|
381 else
|
Nenue@133
|
382 frame:SetPoint('TOPLEFT', self, 'TOPLEFT', 128, 0)
|
Nenue@133
|
383 end
|
Nenue@133
|
384 lastNonActive = frame
|
Nenue@133
|
385 end
|
Nenue@133
|
386 frame:Show()
|
Nenue@133
|
387 end
|
Nenue@133
|
388 end
|
Nenue@133
|
389 end
|
Nenue@133
|
390
|
Nenue@133
|
391 for i = index + 1, #self.Abilities do
|
Nenue@133
|
392 self.Abilities[i]:Hide()
|
Nenue@133
|
393 end
|
Nenue@133
|
394 end
|
Nenue@133
|
395
|
Nenue@133
|
396 function action:OnEnter()
|
Nenue@133
|
397 PetBattleAbilityTooltip_SetAbility(self.ownerID, self.petIndex, self.abIndex);
|
Nenue@133
|
398 PetBattleAbilityTooltip_Show("TOPRIGHT", self:GetParent(), "TOPLEFT", -5, 0, self.additionalText);
|
Nenue@133
|
399 end
|
Nenue@133
|
400
|
Nenue@133
|
401 function action:OnLeave()
|
Nenue@133
|
402 PetBattlePrimaryAbilityTooltip:Hide();
|
Nenue@133
|
403 end |