view Modules/GuildInfo.lua @ 134:24dc16a49b15

Added tag v7.3.2-20171222 for changeset 86621c60512b
author Nenue
date Fri, 22 Dec 2017 20:37:15 -0500
parents 86621c60512b
children
line wrap: on
line source

local print = DEVIAN_WORKSPACE and function(...) print('VnRoster', ...) end or nop

VeneerRosterKunMixin = {
  anchorFrame = 'LFGListFrame',
  anchorPoint = 'TOPLEFT',

  AchievementsDirty = true,
  GuildInfoDirty = true,
  blocks = {},
}


local module = VeneerRosterKunMixin

function module:OnLoad()
  Veneer:AddHandler(self, self.anchorPoint)
  --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('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(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
  end
end
local firstLoad = true
function module:OnShow()
  print('|cFF00FFFFOnShow()|r')
  self:Update(firstLoad)
  firstLoad = nil
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()

end

function module:UpdateInvasionButtons()

end

local listed = {}

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

        -- if the highest mythic kill
         if listed[overlaps[id]] then
           break
         end


        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
        listed[id] = true
        break;
      end
    end
  end

--[[
  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);

      index = index + 1
      --print(index)
      local block =self.blocks[index]
      if not block then
        block = CreateFrame('Button', 'VeneerRosterKunBlock'..index, self, 'VeneerRosterKunBlock')
        block:SetScript('OnClick', invasion.OnClick)
        block:SetID(index)
        self.blocks[index] = block
      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 == '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


VeneerPetBattleActionMixin = {}
VeneerPetBattleInfoMixin = {}
local pb = VeneerPetBattleInfoMixin
local action = VeneerPetBattleActionMixin


function pb:OnShow()
  self:ClearAllPoints()
  self:SetPoint('TOPLEFT', PetBattleFrame.EnemyBuffFrame, 'BOTTOMLEFT', 0, -12)
  self:RegisterEvent('PET_BATTLE_PET_ROUND_PLAYBACK_COMPLETE')
  self:RegisterEvent('PET_BATTLE_ACTION_SELECTED')
  self:RegisterEvent('PET_BATTLE_TURN_STARTED')
  print('pet on show')
  self:Refresh()
end

function pb:OnHide()
  print('pet on hide')
  self:UnregisterAllEvents()
end

function pb:OnEvent(event)
  print('pb event|cFFFF8800', event)
  self:Refresh()
end

function pb:Refresh()
  local myPetSlot = C_PetBattles.GetActivePet(1)
  local myPetType = C_PetBattles.GetPetType(1, myPetSlot)

  local index = 0
  local nonActiveIndex = 0
  local lastFrame, lastNonActive
  for petSlot = 1, C_PetBattles.GetNumPets(2) do

    for abilitySlot = 1,3 do
      local _, name, texture, cooldown, tooltip,_, abilityType, noStrongWeakHints = C_PetBattles.GetAbilityInfo(2, petSlot, abilitySlot)
      local petHealth = C_PetBattles.GetHealth(2, petSlot)

      if petHealth >= 1 then
        local isUsable, currentCooldown, currentLockdown = C_PetBattles.GetAbilityState(2, petSlot, abilitySlot);
        --print(index, petSlot, abilitySlot, name, currentCooldown, currentLockdown, cooldown, petHealth)

        index = index + 1
        local frame = self.Abilities[index]

        frame.ownerID = 2
        frame.petIndex = petSlot
        frame.abIndex = abilitySlot
        frame.tooltip = tooltip
        frame.Name:SetText(name)
        frame.Icon:SetTexture(texture)
        frame.TypeIcon:SetTexture("Interface\\PetBattles\\PetIcon-"..PET_TYPE_SUFFIX[abilityType])


        for i = 1,C_PetBattles.GetNumPets(1) do
          local myPetType = C_PetBattles.GetPetType(1, i)
          if not (myPetType or abilityType) then
            frame.BetterIcon[i]:Hide();
          else
            local modifier = C_PetBattles.GetAttackModifier(abilityType, myPetType)
            if ( noStrongWeakHints or modifier == 1 ) then
              frame.BetterIcon[i]:Hide();
            elseif (modifier > 1) then
              frame.BetterIcon[i]:SetTexture("Interface\\PetBattles\\BattleBar-AbilityBadge-Strong");
              frame.BetterIcon[i]:Show();
            elseif (modifier < 1) then
              frame.BetterIcon[i]:SetTexture("Interface\\PetBattles\\BattleBar-AbilityBadge-Weak");
              frame.BetterIcon[i]:Show();
            end

          end
        end


        if cooldown >= 1 then
          frame.Border2:Show()
        else

          frame.Border2:Hide()
        end


        currentCooldown = (currentCooldown >= 1) and currentCooldown or 0
        if petHealth == 0 then
          frame.Cooldown:SetText(nil)
          frame.Cooldown:SetTextColor(1,0,0)
        else
          if currentLockdown >= 1 and currentLockdown > currentCooldown then
            frame.Cooldown:SetTextColor(1,0,0)
          else
            frame.Cooldown:SetTextColor(1,1,1)
          end
          frame.Cooldown:SetText((currentCooldown >= 1) and currentCooldown or nil)
        end

        frame:ClearAllPoints()
        if petSlot ==  C_PetBattles.GetActivePet(2) then
          frame:SetSize(48,48)
          frame.Border2:SetSize(72,72)
          frame.Icon:SetDesaturated(false)
          frame.Name:SetTextColor(1,1,0)
          if lastFrame then
            frame:SetPoint('TOPLEFT', lastFrame, 'BOTTOMLEFT', 0, -4)
          else
            frame:SetPoint('TOPLEFT', self, 'TOPLEFT')
          end
          lastFrame = frame
        else
          frame:SetSize(24,24)
          frame.Border2:SetSize(36,36)
          frame.Name:SetTextColor(0.5,0.5,0.5)
          frame.Icon:SetDesaturated(true)
          if lastNonActive then
            frame:SetPoint('TOPLEFT', lastNonActive, 'BOTTOMLEFT', 0, -2)
          else
            frame:SetPoint('TOPLEFT', self, 'TOPLEFT', 128, 0)
          end
          lastNonActive = frame
        end
        frame:Show()
      end
    end
  end

  for i = index + 1, #self.Abilities do
    self.Abilities[i]:Hide()
  end
end

function action:OnEnter()
  PetBattleAbilityTooltip_SetAbility(self.ownerID, self.petIndex, self.abIndex);
  PetBattleAbilityTooltip_Show("TOPRIGHT", self:GetParent(), "TOPLEFT", -5, 0, self.additionalText);
end

function action:OnLeave()
  PetBattlePrimaryAbilityTooltip:Hide();
end