Mercurial > wow > worldplan
diff WorldQuests.lua @ 100:fbd4ead2a19f v1.4.11
- More attempts to fix quest markers re-appearing when completed via the order hall spells. Hard to test due to cooldown.
author | Nenue |
---|---|
date | Thu, 18 May 2017 16:43:14 -0400 |
parents | d594c5c4a4a3 |
children | 4d1520186ea4 8cdd62e7a224 |
line wrap: on
line diff
--- a/WorldQuests.lua Mon May 15 00:15:44 2017 -0400 +++ b/WorldQuests.lua Thu May 18 16:43:14 2017 -0400 @@ -68,8 +68,8 @@ local numLoaded = 0 local numOverlays = 1 local scaleConstant = 1 -local pinBaseIndex = 1500 -local overlayBaseIndex = 1580 +local pinBaseIndex = 1550 +local overlayBaseIndex = 1600 local artifactKnowldegeSpells = { [207856] = true, @@ -205,19 +205,26 @@ callbacks[BountyBoard] = {} callbacks[BountyBoard].SetSelectedBountyIndex = function(WorldQuests) WorldQuests:UpdateBounties('BOUNTY_SELECTED') - WorldQuests:Refresh('BOUNTY_SELECTED') + for questID, pin in pairs(db.QuestsByID) do + pin.checkCriteria = true + pin:Refresh() + end end callbacks[ActionButton] = {} callbacks[ActionButton].UpdateCastingState = function(WorldQuests) - WorldQuests:Refresh('CASTING_STATE_CHANGED') + for questID, pin in pairs(db.QuestsByID) do + pin.checkCursor = true + pin:Refresh() + end end callbacks.UseWorldMapActionButtonSpellOnQuest = function(questID) local pin = db.QuestsByID[questID] -- calling this implies that the pin is used in some way if pin then - pin:CheckFilterRules() + db.log(pin.title .. ' completed by spell?', IsQuestComplete(pin.questID)) + pin:OnFilters() pin.isStale = true end end @@ -309,7 +316,7 @@ function Module:UpdateNext() --print('|cFF00FF88UpdateNext()') local pin = tremove(db.UpdatedPins) - pin:CheckFilterRules() + pin:OnFilters() local scaleFactor = SCALE_FACTORS[(pin.dataLoaded and not pin.filtered) and scaleConstant or 1] --print(pin.title, pin.dataLoaded and not pin.filtered, scaleFactor) @@ -437,6 +444,10 @@ numLoaded = numLoaded + 1 end + pin.checkCriteria = true + pin.checkFilters = true + pin:Refresh('WORLDMAP_REFRESH ' .. GetTime()) + else if pin:IsShown() then print('|cFFFF4400need to remove', pin.title) @@ -540,23 +551,22 @@ for index, info in pairs(taskInfo) do local questID, x, y = info.questId, info.x, info.y local pin = self:AcquirePin(info) + if pin then + if pin.canShow then + pin.used = true + print('using', pin.title, (pin.owningFrame ~= WorldMapFrame)) + if layoutDirty or (pin.owningFrame ~= WorldMapFrame) then + local scaleFactor = SCALE_FACTORS[(not pin.filtered and scaleConstant) or 1] + pin.owningFrame = WorldMapFrame + pin:SetAnchor(WorldMapPOIFrame, x, y, self.hostWidth, self.hostHeight, scaleFactor) - if pin.canShow then - pin.used = true - print('using', pin.title, (pin.owningFrame ~= WorldMapFrame)) - if layoutDirty or (pin.owningFrame ~= WorldMapFrame) then - local scaleFactor = SCALE_FACTORS[(not pin.filtered and scaleConstant) or 1] - pin.owningFrame = WorldMapFrame - pin:SetAnchor(WorldMapPOIFrame, x, y, self.hostWidth, self.hostHeight, scaleFactor) - if pin.isStale then - pin:Refresh('WORLDMAP_REFRESH ' .. GetTime()) end + if db.QuestsByZone[mapID] then + db.QuestsByZone[mapID][questID] = pin + end + else + print('|cFFFF4400discarding|r', pin.title) end - if db.QuestsByZone[mapID] then - db.QuestsByZone[mapID][questID] = pin - end - else - print('|cFFFF4400discarding|r', pin.title) end end end @@ -567,17 +577,21 @@ if not (questID and QuestUtils_IsQuestWorldQuest(questID)) then return nil end + if IsQuestComplete(questID) then + return nil + end + local pin = db.QuestsByID[questID] if not pin then local numFree = #db.FreePins if numFree >= 1 then pin = tremove(db.FreePins, numFree) - print('|cFF00FF00Re-using', pin:GetName()) + print('|cFF00FF00Acquire()|r Re-using', pin:GetName()) else totalPins = totalPins + 1 local name = 'WorldPlanQuestMarker' .. numOverlays - print('|cFF00FF00Creating', name) + print('|cFF00FF00Acquire()|r Creating', name) pin = CreateFrame('Frame', name, WorldMapPOIFrame, 'WorldPlanQuestPin') pin:SetID(totalPins) @@ -585,10 +599,9 @@ --pin.iconBorder:SetVertexColor(0,0,0,1) end pin.questID = questID - pin.worldQuest = true pin.throttle = pin.updateRate - pin.isNew = true pin.currentWidth = nil + db.QuestsByID[questID] = pin tinsert(db.UsedPins, pin) end @@ -624,9 +637,8 @@ end end + pin:OnFilters() pin.isActive = TQ_IsActive(questID) - pin:GetCriteriaState() - pin:CheckFilterRules() --rprint(pin:GetID(), pin.filtered, pin.used) return pin end