diff Modules/GuildInfo.lua @ 121:1f68c46bc4de

BuffFrame: - Added interface framework for selectively hiding certain buff's auxiliary values.
author Nenue
date Mon, 17 Jul 2017 11:51:31 -0400
parents a41f6b74709a
children ea2c616a3b4f
line wrap: on
line diff
--- a/Modules/GuildInfo.lua	Sun Jun 04 18:20:40 2017 -0400
+++ b/Modules/GuildInfo.lua	Mon Jul 17 11:51:31 2017 -0400
@@ -2,10 +2,12 @@
 local print = DEVIAN_WORKSPACE and function(...) print('VnRoster', ...) end or nop
 
 VeneerRosterKunMixin = {
-  addonTrigger = 'Blizzard_GuildUI',
+  anchorFrame = 'LFGListFrame',
+  anchorPoint = 'TOPLEFT',
 
-  anchorFrame = 'GuildFrame',
-  anchorPoint = 'TOPLEFT',
+  AchievementsDirty = true,
+  GuildInfoDirty = true,
+  blocks = {},
 }
 
 
@@ -13,18 +15,35 @@
 
 function module:OnLoad()
   Veneer:AddHandler(self, self.anchorPoint)
-  self:RegisterEvent('GUILD_ROSTER_UPDATE')
-  self:RegisterEvent('GUILD_TRADESKILL_UPDATE')
+  --self:RegisterEvent('GUILD_ROSTER_UPDATE')
+  --self:RegisterEvent('GUILD_TRADESKILL_UPDATE')
 
   self:RegisterEvent('LFG_LIST_SEARCH_RESULT_UPDATED')
-  self:RegisterEvent('LFG_LIST_SEARCH_RESULTS_RECEIVED')
-  self:RegisterEvent('LFG_LIST_AVAILABILITY_UPDATE')
-  self:RegisterEvent('LFG_LIST_LOCK_INFO_RECEIVED')
+  --self:RegisterEvent('LFG_LIST_SEARCH_RESULTS_RECEIVED')
+  --self:RegisterEvent('LFG_LIST_AVAILABILITY_UPDATE')
+  --self:RegisterEvent('LFG_LIST_LOCK_INFO_RECEIVED')
+  self:RegisterEvent('ADDON_LOADED')
+
+  hooksecurefunc("LFGListSearchPanel_SelectResult", function(obj)
+  print('LFGListSearchPanel_SelectResult')
+    self.selectedID = obj.selectedResult
+    print('selected =', self.selectedID)
+    self:UpdateAchievementLinks()
+  end)
+  hooksecurefunc("LFGListSearchPanel_SignUp", function(obj)
+    print('LFGListSearchPanel_SignUp', obj.selectedResult)
+
+
+    self.selectedID = obj.selectedResult
+    print('selected =', self.selectedID)
+    self:UpdateAchievementLinks()
+  end)
 end
 
 function module:Setup()
   VeneerHandlerMixin.Setup(self)
-  self:SetParent(GuildFrame)
+  self:SetParent(LFGListFrame)
+  self:SetPoint('TOPLEFT', LFGListFrame,'TOPRIGHT')
   self:SetShown(true)
 end
 
@@ -33,31 +52,149 @@
     self:Update()
   else
     self.GuildInfoDirty = true
+    self.AchievementsDirty = true
   end
 end
-
+local firstLoad = true
 function module:OnShow()
   print('|cFF00FFFFOnShow()|r')
-  if self.GuildInfoDirty then
-    self:UpdateGuildInfo()
-  end
+  self:Update(firstLoad)
+  firstLoad = nil
 end
 
 function module:UpdateGuildInfo()
   local numMembers = GetNumGuildMembers()
   print(numMembers)
   for i = 1, numMembers do
-    print(GetGuildRosterInfo(i))
+    --print(GetGuildRosterInfo(i))
+  end
+  self.GuildInfoDirty = nil
+end
+
+-- cheevos to link
+local cheevos = {
+  -- Mythic Prog: Tomb
+  {
+    11781, -- kj
+    11780, -- avatar
+    11779, -- maiden
+    11776, -- mistress
+    11777, -- sisters
+    11778, -- host,
+    11775, -- harjatan,
+    11774, -- di,
+    11773, -- goroth
+  },
+  -- Completion: Tomb
+  {
+    11875, -- CE KJ
+    11874, -- AotC KJ
+    11790 -- Deceiver's Fall,
+
+
+  },
+  -- Mythic+
+  {
+    11162, -- master
+    11185, -- conqueror
+  }
+}
+
+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 module:Update() end
 
+function module:UpdateAchievementLinks()
+  print('UpdateAchievementLinks()')
+
+  local resultID = LFGListFrame.SearchPanel.selectedResult or self.selectedID
+  self:Show()
+
+
+  local index = 0
+  local lastBlock
+  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
+        index = index + 1
+        --print(index)
+        local block =self.blocks[index]
+        if not block then
+          block = CreateFrame('Button', 'VeneerRosterKunBlock'..index, self, 'VeneerRosterKunBlock')
+          block:SetScript('OnClick', cheev.OnClick)
+          block:SetID(index)
+          self.blocks[index] = block
+        end
+
+        block.link = GetAchievementLink(id)
+        block.Icon:SetTexture(icon)
+        block.Label:SetText(name)
+        block:ClearAllPoints()
+        if lastBlock then
+          block:SetPoint('TOPLEFT', lastBlock, 'BOTTOMLEFT', 0, 0)
+        else
+          block:SetPoint('TOPLEFT')
+        end
+        --print(block:GetHeight(), block:GetPoint(1))
+        block:Show()
+
+        contentsHeight = contentsHeight + block:GetHeight()
+
+        --print(index, name, icon)
+        lastBlock = block
+        break;
+      end
+    end
+  end
+
+  --print(index,  #self.blocks)
+  if index < #self.blocks then
+    for i = index+1, #self.blocks do
+      --print('hiding', i)
+      self.blocks[i]:Hide()
+    end
+
+  end
+
+  self:SetHeight(contentsHeight)
+
+end
+
+function module:Update(forced)
+
+
+  if self.GuildInfoDirty or forced then
+    self:UpdateGuildInfo()
+  end
+  if self.AchievementsDirty or forced then
+    self:UpdateAchievementLinks()
+  end
+
+end
+function module:SetupGuildUI()
+  self:UnregisterEvent('ADDON_LOADED')
+end
 function module:OnEvent(event, ...)
   print('|cFFFF0088OnEvent()|r', event, ...)
-  if event == 'LFG_LIST_SEARCH_RESULTS_RECEIVED' then
+  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
-  elseif event == 'GUILD_ROSTER_UPDATE' then
-    self:SetDirty()
   end
-end
\ No newline at end of file
+end