annotate Modules/GuildInfo.lua @ 133:86621c60512b v7.3.2-20171222

- Fixed AP calc tooltip appearing while hidden - Fixed PaperDoll relic tooltips missing nether crucible info
author Nenue
date Fri, 22 Dec 2017 20:36:40 -0500
parents 15a7f27b11e6
children
rev   line source
Nick@108 1
Nick@108 2 local print = DEVIAN_WORKSPACE and function(...) print('VnRoster', ...) end or nop
Nick@108 3
Nenue@102 4 VeneerRosterKunMixin = {
Nenue@121 5 anchorFrame = 'LFGListFrame',
Nenue@121 6 anchorPoint = 'TOPLEFT',
Nenue@102 7
Nenue@121 8 AchievementsDirty = true,
Nenue@121 9 GuildInfoDirty = true,
Nenue@121 10 blocks = {},
Nenue@102 11 }
Nenue@102 12
Nenue@102 13
Nenue@102 14 local module = VeneerRosterKunMixin
Nenue@102 15
Nenue@102 16 function module:OnLoad()
Nenue@102 17 Veneer:AddHandler(self, self.anchorPoint)
Nenue@121 18 --self:RegisterEvent('GUILD_ROSTER_UPDATE')
Nenue@121 19 --self:RegisterEvent('GUILD_TRADESKILL_UPDATE')
Nick@108 20
Nenue@133 21 --self:RegisterEvent('LFG_LIST_SEARCH_RESULT_UPDATED')
Nenue@121 22 --self:RegisterEvent('LFG_LIST_SEARCH_RESULTS_RECEIVED')
Nenue@121 23 --self:RegisterEvent('LFG_LIST_AVAILABILITY_UPDATE')
Nenue@121 24 --self:RegisterEvent('LFG_LIST_LOCK_INFO_RECEIVED')
Nenue@121 25 self:RegisterEvent('ADDON_LOADED')
Nenue@121 26
Nenue@121 27 hooksecurefunc("LFGListSearchPanel_SelectResult", function(obj)
Nenue@121 28 print('LFGListSearchPanel_SelectResult')
Nenue@121 29 self.selectedID = obj.selectedResult
Nenue@121 30 print('selected =', self.selectedID)
Nenue@121 31 self:UpdateAchievementLinks()
Nenue@121 32 end)
Nenue@121 33 hooksecurefunc("LFGListSearchPanel_SignUp", function(obj)
Nenue@121 34 print('LFGListSearchPanel_SignUp', obj.selectedResult)
Nenue@121 35
Nenue@121 36
Nenue@121 37 self.selectedID = obj.selectedResult
Nenue@121 38 print('selected =', self.selectedID)
Nenue@121 39 self:UpdateAchievementLinks()
Nenue@121 40 end)
Nenue@102 41 end
Nenue@102 42
Nick@108 43 function module:Setup()
Nick@108 44 VeneerHandlerMixin.Setup(self)
Nenue@121 45 self:SetParent(LFGListFrame)
Nenue@121 46 self:SetPoint('TOPLEFT', LFGListFrame,'TOPRIGHT')
Nick@108 47 self:SetShown(true)
Nick@108 48 end
Nenue@102 49
Nick@108 50 function module:SetDirty()
Nick@108 51 if self:IsVisible() then
Nick@108 52 self:Update()
Nick@108 53 else
Nick@108 54 self.GuildInfoDirty = true
Nenue@121 55 self.AchievementsDirty = true
Nick@108 56 end
Nick@108 57 end
Nenue@121 58 local firstLoad = true
Nick@108 59 function module:OnShow()
Nick@108 60 print('|cFF00FFFFOnShow()|r')
Nenue@121 61 self:Update(firstLoad)
Nenue@121 62 firstLoad = nil
Nick@108 63 end
Nick@108 64
Nick@108 65 function module:UpdateGuildInfo()
Nick@108 66 local numMembers = GetNumGuildMembers()
Nick@108 67 print(numMembers)
Nick@108 68 for i = 1, numMembers do
Nenue@121 69 --print(GetGuildRosterInfo(i))
Nenue@121 70 end
Nenue@121 71 self.GuildInfoDirty = nil
Nenue@121 72 end
Nenue@121 73
Nenue@121 74 -- cheevos to link
Nenue@131 75 local overlaps = {
Nenue@131 76 [11781] = 11875,
Nenue@133 77 [12002] = 12111,
Nenue@131 78 }
Nenue@121 79 local cheevos = {
Nenue@133 80 -- Mythic Prog
Nenue@121 81 {
Nenue@133 82 -- Antorus
Nenue@133 83 12002, -- argus
Nenue@133 84 12001, -- aggramar
Nenue@133 85 12000, -- coven
Nenue@133 86 11999, -- barry
Nenue@133 87 11998, -- kin'garoth
Nenue@133 88 11997, -- imonar
Nenue@133 89 11996, -- eonar
Nenue@133 90 11995, -- portal keeper
Nenue@133 91 11994, -- high command
Nenue@133 92 11993, -- doggos
Nenue@133 93 11992, -- worldbreaker
Nenue@133 94
Nenue@133 95 -- Tomb of Sargeras
Nenue@121 96 11781, -- kj
Nenue@121 97 11780, -- avatar
Nenue@121 98 11779, -- maiden
Nenue@121 99 11776, -- mistress
Nenue@122 100 11778, -- host,
Nenue@121 101 11777, -- sisters
Nenue@121 102 11775, -- harjatan,
Nenue@121 103 11774, -- di,
Nenue@121 104 11773, -- goroth
Nenue@121 105 },
Nenue@133 106 -- Completion
Nenue@121 107 {
Nenue@133 108 12111, -- CE Argus,
Nenue@133 109 12110, -- AotC Argus,
Nenue@121 110 11875, -- CE KJ
Nenue@121 111 11874, -- AotC KJ
Nenue@121 112 11790 -- Deceiver's Fall,
Nenue@121 113
Nenue@121 114
Nenue@121 115 },
Nenue@121 116 -- Mythic+
Nenue@121 117 {
Nenue@121 118 11162, -- master
Nenue@121 119 11185, -- conqueror
Nenue@121 120 }
Nenue@121 121 }
Nenue@121 122
Nenue@133 123 local invasion = {}
Nenue@121 124 local cheev = {}
Nenue@121 125
Nenue@121 126 function cheev:OnClick()
Nenue@121 127 local resultID = LFGListFrame.SearchPanel.selectedResult or self:GetParent().selectedID
Nenue@121 128 print('current selection = ', resultID)
Nenue@121 129 if ACTIVE_CHAT_EDIT_BOX then
Nenue@121 130 ChatEdit_InsertLink(self.link)
Nenue@121 131 elseif resultID then
Nenue@121 132 local id, activityID, name, comment, voiceChat, iLvl, honorLevel, age, numBNetFriends, numCharFriends, numGuildMates, isDelisted, leaderName = C_LFGList.GetSearchResultInfo(resultID);
Nenue@121 133 --print(name, comment, leaderName)
Nenue@121 134 ChatFrame_OpenChat("/w "..leaderName.." "..self.link, DEFAULT_CHAT_FRAME)
Nick@108 135 end
Nick@108 136 end
Nick@108 137
Nenue@133 138 function invasion:OnClick()
Nenue@133 139
Nenue@133 140 end
Nenue@133 141
Nenue@133 142 function module:UpdateInvasionButtons()
Nenue@133 143
Nenue@133 144 end
Nenue@133 145
Nenue@133 146 local listed = {}
Nick@108 147
Nenue@121 148 function module:UpdateAchievementLinks()
Nenue@121 149 print('UpdateAchievementLinks()')
Nenue@121 150
Nenue@121 151 local resultID = LFGListFrame.SearchPanel.selectedResult or self.selectedID
Nenue@121 152 self:Show()
Nenue@121 153
Nenue@121 154
Nenue@121 155 local index = 0
Nenue@121 156 local lastBlock
Nenue@121 157 local contentsHeight = 0
Nenue@121 158 for _, group in ipairs(cheevos) do
Nenue@121 159 for _, id in ipairs(group) do
Nenue@121 160 local _, name, points, completed, month, day, year, description, flags, icon = GetAchievementInfo(id)
Nenue@121 161 if completed then
Nenue@133 162
Nenue@133 163 -- if the highest mythic kill
Nenue@133 164 if listed[overlaps[id]] then
Nenue@133 165 break
Nenue@133 166 end
Nenue@133 167
Nenue@133 168
Nenue@121 169 index = index + 1
Nenue@121 170 --print(index)
Nenue@121 171 local block =self.blocks[index]
Nenue@121 172 if not block then
Nenue@121 173 block = CreateFrame('Button', 'VeneerRosterKunBlock'..index, self, 'VeneerRosterKunBlock')
Nenue@121 174 block:SetScript('OnClick', cheev.OnClick)
Nenue@121 175 block:SetID(index)
Nenue@121 176 self.blocks[index] = block
Nenue@121 177 end
Nenue@121 178
Nenue@121 179 block.link = GetAchievementLink(id)
Nenue@121 180 block.Icon:SetTexture(icon)
Nenue@121 181 block.Label:SetText(name)
Nenue@121 182 block:ClearAllPoints()
Nenue@121 183 if lastBlock then
Nenue@121 184 block:SetPoint('TOPLEFT', lastBlock, 'BOTTOMLEFT', 0, 0)
Nenue@121 185 else
Nenue@121 186 block:SetPoint('TOPLEFT')
Nenue@121 187 end
Nenue@121 188 --print(block:GetHeight(), block:GetPoint(1))
Nenue@121 189 block:Show()
Nenue@121 190
Nenue@121 191 contentsHeight = contentsHeight + block:GetHeight()
Nenue@121 192
Nenue@121 193 --print(index, name, icon)
Nenue@121 194 lastBlock = block
Nenue@133 195 listed[id] = true
Nenue@121 196 break;
Nenue@121 197 end
Nenue@121 198 end
Nenue@121 199 end
Nenue@121 200
Nenue@133 201 --[[
Nenue@133 202 local areaPOIs = C_WorldMap.GetAreaPOIForMap(GetCurrentMapAreaID(), 1);
Nenue@133 203 if areaPOIs then
Nenue@133 204
Nenue@133 205
Nenue@133 206 for i, areaPoiID in ipairs(areaPOIs) do
Nenue@133 207 local poiInfo = C_WorldMap.GetAreaPOIInfo(GetCurrentMapAreaID(), areaPoiID, 1);
Nenue@133 208
Nenue@133 209 index = index + 1
Nenue@133 210 --print(index)
Nenue@133 211 local block =self.blocks[index]
Nenue@133 212 if not block then
Nenue@133 213 block = CreateFrame('Button', 'VeneerRosterKunBlock'..index, self, 'VeneerRosterKunBlock')
Nenue@133 214 block:SetScript('OnClick', invasion.OnClick)
Nenue@133 215 block:SetID(index)
Nenue@133 216 self.blocks[index] = block
Nenue@133 217 end
Nenue@133 218
Nenue@133 219
Nenue@133 220
Nenue@133 221 end
Nenue@133 222 end
Nenue@133 223 --]]
Nenue@133 224
Nenue@121 225 --print(index, #self.blocks)
Nenue@121 226 if index < #self.blocks then
Nenue@121 227 for i = index+1, #self.blocks do
Nenue@121 228 --print('hiding', i)
Nenue@121 229 self.blocks[i]:Hide()
Nenue@121 230 end
Nenue@121 231
Nenue@121 232 end
Nenue@121 233
Nenue@121 234 self:SetHeight(contentsHeight)
Nenue@121 235
Nenue@121 236 end
Nenue@121 237
Nenue@121 238 function module:Update(forced)
Nenue@121 239
Nenue@121 240
Nenue@121 241 if self.GuildInfoDirty or forced then
Nenue@121 242 self:UpdateGuildInfo()
Nenue@121 243 end
Nenue@121 244 if self.AchievementsDirty or forced then
Nenue@121 245 self:UpdateAchievementLinks()
Nenue@121 246 end
Nenue@121 247
Nenue@133 248
Nenue@121 249 end
Nenue@121 250 function module:SetupGuildUI()
Nenue@121 251 self:UnregisterEvent('ADDON_LOADED')
Nenue@121 252 end
Nick@108 253 function module:OnEvent(event, ...)
Nick@108 254 print('|cFFFF0088OnEvent()|r', event, ...)
Nenue@121 255 if event == 'ADDON_LOADED' then
Nenue@121 256 local addon = ...
Nenue@121 257 if addon == 'Blizzard_GuildUI' then
Nenue@121 258 self:SetupGuildUI()
Nenue@121 259 end
Nenue@121 260 elseif event == 'LFG_LIST_SEARCH_RESULTS_RECEIVED' then
Nick@108 261 elseif event == 'LFG_LIST_SEARCH_RESULT_UPDATED' then
Nick@108 262 end
Nenue@121 263 end
Nenue@133 264
Nenue@133 265
Nenue@133 266 VeneerPetBattleActionMixin = {}
Nenue@133 267 VeneerPetBattleInfoMixin = {}
Nenue@133 268 local pb = VeneerPetBattleInfoMixin
Nenue@133 269 local action = VeneerPetBattleActionMixin
Nenue@133 270
Nenue@133 271
Nenue@133 272 function pb:OnShow()
Nenue@133 273 self:ClearAllPoints()
Nenue@133 274 self:SetPoint('TOPLEFT', PetBattleFrame.EnemyBuffFrame, 'BOTTOMLEFT', 0, -12)
Nenue@133 275 self:RegisterEvent('PET_BATTLE_PET_ROUND_PLAYBACK_COMPLETE')
Nenue@133 276 self:RegisterEvent('PET_BATTLE_ACTION_SELECTED')
Nenue@133 277 self:RegisterEvent('PET_BATTLE_TURN_STARTED')
Nenue@133 278 print('pet on show')
Nenue@133 279 self:Refresh()
Nenue@133 280 end
Nenue@133 281
Nenue@133 282 function pb:OnHide()
Nenue@133 283 print('pet on hide')
Nenue@133 284 self:UnregisterAllEvents()
Nenue@133 285 end
Nenue@133 286
Nenue@133 287 function pb:OnEvent(event)
Nenue@133 288 print('pb event|cFFFF8800', event)
Nenue@133 289 self:Refresh()
Nenue@133 290 end
Nenue@133 291
Nenue@133 292 function pb:Refresh()
Nenue@133 293 local myPetSlot = C_PetBattles.GetActivePet(1)
Nenue@133 294 local myPetType = C_PetBattles.GetPetType(1, myPetSlot)
Nenue@133 295
Nenue@133 296 local index = 0
Nenue@133 297 local nonActiveIndex = 0
Nenue@133 298 local lastFrame, lastNonActive
Nenue@133 299 for petSlot = 1, C_PetBattles.GetNumPets(2) do
Nenue@133 300
Nenue@133 301 for abilitySlot = 1,3 do
Nenue@133 302 local _, name, texture, cooldown, tooltip,_, abilityType, noStrongWeakHints = C_PetBattles.GetAbilityInfo(2, petSlot, abilitySlot)
Nenue@133 303 local petHealth = C_PetBattles.GetHealth(2, petSlot)
Nenue@133 304
Nenue@133 305 if petHealth >= 1 then
Nenue@133 306 local isUsable, currentCooldown, currentLockdown = C_PetBattles.GetAbilityState(2, petSlot, abilitySlot);
Nenue@133 307 --print(index, petSlot, abilitySlot, name, currentCooldown, currentLockdown, cooldown, petHealth)
Nenue@133 308
Nenue@133 309 index = index + 1
Nenue@133 310 local frame = self.Abilities[index]
Nenue@133 311
Nenue@133 312 frame.ownerID = 2
Nenue@133 313 frame.petIndex = petSlot
Nenue@133 314 frame.abIndex = abilitySlot
Nenue@133 315 frame.tooltip = tooltip
Nenue@133 316 frame.Name:SetText(name)
Nenue@133 317 frame.Icon:SetTexture(texture)
Nenue@133 318 frame.TypeIcon:SetTexture("Interface\\PetBattles\\PetIcon-"..PET_TYPE_SUFFIX[abilityType])
Nenue@133 319
Nenue@133 320
Nenue@133 321 for i = 1,C_PetBattles.GetNumPets(1) do
Nenue@133 322 local myPetType = C_PetBattles.GetPetType(1, i)
Nenue@133 323 if not (myPetType or abilityType) then
Nenue@133 324 frame.BetterIcon[i]:Hide();
Nenue@133 325 else
Nenue@133 326 local modifier = C_PetBattles.GetAttackModifier(abilityType, myPetType)
Nenue@133 327 if ( noStrongWeakHints or modifier == 1 ) then
Nenue@133 328 frame.BetterIcon[i]:Hide();
Nenue@133 329 elseif (modifier > 1) then
Nenue@133 330 frame.BetterIcon[i]:SetTexture("Interface\\PetBattles\\BattleBar-AbilityBadge-Strong");
Nenue@133 331 frame.BetterIcon[i]:Show();
Nenue@133 332 elseif (modifier < 1) then
Nenue@133 333 frame.BetterIcon[i]:SetTexture("Interface\\PetBattles\\BattleBar-AbilityBadge-Weak");
Nenue@133 334 frame.BetterIcon[i]:Show();
Nenue@133 335 end
Nenue@133 336
Nenue@133 337 end
Nenue@133 338 end
Nenue@133 339
Nenue@133 340
Nenue@133 341 if cooldown >= 1 then
Nenue@133 342 frame.Border2:Show()
Nenue@133 343 else
Nenue@133 344
Nenue@133 345 frame.Border2:Hide()
Nenue@133 346 end
Nenue@133 347
Nenue@133 348
Nenue@133 349 currentCooldown = (currentCooldown >= 1) and currentCooldown or 0
Nenue@133 350 if petHealth == 0 then
Nenue@133 351 frame.Cooldown:SetText(nil)
Nenue@133 352 frame.Cooldown:SetTextColor(1,0,0)
Nenue@133 353 else
Nenue@133 354 if currentLockdown >= 1 and currentLockdown > currentCooldown then
Nenue@133 355 frame.Cooldown:SetTextColor(1,0,0)
Nenue@133 356 else
Nenue@133 357 frame.Cooldown:SetTextColor(1,1,1)
Nenue@133 358 end
Nenue@133 359 frame.Cooldown:SetText((currentCooldown >= 1) and currentCooldown or nil)
Nenue@133 360 end
Nenue@133 361
Nenue@133 362 frame:ClearAllPoints()
Nenue@133 363 if petSlot == C_PetBattles.GetActivePet(2) then
Nenue@133 364 frame:SetSize(48,48)
Nenue@133 365 frame.Border2:SetSize(72,72)
Nenue@133 366 frame.Icon:SetDesaturated(false)
Nenue@133 367 frame.Name:SetTextColor(1,1,0)
Nenue@133 368 if lastFrame then
Nenue@133 369 frame:SetPoint('TOPLEFT', lastFrame, 'BOTTOMLEFT', 0, -4)
Nenue@133 370 else
Nenue@133 371 frame:SetPoint('TOPLEFT', self, 'TOPLEFT')
Nenue@133 372 end
Nenue@133 373 lastFrame = frame
Nenue@133 374 else
Nenue@133 375 frame:SetSize(24,24)
Nenue@133 376 frame.Border2:SetSize(36,36)
Nenue@133 377 frame.Name:SetTextColor(0.5,0.5,0.5)
Nenue@133 378 frame.Icon:SetDesaturated(true)
Nenue@133 379 if lastNonActive then
Nenue@133 380 frame:SetPoint('TOPLEFT', lastNonActive, 'BOTTOMLEFT', 0, -2)
Nenue@133 381 else
Nenue@133 382 frame:SetPoint('TOPLEFT', self, 'TOPLEFT', 128, 0)
Nenue@133 383 end
Nenue@133 384 lastNonActive = frame
Nenue@133 385 end
Nenue@133 386 frame:Show()
Nenue@133 387 end
Nenue@133 388 end
Nenue@133 389 end
Nenue@133 390
Nenue@133 391 for i = index + 1, #self.Abilities do
Nenue@133 392 self.Abilities[i]:Hide()
Nenue@133 393 end
Nenue@133 394 end
Nenue@133 395
Nenue@133 396 function action:OnEnter()
Nenue@133 397 PetBattleAbilityTooltip_SetAbility(self.ownerID, self.petIndex, self.abIndex);
Nenue@133 398 PetBattleAbilityTooltip_Show("TOPRIGHT", self:GetParent(), "TOPLEFT", -5, 0, self.additionalText);
Nenue@133 399 end
Nenue@133 400
Nenue@133 401 function action:OnLeave()
Nenue@133 402 PetBattlePrimaryAbilityTooltip:Hide();
Nenue@133 403 end