Mercurial > wow > buffalo2
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Modules/LFGFrame.lua Thu Jan 25 20:58:10 2018 -0500 @@ -0,0 +1,282 @@ + +local print = DEVIAN_WORKSPACE and function(...) print('LFGFrame', ...) end or nop + +VeneerRosterKunMixin = { + anchorFrame = 'LFGListFrame', + anchorPoint = 'TOPLEFT', + + InvasionsDirty = true, + AchievementsDirty = true, + GuildInfoDirty = true, + blocks = {}, +} + + +local module = VeneerRosterKunMixin + +function module:OnLoad() + Veneer:AddHandler(self, self.anchorPoint) + self:RegisterEvent('ADDON_LOADED') + + hooksecurefunc("LFGListCategorySelection_StartFindGroup", function(panel, questID) + print('LFGListCategorySelection_StartFindGroup', panel:GetParent(), questID) + end) + hooksecurefunc("LFGListCategorySelection_SelectCategory", function(panel, categoryID, filters) + print('LFGListCategorySelection_SelectCategory', panel:GetParent(), categoryID, filters) + print('\n',debugstack(3)) + end) + hooksecurefunc("LFGListSearchPanel_SetCategory", function(panel, categoryID, filters, baseFilters) + print('LFGListSearchPanel_SetCategory', panel:GetParent(), categoryID, filters, baseFilters) + end) +end + +function module:Setup() + VeneerHandlerMixin.Setup(self) + self:SetParent(LFGListFrame) + self:SetPoint('TOPLEFT', LFGListFrame,'TOPRIGHT') + self:SetShown(true) +end + +function module:SetDirty() + if self:IsVisible() then + self:Update() + else + self.GuildInfoDirty = true + self.AchievementsDirty = true + self.InvasionsDirty = true + end +end +local firstLoad = true +function module:OnShow() + print('|cFF00FFFFOnShow()|r') + self:Update(firstLoad) + firstLoad = nil + + local locationName = GetRealZoneText() + + if not C_LFGList.GetActiveEntryInfo() and locationName and locationName:match('Invasion') and not InCombatLockdown() then + PVEFrame_ShowFrame("GroupFinderFrame", LFGListPVEStub); + local panel = LFGListFrame.CategorySelection + LFGListCategorySelection_SelectCategory(panel, 6, 0); + LFGListCategorySelection_StartFindGroup(panel, locationName); + end +end + +function module:UpdateGuildInfo() + local numMembers = GetNumGuildMembers() + print(numMembers) + for i = 1, numMembers do + --print(GetGuildRosterInfo(i)) + end + self.GuildInfoDirty = nil +end + +-- cheevos to link +local overlaps = { + [11781] = 11875, + [12002] = 12111, +} +local cheevos = { + -- Mythic Prog + { + -- Antorus + 12002, -- argus + 12001, -- aggramar + 12000, -- coven + 11999, -- barry + 11998, -- kin'garoth + 11997, -- imonar + 11996, -- eonar + 11995, -- portal keeper + 11994, -- high command + 11993, -- doggos + 11992, -- worldbreaker + + -- Tomb of Sargeras + 11781, -- kj + 11780, -- avatar + 11779, -- maiden + 11776, -- mistress + 11778, -- host, + 11777, -- sisters + 11775, -- harjatan, + 11774, -- di, + 11773, -- goroth + }, + -- Completion + { + 12111, -- CE Argus, + 12110, -- AotC Argus, + 11875, -- CE KJ + 11874, -- AotC KJ + 11790 -- Deceiver's Fall, + + + }, + -- Mythic+ + { + 11162, -- master + 11185, -- conqueror + } +} + +local invasion = {} +local cheev = {} + +function cheev:OnClick() + local resultID = LFGListFrame.SearchPanel.selectedResult or self:GetParent().selectedID + print('current selection = ', resultID) + if ACTIVE_CHAT_EDIT_BOX then + ChatEdit_InsertLink(self.link) + elseif resultID then + local id, activityID, name, comment, voiceChat, iLvl, honorLevel, age, numBNetFriends, numCharFriends, numGuildMates, isDelisted, leaderName = C_LFGList.GetSearchResultInfo(resultID); + --print(name, comment, leaderName) + ChatFrame_OpenChat("/w "..leaderName.." "..self.link, DEFAULT_CHAT_FRAME) + end +end + +function invasion:OnClick() + if not InCombatLockdown() then + PVEFrame_ShowFrame("GroupFinderFrame", LFGListPVEStub); + local panel = LFGListFrame.CategorySelection + LFGListCategorySelection_SelectCategory(panel, 6, 0); + LFGListCategorySelection_StartFindGroup(panel, self.searchText); + end + +end + +local listed = {} + + +function module:Update(forced) + if self.GuildInfoDirty or forced then + self:UpdateGuildInfo() + end + local numBlocks = 0 + if self.AchievementsDirty or forced then + numBlocks = self:UpdateAchievementLinks(numBlocks) + end + + if self.InvasionsDirty or forced then + numBlocks = self:UpdateInvasionButtons(numBlocks) + end + + local lastBlock + local contentsHeight = 0 + for index, block in ipairs(self.blocks) do + if index > numBlocks then + block:Hide() + else + block:ClearAllPoints() + if lastBlock then + block:SetPoint('TOPLEFT', lastBlock, 'BOTTOMLEFT', 0, -2) + else + block:SetPoint('TOPLEFT', LFGListFrame, 'TOPRIGHT', 0, 0) + end + block:Show() + lastBlock = block + + contentsHeight = contentsHeight + block:GetHeight() + end + end + self:SetHeight(contentsHeight) +end + + +function module:GetBlock(index) + + local block =self.blocks[index] + if not block then + block = CreateFrame('Button', 'VeneerRosterKunBlock'..index, self, 'VeneerRosterKunBlock') + + block:SetID(index) + self.blocks[index] = block + end + return block +end + +function module:UpdateInvasionButtons(offset) + print('UpdateInvasionButtons()') + offset = offset or 0 + local lastBlock = self.lastAchievement + + local contentsHeight = 0 + local areaPOIs = C_WorldMap.GetAreaPOIForMap(GetCurrentMapAreaID(), 1); + if areaPOIs then + + + for i, areaPoiID in ipairs(areaPOIs) do + local poiInfo = C_WorldMap.GetAreaPOIInfo(GetCurrentMapAreaID(), areaPoiID, 1); + + offset = offset + 1 + --print(index) + local block = self:GetBlock(offset) + block:SetScript('OnClick', invasion.OnClick) + block.Label:SetText(poiInfo.description) + block.Icon:SetAtlas(poiInfo.atlasName) + block.searchText = poiInfo.description + block.buttonType = 'group-poi' + end + end + return offset, contentsHeight +end + +function module:UpdateAchievementLinks(offset) + print('UpdateAchievementLinks()') + offset = offset or 0 + local resultID = LFGListFrame.SearchPanel.selectedResult or self.selectedID + self:Show() + + + local contentsHeight = 0 + for _, group in ipairs(cheevos) do + for _, id in ipairs(group) do + local _, name, points, completed, month, day, year, description, flags, icon = GetAchievementInfo(id) + if completed then + -- if the highest mythic kill + if listed[overlaps[id]] then + break + end + offset = offset + 1 + local block = self:GetBlock(offset) + block:SetScript('OnClick', cheev.OnClick) + --print(index) + + block.link = GetAchievementLink(id) + block.Icon:SetTexture(icon) + block.Label:SetText(name) + block.buttonType = 'cheevo' + + contentsHeight = contentsHeight + block:GetHeight() + + --print(index, name, icon) + listed[id] = true + break; + end + end + end + + self.lastAchievement = lastBlock + + return offset, contentsHeight + + --[[ + --]] + + +end + +function module:SetupGuildUI() + self:UnregisterEvent('ADDON_LOADED') +end +function module:OnEvent(event, ...) + print('|cFFFF0088OnEvent()|r', event, ...) + if event == 'ADDON_LOADED' then + local addon = ... + if addon == 'Blizzard_GuildUI' then + self:SetupGuildUI() + end + elseif event == 'LFG_LIST_SEARCH_RESULTS_RECEIVED' then + elseif event == 'LFG_LIST_SEARCH_RESULT_UPDATED' then + end +end \ No newline at end of file