Nick@108: Nick@108: local print = DEVIAN_WORKSPACE and function(...) print('VnRoster', ...) end or nop Nick@108: Nenue@102: VeneerRosterKunMixin = { Nenue@121: anchorFrame = 'LFGListFrame', Nenue@121: anchorPoint = 'TOPLEFT', Nenue@102: Nenue@121: AchievementsDirty = true, Nenue@121: GuildInfoDirty = true, Nenue@121: blocks = {}, Nenue@102: } Nenue@102: Nenue@102: Nenue@102: local module = VeneerRosterKunMixin Nenue@102: Nenue@102: function module:OnLoad() Nenue@102: Veneer:AddHandler(self, self.anchorPoint) Nenue@121: --self:RegisterEvent('GUILD_ROSTER_UPDATE') Nenue@121: --self:RegisterEvent('GUILD_TRADESKILL_UPDATE') Nick@108: Nick@108: self:RegisterEvent('LFG_LIST_SEARCH_RESULT_UPDATED') Nenue@121: --self:RegisterEvent('LFG_LIST_SEARCH_RESULTS_RECEIVED') Nenue@121: --self:RegisterEvent('LFG_LIST_AVAILABILITY_UPDATE') Nenue@121: --self:RegisterEvent('LFG_LIST_LOCK_INFO_RECEIVED') Nenue@121: self:RegisterEvent('ADDON_LOADED') Nenue@121: Nenue@121: hooksecurefunc("LFGListSearchPanel_SelectResult", function(obj) Nenue@121: print('LFGListSearchPanel_SelectResult') Nenue@121: self.selectedID = obj.selectedResult Nenue@121: print('selected =', self.selectedID) Nenue@121: self:UpdateAchievementLinks() Nenue@121: end) Nenue@121: hooksecurefunc("LFGListSearchPanel_SignUp", function(obj) Nenue@121: print('LFGListSearchPanel_SignUp', obj.selectedResult) Nenue@121: Nenue@121: Nenue@121: self.selectedID = obj.selectedResult Nenue@121: print('selected =', self.selectedID) Nenue@121: self:UpdateAchievementLinks() Nenue@121: end) Nenue@102: end Nenue@102: Nick@108: function module:Setup() Nick@108: VeneerHandlerMixin.Setup(self) Nenue@121: self:SetParent(LFGListFrame) Nenue@121: self:SetPoint('TOPLEFT', LFGListFrame,'TOPRIGHT') Nick@108: self:SetShown(true) Nick@108: end Nenue@102: Nick@108: function module:SetDirty() Nick@108: if self:IsVisible() then Nick@108: self:Update() Nick@108: else Nick@108: self.GuildInfoDirty = true Nenue@121: self.AchievementsDirty = true Nick@108: end Nick@108: end Nenue@121: local firstLoad = true Nick@108: function module:OnShow() Nick@108: print('|cFF00FFFFOnShow()|r') Nenue@121: self:Update(firstLoad) Nenue@121: firstLoad = nil Nick@108: end Nick@108: Nick@108: function module:UpdateGuildInfo() Nick@108: local numMembers = GetNumGuildMembers() Nick@108: print(numMembers) Nick@108: for i = 1, numMembers do Nenue@121: --print(GetGuildRosterInfo(i)) Nenue@121: end Nenue@121: self.GuildInfoDirty = nil Nenue@121: end Nenue@121: Nenue@121: -- cheevos to link Nenue@121: local cheevos = { Nenue@121: -- Mythic Prog: Tomb Nenue@121: { Nenue@121: 11781, -- kj Nenue@121: 11780, -- avatar Nenue@121: 11779, -- maiden Nenue@121: 11776, -- mistress Nenue@122: 11778, -- host, Nenue@121: 11777, -- sisters Nenue@121: 11775, -- harjatan, Nenue@121: 11774, -- di, Nenue@121: 11773, -- goroth Nenue@121: }, Nenue@121: -- Completion: Tomb Nenue@121: { Nenue@121: 11875, -- CE KJ Nenue@121: 11874, -- AotC KJ Nenue@121: 11790 -- Deceiver's Fall, Nenue@121: Nenue@121: Nenue@121: }, Nenue@121: -- Mythic+ Nenue@121: { Nenue@121: 11162, -- master Nenue@121: 11185, -- conqueror Nenue@121: } Nenue@121: } Nenue@121: Nenue@121: local cheev = {} Nenue@121: Nenue@121: function cheev:OnClick() Nenue@121: local resultID = LFGListFrame.SearchPanel.selectedResult or self:GetParent().selectedID Nenue@121: print('current selection = ', resultID) Nenue@121: if ACTIVE_CHAT_EDIT_BOX then Nenue@121: ChatEdit_InsertLink(self.link) Nenue@121: elseif resultID then Nenue@121: local id, activityID, name, comment, voiceChat, iLvl, honorLevel, age, numBNetFriends, numCharFriends, numGuildMates, isDelisted, leaderName = C_LFGList.GetSearchResultInfo(resultID); Nenue@121: --print(name, comment, leaderName) Nenue@121: ChatFrame_OpenChat("/w "..leaderName.." "..self.link, DEFAULT_CHAT_FRAME) Nick@108: end Nick@108: end Nick@108: Nick@108: Nenue@121: function module:UpdateAchievementLinks() Nenue@121: print('UpdateAchievementLinks()') Nenue@121: Nenue@121: local resultID = LFGListFrame.SearchPanel.selectedResult or self.selectedID Nenue@121: self:Show() Nenue@121: Nenue@121: Nenue@121: local index = 0 Nenue@121: local lastBlock Nenue@121: local contentsHeight = 0 Nenue@121: for _, group in ipairs(cheevos) do Nenue@121: for _, id in ipairs(group) do Nenue@121: local _, name, points, completed, month, day, year, description, flags, icon = GetAchievementInfo(id) Nenue@121: if completed then Nenue@121: index = index + 1 Nenue@121: --print(index) Nenue@121: local block =self.blocks[index] Nenue@121: if not block then Nenue@121: block = CreateFrame('Button', 'VeneerRosterKunBlock'..index, self, 'VeneerRosterKunBlock') Nenue@121: block:SetScript('OnClick', cheev.OnClick) Nenue@121: block:SetID(index) Nenue@121: self.blocks[index] = block Nenue@121: end Nenue@121: Nenue@121: block.link = GetAchievementLink(id) Nenue@121: block.Icon:SetTexture(icon) Nenue@121: block.Label:SetText(name) Nenue@121: block:ClearAllPoints() Nenue@121: if lastBlock then Nenue@121: block:SetPoint('TOPLEFT', lastBlock, 'BOTTOMLEFT', 0, 0) Nenue@121: else Nenue@121: block:SetPoint('TOPLEFT') Nenue@121: end Nenue@121: --print(block:GetHeight(), block:GetPoint(1)) Nenue@121: block:Show() Nenue@121: Nenue@121: contentsHeight = contentsHeight + block:GetHeight() Nenue@121: Nenue@121: --print(index, name, icon) Nenue@121: lastBlock = block Nenue@121: break; Nenue@121: end Nenue@121: end Nenue@121: end Nenue@121: Nenue@121: --print(index, #self.blocks) Nenue@121: if index < #self.blocks then Nenue@121: for i = index+1, #self.blocks do Nenue@121: --print('hiding', i) Nenue@121: self.blocks[i]:Hide() Nenue@121: end Nenue@121: Nenue@121: end Nenue@121: Nenue@121: self:SetHeight(contentsHeight) Nenue@121: Nenue@121: end Nenue@121: Nenue@121: function module:Update(forced) Nenue@121: Nenue@121: Nenue@121: if self.GuildInfoDirty or forced then Nenue@121: self:UpdateGuildInfo() Nenue@121: end Nenue@121: if self.AchievementsDirty or forced then Nenue@121: self:UpdateAchievementLinks() Nenue@121: end Nenue@121: Nenue@121: end Nenue@121: function module:SetupGuildUI() Nenue@121: self:UnregisterEvent('ADDON_LOADED') Nenue@121: end Nick@108: function module:OnEvent(event, ...) Nick@108: print('|cFFFF0088OnEvent()|r', event, ...) Nenue@121: if event == 'ADDON_LOADED' then Nenue@121: local addon = ... Nenue@121: if addon == 'Blizzard_GuildUI' then Nenue@121: self:SetupGuildUI() Nenue@121: end Nenue@121: elseif event == 'LFG_LIST_SEARCH_RESULTS_RECEIVED' then Nick@108: elseif event == 'LFG_LIST_SEARCH_RESULT_UPDATED' then Nick@108: end Nenue@121: end