comparison Modules/ArtifactPower.lua @ 102:1e511e9aaca5

- clean up handler loading inconsistencies; exclude free frames from anchor cluster iterations, and remove extraneous PLAYER_LOGIN handling - added a Setup method to the handler template that creates and reconciles a SavedVariables table for that module
author Nenue
date Wed, 25 Jan 2017 23:11:27 -0500
parents f32b63c93275
children 8df154a2bfd6
comparison
equal deleted inserted replaced
101:f32b63c93275 102:1e511e9aaca5
72 tinsert(UISpecialFrames, self:GetName()) 72 tinsert(UISpecialFrames, self:GetName())
73 73
74 74
75 end 75 end
76 76
77
78 local IsBagnonOpen = function()
79 return ((BagnonFramebank and BagnonFramebank:IsShown()) or (BagnonFrameinventory and BagnonFrameinventory:IsShown()))
80 end
77 local addonCompatibility = { 81 local addonCompatibility = {
78 ['Bagnon'] = { 82 ['Bagnon'] = {
79 BagFrames = {'BagnonFrameinventory'}, 83 BagFrames = {'BagnonFrameinventory'},
80 BankFrames = {'BagnonFramebank'}, 84 BankFrames = {'BagnonFramebank'},
85 FrameMethods = {
86 ['HideFrame'] = IsBagnonOpen,
87 ['ShowFrame'] = IsBagnonOpen
88 },
81 PostHooks = {'ToggleAllBags', 'ToggleBackpack' }, 89 PostHooks = {'ToggleAllBags', 'ToggleBackpack' },
82 MethodClass = 'Bagnon', 90 MethodClass = 'Bagnon',
83 MethodHooks = {'BANK_OPENED', 'BANKFRAME_CLOSED'} 91 MethodHooks = {'BANK_OPENED', 'BANKFRAME_CLOSED'},
92
84 } 93 }
85 } 94 }
95
96 local function AddFrameHooks(frame, args)
97 for funcName, func in pairs(args.FrameMethods) do
98 print('binding', frame:GetName(), funcName, 'to', tostring(func))
99 hooksecurefunc(frame, funcName, func)
100 end
101 end
102 local PENDING_HOOKS = {}
103
104 local function RegisterInventoryFrame(name, listType, args)
105 print('register', name, 'as inventory frame type =', (listType == BAG_FRAMES) and 'bags' or 'bank')
106 tinsert(FRAME_LIST, name)
107 tinsert(listType, name)
108 if _G[name] then
109 AddFrameHooks(_G[name], args)
110 else
111 PENDING_HOOKS[name] = args
112 end
113 end
86 114
87 115
88 function ap:Setup() 116 function ap:Setup()
89 print(self:GetName()..':Setup()') 117 print(self:GetName()..':Setup()')
90 local guid = UnitGUID('player') 118 local guid = UnitGUID('player')
121 149
122 -- Bagnon compatibility 150 -- Bagnon compatibility
123 -- todo: ArkInventory, Elv, etc 151 -- todo: ArkInventory, Elv, etc
124 for addon, args in pairs(addonCompatibility) do 152 for addon, args in pairs(addonCompatibility) do
125 if IsAddOnLoaded(addon) then 153 if IsAddOnLoaded(addon) then
154
126 for _, name in ipairs(args.BagFrames) do 155 for _, name in ipairs(args.BagFrames) do
127 tinsert(FRAME_LIST, name) 156 RegisterInventoryFrame(name, BAG_FRAMES, args)
128 tinsert(BAG_FRAMES, name)
129 end 157 end
130 for _, name in ipairs(args.BankFrames) do 158 for _, name in ipairs(args.BankFrames) do
131 tinsert(FRAME_LIST, name) 159 RegisterInventoryFrame(name, BANK_FRAMES, args)
132 tinsert(BAG_FRAMES, name) 160 end
133 end 161
162 -- should only specify non-secure functions in this table
134 for _, name in ipairs(args.PostHooks) do 163 for _, name in ipairs(args.PostHooks) do
135 local oFunc = _G[name] 164 local oFunc = _G[name]
136 _G[name] = function(...) 165 _G[name] = function(...)
137 print('|cFFFF0088' .. name .. '|r', ...) 166 print('|cFFFF0088' .. name .. '|r', ...)
138 oFunc(...) 167 oFunc(...)
215 end 244 end
216 end 245 end
217 246
218 function ap:OnShow() 247 function ap:OnShow()
219 print('|cFFFFFF00OnShow()|r') 248 print('|cFFFFFF00OnShow()|r')
249
250 for name, args in pairs(PENDING_HOOKS) do
251 if _G[name] then
252 AddFrameHooks(_G[name], args)
253 PENDING_HOOKS[name] = nil
254 end
255 end
256
257
220 self.enabled = true 258 self.enabled = true
221 self:ScanAllBags() 259 self:ScanAllBags()
222 self:Reanchor() 260 self:Reanchor()
223 if not self.postShowSetup then
224 self.postShowSetup = true
225 hooksecurefunc("HideUIPanel", function() self:TryToShow() end)
226 end
227 end 261 end
228 function ap:OnHide() 262 function ap:OnHide()
229 print('|cFF88FF00OnHide()|r') 263 print('|cFF88FF00OnHide()|r')
230 self:Reanchor() 264 self:Reanchor()
231 end 265 end
504 print(itemLink, '-', tonumber(text)) 538 print(itemLink, '-', tonumber(text))
505 local itemAP = tonumber(text) 539 local itemAP = tonumber(text)
506 if itemAP then 540 if itemAP then
507 itemAP = itemAP / self.profile.knowledgeMultiplier 541 itemAP = itemAP / self.profile.knowledgeMultiplier
508 self.cache[itemID] = itemAP 542 self.cache[itemID] = itemAP
509 return itemAP
510 end 543 end
511 end 544 end
512 end 545 end
513 end 546 end
514 local fishingText = _G[TOOLTIP_NAME .. 'TextLeft3']:GetText() 547 local fishingText = _G[TOOLTIP_NAME .. 'TextLeft3']:GetText()
516 local fishingAP = fishingText:match("%d+") 549 local fishingAP = fishingText:match("%d+")
517 fishingAP = tonumber(fishingAP) 550 fishingAP = tonumber(fishingAP)
518 if fishingAP then 551 if fishingAP then
519 self.cache[itemID] = fishingAP 552 self.cache[itemID] = fishingAP
520 self.fishingCache[itemID] = true 553 self.fishingCache[itemID] = true
521 return fishingAP, true
522 end 554 end
523 end 555 end
524 else 556 else
525 557
526 self.cache[itemID] = 0 558 self.cache[itemID] = 0
551 if link then 583 if link then
552 local itemID = GetContainerItemID(id, slotID) 584 local itemID = GetContainerItemID(id, slotID)
553 local name, _, quality, iLevel, reqLevel, class, subclass = GetItemInfo(link) 585 local name, _, quality, iLevel, reqLevel, class, subclass = GetItemInfo(link)
554 586
555 if class == 'Consumable' and subclass == 'Other' then 587 if class == 'Consumable' and subclass == 'Other' then
556 print(GetItemInfo(link)) 588 --print(GetItemInfo(link))
557 local itemAP, isFishingAP = self:GetItemAP(itemID, link) 589 local itemAP, isFishingAP = self:GetItemAP(itemID, link)
558 print(itemAP, isFishingAP) 590 --print(itemAP, isFishingAP)
559 if itemAP > 0 then 591 if itemAP and (itemAP > 0) then
592 local itemButton = self:GetItemButton(itemID, texture, itemAP)
593
560 if isFishingAP then 594 if isFishingAP then
561 bagData.fishingItems = (bagData.fishingItems or 0) + 1 595 bagData.fishingItems = (bagData.fishingItems or 0) + 1
562 bagData.fishingAP = (bagData.fishingAP or 0) + itemAP 596 bagData.fishingAP = (bagData.fishingAP or 0) + itemAP
563 else 597 else
564 598 itemAP = itemAP * self.profile.knowledgeMultiplier
565 bagData.numItems = (bagData.numItems or 0) + 1 599 bagData.numItems = (bagData.numItems or 0) + 1
566 bagData.totalAP = (bagData.totalAP or 0) + itemAP 600 bagData.totalAP = (bagData.totalAP or 0) + itemAP
567 end 601 end
568 bagData.items[itemID] = (bagData.items[itemID] or 0) + 1 602 bagData.items[itemID] = (bagData.items[itemID] or 0) + 1
569 local itemButton = self:GetItemButton(itemID, texture, itemAP)
570 end 603 end
571 elseif self.profile.artifacts[itemID] then 604 elseif self.profile.artifacts[itemID] then
572 print('artfiact weapon', itemID, link, id, slotID) 605 print('artfiact weapon', itemID, link, id, slotID)
573 self.profile.artifacts[itemID].containerID = id 606 self.profile.artifacts[itemID].containerID = id
574 self.profile.artifacts[itemID].slotID = slotID 607 self.profile.artifacts[itemID].slotID = slotID
663 end 696 end
664 self.potentialCost = potentialCost 697 self.potentialCost = potentialCost
665 self.potentialLevel = potentialPoints 698 self.potentialLevel = potentialPoints
666 self.potentialAdjustedXP = potentialXP 699 self.potentialAdjustedXP = potentialXP
667 700
701
668 702
669 if index ~= 1 then 703 if index ~= 1 then
670 self:ClearAllPoints() 704 self:ClearAllPoints()
671 self:SetPoint('TOPLEFT', self.relativeFrame, 'TOPRIGHT', 4, 0) 705 self:SetPoint('TOPLEFT', self.relativeFrame, 'TOPRIGHT', 4, 0)
672 else 706 else