comparison Modules/LFGFrame.lua @ 135:4979b5cca6de

- Fixed lua error from newly obtained artifacts
author Nenue
date Thu, 25 Jan 2018 20:58:10 -0500
parents
children 414e37af1b1b
comparison
equal deleted inserted replaced
134:24dc16a49b15 135:4979b5cca6de
1
2 local print = DEVIAN_WORKSPACE and function(...) print('LFGFrame', ...) end or nop
3
4 VeneerRosterKunMixin = {
5 anchorFrame = 'LFGListFrame',
6 anchorPoint = 'TOPLEFT',
7
8 InvasionsDirty = true,
9 AchievementsDirty = true,
10 GuildInfoDirty = true,
11 blocks = {},
12 }
13
14
15 local module = VeneerRosterKunMixin
16
17 function module:OnLoad()
18 Veneer:AddHandler(self, self.anchorPoint)
19 self:RegisterEvent('ADDON_LOADED')
20
21 hooksecurefunc("LFGListCategorySelection_StartFindGroup", function(panel, questID)
22 print('LFGListCategorySelection_StartFindGroup', panel:GetParent(), questID)
23 end)
24 hooksecurefunc("LFGListCategorySelection_SelectCategory", function(panel, categoryID, filters)
25 print('LFGListCategorySelection_SelectCategory', panel:GetParent(), categoryID, filters)
26 print('\n',debugstack(3))
27 end)
28 hooksecurefunc("LFGListSearchPanel_SetCategory", function(panel, categoryID, filters, baseFilters)
29 print('LFGListSearchPanel_SetCategory', panel:GetParent(), categoryID, filters, baseFilters)
30 end)
31 end
32
33 function module:Setup()
34 VeneerHandlerMixin.Setup(self)
35 self:SetParent(LFGListFrame)
36 self:SetPoint('TOPLEFT', LFGListFrame,'TOPRIGHT')
37 self:SetShown(true)
38 end
39
40 function module:SetDirty()
41 if self:IsVisible() then
42 self:Update()
43 else
44 self.GuildInfoDirty = true
45 self.AchievementsDirty = true
46 self.InvasionsDirty = true
47 end
48 end
49 local firstLoad = true
50 function module:OnShow()
51 print('|cFF00FFFFOnShow()|r')
52 self:Update(firstLoad)
53 firstLoad = nil
54
55 local locationName = GetRealZoneText()
56
57 if not C_LFGList.GetActiveEntryInfo() and locationName and locationName:match('Invasion') and not InCombatLockdown() then
58 PVEFrame_ShowFrame("GroupFinderFrame", LFGListPVEStub);
59 local panel = LFGListFrame.CategorySelection
60 LFGListCategorySelection_SelectCategory(panel, 6, 0);
61 LFGListCategorySelection_StartFindGroup(panel, locationName);
62 end
63 end
64
65 function module:UpdateGuildInfo()
66 local numMembers = GetNumGuildMembers()
67 print(numMembers)
68 for i = 1, numMembers do
69 --print(GetGuildRosterInfo(i))
70 end
71 self.GuildInfoDirty = nil
72 end
73
74 -- cheevos to link
75 local overlaps = {
76 [11781] = 11875,
77 [12002] = 12111,
78 }
79 local cheevos = {
80 -- Mythic Prog
81 {
82 -- Antorus
83 12002, -- argus
84 12001, -- aggramar
85 12000, -- coven
86 11999, -- barry
87 11998, -- kin'garoth
88 11997, -- imonar
89 11996, -- eonar
90 11995, -- portal keeper
91 11994, -- high command
92 11993, -- doggos
93 11992, -- worldbreaker
94
95 -- Tomb of Sargeras
96 11781, -- kj
97 11780, -- avatar
98 11779, -- maiden
99 11776, -- mistress
100 11778, -- host,
101 11777, -- sisters
102 11775, -- harjatan,
103 11774, -- di,
104 11773, -- goroth
105 },
106 -- Completion
107 {
108 12111, -- CE Argus,
109 12110, -- AotC Argus,
110 11875, -- CE KJ
111 11874, -- AotC KJ
112 11790 -- Deceiver's Fall,
113
114
115 },
116 -- Mythic+
117 {
118 11162, -- master
119 11185, -- conqueror
120 }
121 }
122
123 local invasion = {}
124 local cheev = {}
125
126 function cheev:OnClick()
127 local resultID = LFGListFrame.SearchPanel.selectedResult or self:GetParent().selectedID
128 print('current selection = ', resultID)
129 if ACTIVE_CHAT_EDIT_BOX then
130 ChatEdit_InsertLink(self.link)
131 elseif resultID then
132 local id, activityID, name, comment, voiceChat, iLvl, honorLevel, age, numBNetFriends, numCharFriends, numGuildMates, isDelisted, leaderName = C_LFGList.GetSearchResultInfo(resultID);
133 --print(name, comment, leaderName)
134 ChatFrame_OpenChat("/w "..leaderName.." "..self.link, DEFAULT_CHAT_FRAME)
135 end
136 end
137
138 function invasion:OnClick()
139 if not InCombatLockdown() then
140 PVEFrame_ShowFrame("GroupFinderFrame", LFGListPVEStub);
141 local panel = LFGListFrame.CategorySelection
142 LFGListCategorySelection_SelectCategory(panel, 6, 0);
143 LFGListCategorySelection_StartFindGroup(panel, self.searchText);
144 end
145
146 end
147
148 local listed = {}
149
150
151 function module:Update(forced)
152 if self.GuildInfoDirty or forced then
153 self:UpdateGuildInfo()
154 end
155 local numBlocks = 0
156 if self.AchievementsDirty or forced then
157 numBlocks = self:UpdateAchievementLinks(numBlocks)
158 end
159
160 if self.InvasionsDirty or forced then
161 numBlocks = self:UpdateInvasionButtons(numBlocks)
162 end
163
164 local lastBlock
165 local contentsHeight = 0
166 for index, block in ipairs(self.blocks) do
167 if index > numBlocks then
168 block:Hide()
169 else
170 block:ClearAllPoints()
171 if lastBlock then
172 block:SetPoint('TOPLEFT', lastBlock, 'BOTTOMLEFT', 0, -2)
173 else
174 block:SetPoint('TOPLEFT', LFGListFrame, 'TOPRIGHT', 0, 0)
175 end
176 block:Show()
177 lastBlock = block
178
179 contentsHeight = contentsHeight + block:GetHeight()
180 end
181 end
182 self:SetHeight(contentsHeight)
183 end
184
185
186 function module:GetBlock(index)
187
188 local block =self.blocks[index]
189 if not block then
190 block = CreateFrame('Button', 'VeneerRosterKunBlock'..index, self, 'VeneerRosterKunBlock')
191
192 block:SetID(index)
193 self.blocks[index] = block
194 end
195 return block
196 end
197
198 function module:UpdateInvasionButtons(offset)
199 print('UpdateInvasionButtons()')
200 offset = offset or 0
201 local lastBlock = self.lastAchievement
202
203 local contentsHeight = 0
204 local areaPOIs = C_WorldMap.GetAreaPOIForMap(GetCurrentMapAreaID(), 1);
205 if areaPOIs then
206
207
208 for i, areaPoiID in ipairs(areaPOIs) do
209 local poiInfo = C_WorldMap.GetAreaPOIInfo(GetCurrentMapAreaID(), areaPoiID, 1);
210
211 offset = offset + 1
212 --print(index)
213 local block = self:GetBlock(offset)
214 block:SetScript('OnClick', invasion.OnClick)
215 block.Label:SetText(poiInfo.description)
216 block.Icon:SetAtlas(poiInfo.atlasName)
217 block.searchText = poiInfo.description
218 block.buttonType = 'group-poi'
219 end
220 end
221 return offset, contentsHeight
222 end
223
224 function module:UpdateAchievementLinks(offset)
225 print('UpdateAchievementLinks()')
226 offset = offset or 0
227 local resultID = LFGListFrame.SearchPanel.selectedResult or self.selectedID
228 self:Show()
229
230
231 local contentsHeight = 0
232 for _, group in ipairs(cheevos) do
233 for _, id in ipairs(group) do
234 local _, name, points, completed, month, day, year, description, flags, icon = GetAchievementInfo(id)
235 if completed then
236 -- if the highest mythic kill
237 if listed[overlaps[id]] then
238 break
239 end
240 offset = offset + 1
241 local block = self:GetBlock(offset)
242 block:SetScript('OnClick', cheev.OnClick)
243 --print(index)
244
245 block.link = GetAchievementLink(id)
246 block.Icon:SetTexture(icon)
247 block.Label:SetText(name)
248 block.buttonType = 'cheevo'
249
250 contentsHeight = contentsHeight + block:GetHeight()
251
252 --print(index, name, icon)
253 listed[id] = true
254 break;
255 end
256 end
257 end
258
259 self.lastAchievement = lastBlock
260
261 return offset, contentsHeight
262
263 --[[
264 --]]
265
266
267 end
268
269 function module:SetupGuildUI()
270 self:UnregisterEvent('ADDON_LOADED')
271 end
272 function module:OnEvent(event, ...)
273 print('|cFFFF0088OnEvent()|r', event, ...)
274 if event == 'ADDON_LOADED' then
275 local addon = ...
276 if addon == 'Blizzard_GuildUI' then
277 self:SetupGuildUI()
278 end
279 elseif event == 'LFG_LIST_SEARCH_RESULTS_RECEIVED' then
280 elseif event == 'LFG_LIST_SEARCH_RESULT_UPDATED' then
281 end
282 end