comparison WorldQuests.lua @ 103:8cdd62e7a224

- Solved the quest pins remaining visible issue
author Nenue
date Sun, 28 May 2017 19:50:42 -0400
parents fbd4ead2a19f
children 9f664a0ef8a8
comparison
equal deleted inserted replaced
101:b68af1e44bdc 103:8cdd62e7a224
43 local SCALE_FACTORS = { 0.25, 0.7, 1 } 43 local SCALE_FACTORS = { 0.25, 0.7, 1 }
44 44
45 local BountyBoard = WorldMapFrame.UIElementsFrame.BountyBoard 45 local BountyBoard = WorldMapFrame.UIElementsFrame.BountyBoard
46 local ActionButton = WorldMapFrame.UIElementsFrame.ActionButton 46 local ActionButton = WorldMapFrame.UIElementsFrame.ActionButton
47 local defaults = {} 47 local defaults = {}
48 local completedQuests = {}
48 49
49 local continentScanned 50 local continentScanned
50 local layoutDirty = true 51 local layoutDirty = true
51 local bountiesDirty = true 52 local bountiesDirty = true
52 local artifactPowerDirty = true 53 local artifactPowerDirty = true
133 if (event == 'QUEST_LOG_UPDATE') then 134 if (event == 'QUEST_LOG_UPDATE') then
134 self:UpdateBounties(event) 135 self:UpdateBounties(event)
135 elseif event == 'WORLD_QUEST_COMPLETED_BY_SPELL' then 136 elseif event == 'WORLD_QUEST_COMPLETED_BY_SPELL' then
136 local questID = ... 137 local questID = ...
137 if questID and db.QuestsByID[questID] then 138 if questID and db.QuestsByID[questID] then
139 completedQuests[questID] = true
138 db.QuestsByID[questID]:Release() 140 db.QuestsByID[questID]:Release()
139 end 141 end
140 self:Refresh(event) 142 self:Refresh(event)
141 elseif event == 'SKILL_LINES_CHANGED' or event == 'CURRENT_SPELL_CAST_CHANGED' then 143 elseif event == 'SKILL_LINES_CHANGED' or event == 'CURRENT_SPELL_CAST_CHANGED' then
142 self:Refresh(event) 144 self:Refresh(event)
329 pin.isStale = true 331 pin.isStale = true
330 end 332 end
331 end 333 end
332 334
333 function Module:UpdateBounties(...) 335 function Module:UpdateBounties(...)
334 print('|cFF00FF88BountyInfo()|r', ...) 336 bountiesDirty = nil
337 print('|cFF00FF88BountyInfo()|r', ...)
335 wipe(db.BountiesByFactionID) 338 wipe(db.BountiesByFactionID)
336 wipe(db.BountiesByQuestID) 339 wipe(db.BountiesByQuestID)
337 340
338 db.selectedBounty = nil 341 db.selectedBounty = nil
339 selectedBountyIndex = BountyBoard:GetSelectedBountyIndex() 342 selectedBountyIndex = BountyBoard:GetSelectedBountyIndex()
351 selectedBountyQuestID = info.questID 354 selectedBountyQuestID = info.questID
352 end 355 end
353 print(' ', index, info.factionID, GetQuestLogTitle(GetQuestLogIndexByID(info.questID)), info.complete, (index == selectedBountyIndex) and 'SELECTED' or '') 356 print(' ', index, info.factionID, GetQuestLogTitle(GetQuestLogIndexByID(info.questID)), info.complete, (index == selectedBountyIndex) and 'SELECTED' or '')
354 end 357 end
355 end 358 end
356 bountiesDirty = nil
357 end 359 end
358 360
359 -- check current artifact knowledge and update pins accordingly 361 -- check current artifact knowledge and update pins accordingly
360 function Module:UpdateArtifactPower(overrideLevel) 362 function Module:UpdateArtifactPower(overrideLevel)
361 if InCombatLockdown() then 363 if InCombatLockdown() then
408 end 410 end
409 lastRefresh = GetTime() 411 lastRefresh = GetTime()
410 print(msg, lastRefresh, ...) 412 print(msg, lastRefresh, ...)
411 end 413 end
412 414
415
416 if bountiesDirty then
417 self:UpdateBounties()
418 end
419
413 if not db.Config.EnablePins then 420 if not db.Config.EnablePins then
414 numShown = 0 421 numShown = 0
415 self.refreshBenchMark = GetTime() 422 self.refreshBenchMark = GetTime()
416 self.refreshBenchMarkTicker = 2 423 self.refreshBenchMarkTicker = 2
417 print('starting bench', self.refreshBenchMark) 424 print('starting bench', self.refreshBenchMark)
575 function Module:AcquirePin (info) 582 function Module:AcquirePin (info)
576 local questID = info.questId 583 local questID = info.questId
577 if not (questID and QuestUtils_IsQuestWorldQuest(questID)) then 584 if not (questID and QuestUtils_IsQuestWorldQuest(questID)) then
578 return nil 585 return nil
579 end 586 end
580 if IsQuestComplete(questID) then 587 local pin = db.QuestsByID[questID]
588 -- check to avoid creating unnecessary frames
589 if IsQuestComplete(questID) or completedQuests[questID] then
590 completedQuests[questID] = true
591 if pin then
592 pin:Release()
593 end
581 return nil 594 return nil
582 end 595 end
583 596
584
585 local pin = db.QuestsByID[questID]
586 if not pin then 597 if not pin then
587 local numFree = #db.FreePins 598 local numFree = #db.FreePins
588 if numFree >= 1 then 599 if numFree >= 1 then
589 pin = tremove(db.FreePins, numFree) 600 pin = tremove(db.FreePins, numFree)
590 print('|cFF00FF00Acquire()|r Re-using', pin:GetName()) 601 print('|cFF00FF00Acquire()|r Re-using', pin:GetName())
604 615
605 db.QuestsByID[questID] = pin 616 db.QuestsByID[questID] = pin
606 tinsert(db.UsedPins, pin) 617 tinsert(db.UsedPins, pin)
607 end 618 end
608 619
609 if IsQuestComplete(questID) then 620 if info then
610 pin:Release()
611 return nil
612 elseif info then
613 pin.inProgress = info.inProgress 621 pin.inProgress = info.inProgress
614 pin.floor = info.floor 622 pin.floor = info.floor
615 pin.numObjectives = info.numObjectives or 0 623 pin.numObjectives = info.numObjectives or 0
616 if info.x and info.y then 624 if info.x and info.y then
617 if (info.x ~= pin.x) or (info.y ~= pin.y) then 625 if (info.x ~= pin.x) or (info.y ~= pin.y) then