# HG changeset patch
# User Nenue
# Date 1491685678 14400
# Node ID 2ba11b25aa7f40d9d18086edb4bffcc08ce47c80
# Parent 25f7dbc20a72e7030456a42bc53421b0971873e0
flight map data handler adjustments
diff -r 25f7dbc20a72 -r 2ba11b25aa7f FlightMap.lua
--- a/FlightMap.lua Fri Apr 07 07:20:28 2017 -0400
+++ b/FlightMap.lua Sat Apr 08 17:07:58 2017 -0400
@@ -52,6 +52,7 @@
self.ticker = nil;
end
+
function WorldPlanDataProvider:OnAdded(mapCanvas)
self.activePins = {};
self.owningMap = mapCanvas
@@ -102,8 +103,6 @@
local frame = self.activePins[info.questId]
if not frame then
frame = self:GetMap():AcquirePin("WorldPlanFlightPin")
- print(alpha1, alpha2, alpha3)
- print(scale1, scale2, scale3)
frame:SetAlphaLimits(alpha1, alpha2, alpha3)
frame:SetScalingLimits(scale1, scale2, scale3);
frame:SetFrameLevel(1000 + self:GetMap():GetNumActivePinsByTemplate("WorldPlanFlightPin"));
@@ -113,13 +112,10 @@
frame:SetPosition(info.x, info.y)
frame.pin = pin
- -- sticking it onto the MapCanvas pin
- pin:SetAnchor(frame, nil, nil, nil, nil, pin.filtered and 0.5 or 1)
+ -- fix the scale
+ pin:SetAnchor(frame, nil, nil, nil, nil, 1)
pin.owningFrame = frame:GetMap()
pin.throttle = 1
- pin.isStale = true
-
- pin:CheckFilterRules()
pin:ClearAllPoints()
pin:SetPoint('CENTER', frame, 'CENTER')
--print(pin.Overlay:IsShown(), pin.Overlay:GetPoint(1))
@@ -159,6 +155,18 @@
self:SetNudgeZoomedInFactor(0.25);
end
+function WorldPlanDataPinMixin:OnUpdate()
+ local pin = self.pin
+ if pin and pin.isStale then
+ print(pin.questID, 'is stale')
+ pin:SetAnchor(nil, nil, nil, nil, nil, pin.filtered and 0.5 or 1)
+ if pin.isNew then
+ pin:OnShow()
+ end
+ end
+end
+
+
function WorldPlanDataPinMixin:OnShow()
end
diff -r 25f7dbc20a72 -r 2ba11b25aa7f FlightMap.xml
--- a/FlightMap.xml Fri Apr 07 07:20:28 2017 -0400
+++ b/FlightMap.xml Sat Apr 08 17:07:58 2017 -0400
@@ -13,6 +13,9 @@
+
+
+
\ No newline at end of file
diff -r 25f7dbc20a72 -r 2ba11b25aa7f QuestPOI.lua
--- a/QuestPOI.lua Fri Apr 07 07:20:28 2017 -0400
+++ b/QuestPOI.lua Sat Apr 08 17:07:58 2017 -0400
@@ -103,12 +103,10 @@
}
local REWARD_TYPE_STYLES = {
[REWARD_CASH] = {
- border = {1,1,0},
hideNumber = true,
},
[REWARD_ARTIFACT_POWER] = {},
[REWARD_GEAR] = {
-
hideNumber = true,
},
[REWARD_CURRENCY] = {
@@ -119,6 +117,8 @@
hideNumber = true,
},
}
+local BORDER_SELECTED_BOUNTY = {1, 1, 0, 1 }
+local BORDER_CRITERIA = {.25, .5, 1, 1}
local LE_ITEM_CLASS_WEAPON, LE_ITEM_CLASS_ARMOR, LE_ITEM_CLASS_GEM, LE_ITEM_GEM_ARTIFACTRELIC, LE_ITEM_CLASS_TRADEGOODS = LE_ITEM_CLASS_WEAPON, LE_ITEM_CLASS_ARMOR, LE_ITEM_CLASS_GEM, LE_ITEM_GEM_ARTIFACTRELIC, LE_ITEM_CLASS_TRADEGOODS
@@ -491,7 +491,7 @@
for i = 1, WorldPlanTooltip:NumLines() do
local line = _G['WorldPlanTooltipTextLeft' .. i]
local text = line and line:GetText()
- local ap = text and text:gsub(',', ''):match('(%d+) '..ARTIFACT_POWER)
+ local ap = text and text:gsub(',', ''):gsub(' million', '000000'):match('(%d+) '..ARTIFACT_POWER)
if ap then
rewardCount = tonumber(ap)
print(ap)
@@ -576,7 +576,7 @@
qprint('|cFFFFFF00clearing new status')
self:SetAlpha(0)
if self.dataLoaded then
- self:Refresh()
+ self:Refresh('POI_ISNEW')
self.FadeIn.FadeIn:SetToAlpha(db.PinAlpha)
self.PendingFade.FadeIn:SetToAlpha(db.PinAlpha)
self.PendingFade.FadeOut:SetFromAlpha(db.PinAlpha)
@@ -605,7 +605,7 @@
end
if self.isStale then
print('|cFF00FF00refresh on show')
- self:Refresh()
+ self:Refresh('POI_SCRIPT')
end
end
self:ShowFrames()
@@ -633,41 +633,38 @@
end
if owner then
- local prevOwner = self:GetParent()
- if prevOwner ~= owner then
- self.isStale = true
- end
self:SetParent(owner)
self.Overlay:SetParent(owner)
+ self.isStale = true
else
owner = self:GetParent()
end
- self:ClearAllPoints()
self:SetFrameLevel(pinBaseIndex + self:GetID())
self.Overlay:SetFrameLevel(overlayBaseIndex + self:GetID())
- local scaleChanged
- if scaleFactor and (self.scaleFactor ~= scaleFactor) then
+
+ if scaleFactor then
--print('scaleFactor')
self:SetScale(scaleFactor)
self.Overlay:SetScale(scaleFactor)
self.scaleFactor = scaleFactor
- scaleChanged = true
end
- if (dX and dY) then
- if not (mapHeight and mapWidth) then
- mapWidth, mapHeight = owner:GetSize()
- end
+ mapWidth = mapWidth or owner:GetWidth()
+ mapHeight = mapHeight or owner:GetHeight()
+ dX = dX or self.x
+ dY = dY or self.y
+ --print(owner:GetName() or tostring(owner), self:GetName(), owner:GetScale(), scaleFactor)
+ if (self.x ~= dX) or (self.y ~= dY) or scaleFactor then
- if (self.x ~= dY) or (self.y ~= dY) or scaleChanged then
- self.x = dX
- self.y = dY
- local pX = (dX * mapWidth) * (1 / scaleFactor)
- local pY = (-dY * mapHeight) * (1 / scaleFactor)
- self:SetPoint('CENTER', owner, 'TOPLEFT', pX, pY)
- end
+ self.x = dX
+ self.y = dY
+ local pX = (dX * mapWidth) * (1 / scaleFactor)
+ local pY = (-dY * mapHeight) * (1 / scaleFactor)
+ --print('to', pX, pY, self:GetScale())
+ self:ClearAllPoints()
+ self:SetPoint('CENTER', owner, 'TOPLEFT', pX, pY)
end
end
@@ -748,9 +745,8 @@
local dataLoaded = self:GetData()
if dataLoaded and not tContains(db.UpdatedPins, self) then
-
- print('|cFF00FF88'..self:GetID()..':|r delayed reward info, queueing for update')
self.PendingFade:Stop()
+ -- scale info from the parent module is needed, so deal with it there
tinsert(db.UpdatedPins, self)
end
return
@@ -762,6 +758,40 @@
end
+function QuestPOI:GetCriteriaState()
+ local isCriteria, isBounty, isSpellTarget
+ if self.factionID then
+
+ local bounties = db.BountiesByFactionID
+ if bounties then
+ for factionID, bounty in pairs(bounties) do
+
+ if IsQuestCriteriaForBounty(self.questID, bounty.questID) then
+ isCriteria = true
+ if db.selectedBounty == bounty then
+ isBounty = true
+ end
+ print('|cFF00FF88Criteria:|r', self.questID, bounty.questID, isCriteria, isBounty)
+ end
+ end
+
+
+ print('|cFFFF4400Criteria:|r', self.questID, self.isCriteria, self.isBounty)
+
+ end
+ end
+ isSpellTarget = IsQuestIDValidSpellTarget(self.questID)
+
+ if (self.isBounty ~= isBounty) or (self.isCriteria ~= isCriteria) or (self.isSpellTarget ~= isSpellTarget) then
+
+ self.isBounty = isBounty
+ self.isCriteria = isCriteria
+ self.isSpellTarget = isSpellTarget
+ return true
+ end
+
+end
+
-- Called at static intervals and with Refresh
function QuestPOI:UpdateStatus()
-- update time elements
@@ -779,14 +809,12 @@
end
end
+ local border = (self.isBounty or self.isCriteria) and self.RewardBorder or self.HighlightBorder
+
if tl and (timeLeft < 120) then
- self.HighlightBorder:SetVertexColor(1,0,0,0.7)
- elseif self.isBounty then
- self.HighlightBorder:SetVertexColor(1,1,0,1)
- elseif self.isCriteria then
- self.HighlightBorder:SetVertexColor(.25,.5,1,1)
+ border:SetVertexColor(1,0,0,0.7)
else
- self.HighlightBorder:SetVertexColor(0,0,0,0.7)
+ border:SetVertexColor(0,0,0,0.7)
end
self.alertLevel = tl
self.timeLabel:SetShown(self.worldQuest and (self.maxAlertLevel >= 1))
@@ -798,9 +826,9 @@
end
-function QuestPOI:Refresh ()
+function QuestPOI:Refresh (event)
- rprint('|cFF00FF88'..self:GetID()..'|r:Refresh() type =', self.rewardType, 'title =', self.title)
+ print('|cFF00FF88'..self:GetID()..'|r:Refresh()', event)
local style = DEFAULT_STYLE
if self.dataLoaded and not self.filtered then
@@ -829,6 +857,7 @@
local tagIcon = self.tagIcon
self.maxAlertLevel = style.maxAlertLevel or DEFAULT_STYLE.maxAlertLevel
+
if self.itemName then
if self.itemNumber and (self.itemNumber > 1) and (not hideNumbers) then
local numberString = self.itemNumber
@@ -883,13 +912,13 @@
icon:SetVertexColor(unpack(borderColor))
end
local borderMask = style.borderMask or DEFAULT_STYLE.borderMask
- local borderSize = currentWidth + (borderWidth * 2)
+ local borderSize = currentWidth + (borderWidth * 2) + (self.isCriteria and 2 or 0)
iconBorder:SetSize(borderSize, borderSize)
iconBorder:SetMask(borderMask)
iconBorder:SetTexture(PENDING_BORDER)
- iconBorder:SetVertexColor(unpack(borderColor))
+
iconBorder:SetDesaturated(true)
local highlightSize = borderSize + (highlightWidth * 2)
@@ -912,6 +941,19 @@
self:UpdateStatus()
self.isStale = nil
+ if self.isBounty then
+ print('is bounty')
+ iconBorder:SetVertexColor(trackingBorder:GetVertexColor())
+ trackingBorder:SetVertexColor(unpack(BORDER_SELECTED_BOUNTY))
+ elseif self.isCriteria then
+ print('is criteria of a bounty')
+ iconBorder:SetVertexColor(trackingBorder:GetVertexColor())
+ trackingBorder:SetVertexColor(unpack(BORDER_CRITERIA))
+ else
+
+ iconBorder:SetVertexColor(unpack(borderColor))
+ trackingBorder:SetVertexColor(1,1,1,1)
+ end
if SpellCanTargetQuest() then
if IsQuestIDValidSpellTarget(self.questID) then
diff -r 25f7dbc20a72 -r 2ba11b25aa7f WorldQuests.lua
--- a/WorldQuests.lua Fri Apr 07 07:20:28 2017 -0400
+++ b/WorldQuests.lua Sat Apr 08 17:07:58 2017 -0400
@@ -229,8 +229,7 @@
local questID = ...
self:UpdateBounties(event)
if questID and db.QuestsByID[questID] then
- self:ReleasePin(db.QuestsByID[questID])
- rprint('|cFFFF4400release|r', questID)
+ db.QuestsByID[questID].complete = true
end
self:Refresh(event)
elseif event == 'SKILL_LINES_CHANGED' or event == 'CURRENT_SPELL_CAST_CHANGED' then
@@ -361,7 +360,7 @@
if info.x and info.y then
pin.x = info.x or pin.x
pin.y = info.y or pin.y
- rprint('|cFFFF4400coords|r', info.x, info.y)
+ --rprint('|cFFFF4400coords|r', info.x, info.y)
end
end
@@ -513,7 +512,7 @@
if self:IsVisible() then
print('|cFF00FFFFRefreshIfChanged()|r', refreshReason)
- self:Refresh()
+ self:Refresh('WORLDMAP_QUEUED')
else
rprint('|cFF00FFFFRefreshIfChanged()|r flagging for later refresh', refreshReason)
self.isStale = true
@@ -537,49 +536,33 @@
return
end
+
+ local doUpdate = pin:GetCriteriaState() or pin.isStale
--print(' |- ', pin.questID, pin.title)
rprint('|cFF00FF00update|r', pin.questID, pin.title)
+
+ print(doUpdate)
+
if x and y then
local scaleFactor = SCALE_FACTORS[(pin.dataLoaded and not pin.filtered) and scaleConstant or 1]
pin:SetFrameLevel(PinBaseIndex+pin:GetID())
pin.owningFrame = WorldMapFrame
pin:SetAnchor(WorldMapPOIFrame, x, y, self.hostWidth, self.hostHeight, scaleFactor)
+ doUpdate = true
--tinsert(self.UsedPositions, pin)
end
- local isCriteria, isBounty
- if pin.factionID then
- if db.BountiesByFactionID[pin.factionID] then
- isCriteria = true
- end
- if selectedBountyQuestID then
- isBounty = IsQuestCriteriaForBounty(pin.questID, selectedBountyQuestID) and true or nil
- end
- end
-
- local isSpellTarget
- if canTargetQuests then
- isSpellTarget = IsQuestIDValidSpellTarget(pin.questID)
- end
-
- if (pin.isBounty ~= isBounty) or (pin.isCriteria ~= isCriteria) or (pin.isSpellTarget ~= isSpellTarget) then
- pin.isSpellTarget = isSpellTarget
- pin.isBounty = isBounty
- pin.isCriteria = isCriteria
+ if doUpdate then
+ print(' changed', pin.title, pin.isCriteria, pin.isBounty, pin.scaleFactor)
if pin:IsVisible() then
- --print(' changed', pin.title)
--numUpdated = numUpdated + 1
- pin:Refresh('BOUNTY_UPDATE')
+ pin:Refresh('WORLDMAP_REFRESH')
else
--numHidden = numHidden + 1
pin.isStale = true
end
end
- if self:IsVisible() and (pin.isStale) then
- pin:Refresh()
- end
-
if mapID then
if not db.QuestsByZone[mapID] then
db.QuestsByZone[mapID] = {}
@@ -600,9 +583,13 @@
function Module:UpdateAnchors ()
wipe(self.UsedPositions)
print(' |cFF00FF00'..self:GetName()..':UpdateAnchors()')
- self.hostWidth, self.hostHeight = WorldMapPOIFrame:GetSize()
- self.nudgeThrescholdX = 16/self.hostWidth
- self.nudgeThrescholdY = 16/self.hostHeight
+ local hostWidth, hostHeight = WorldMapPOIFrame:GetSize()
+
+ if (hostWidth ~= self.hostWidth) or (hostHeight ~= self.hostHeight) then
+ self.hostWidth, self.hostHeight = hostWidth, hostHeight
+ layoutDirty = true
+ end
+
rprint('|cFF00FF00'..self:GetName()..':UpdateAnchors()')
local mapFileName, textureHeight, textureWidth, isMicroDungeon, microDungeonMapName = GetMapInfo()