changeset 121:1fcc4fe645dc tip

- Removed legionfall war supplies from the list of reward currencies to display
author Nenue
date Fri, 16 Feb 2018 14:27:59 -0500
parents c9b4e33d4d93
children
files Map.lua QuestPOI.lua
diffstat 2 files changed, 184 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Map.lua	Fri Feb 16 14:27:59 2018 -0500
@@ -0,0 +1,178 @@
+
+local _, db = ...
+local print = DEVIAN_WORKSPACE and function(...) _G.print('Map', ...) end or function() end
+
+
+WorldPlanMapMixin = {}
+local Map = WorldPlanMapMixin
+local wmf = WorldMapFrame
+
+local ArgusPins = {}
+
+function Map:OnLoad()
+
+  tinsert(db.modules, self)
+  --hooksecurefunc("WorldMap_SetupWorldQuestButton", function(taskPOI, ...)
+  --  self:OnSetupWorldQuestButton(taskPOI, ...)
+  --end)
+
+  --WorldMapFrame:UnregisterAllEvents()
+
+
+  hooksecurefunc("WorldMap_QuantizeWorldQuestPOIs", function(...)
+    self:OnWorldMap_QuantizeWorldQuestPOIs(...)
+  end)
+
+  hooksecurefunc("WorldMapPOIFrame_AnchorPOI", function(taskPOI, ...)
+    self:OnWorldMapPOIFrame_AnchorPOI(taskPOI, ...)
+  end)
+
+  hooksecurefunc("WorldMapFrame_Update", function()
+    self:OnWorldMapPOIFrame_Update()
+  end)
+end
+
+function Map:OnWorldMapPOIFrame_Update()
+
+
+
+  local map = GetCurrentMapAreaID()
+  _G.print('WQRefresh', '|cFF88FF00WorldMapFrame_Update()|r', map)
+  if map == 1007 then
+    _G.print('WQRefresh', 'is a continent map')
+    self:Update('WorldMapFrame_Update')
+  end
+
+end
+
+function Map:OnWorldMap_QuantizeWorldQuestPOIs(pois)
+  --_G.print('WQRefresh', '|cFF88FF00WorldMap_QuantizeWorldQuestPOIs()|r')
+  for k, worldQuestPOI in pairs(pois) do
+    --print(worldQuestPOI.questID, worldQuestPOI:GetPoint(1))
+    WorldMapPOIFrame_AnchorPOI(worldQuestPOI, worldQuestPOI.quantizedX or worldQuestPOI.x, worldQuestPOI.quantizedY or worldQuestPOI.y, WORLD_MAP_POI_FRAME_LEVEL_OFFSETS.WORLD_QUEST);
+  end
+end
+function Map:OnWorldMapPOIFrame_AnchorPOI(taskPOI, x, y, level)
+  --_G.print('WQRefresh','|cFF88FF00OnWorldMapPOIFrame_AnchorPOI()|r', taskPOI:GetName())
+  taskPOI.lastAnchor = time()
+end
+
+function Map:OnSetupWorldQuestButton(taskPOI, ...)
+
+  _G.print('WQRefresh','SetupWorldQuestButton()', taskPOI.questID)
+end
+
+
+local usedPOI = {}
+function Map:Update(source)
+  local existingPOI = db.pins.id
+  print('|cFF00FFFF' .. (source or '?'), '->Refresh()', NUM_WORLDMAP_TASK_POIS)
+  wipe(usedPOI)
+  for index = 1, 100  do
+
+    local poi =  _G["WorldMapFrameTaskPOI"..index];
+    if poi and poi.worldQuest and poi.questID then
+      print(index, 'used by #', poi.questID)
+      existingPOI[poi.questID] = poi
+    end
+  end
+  local poiIndex = NUM_WORLDMAP_TASK_POIS
+  local quests = db.pins.current
+  for questID, info in pairs(quests) do
+
+    local msg = 'Q #' .. questID .. ' ' .. (existingPOI[questID] and '(!)' or '-')
+    --print(questID, info.x, info.y)
+
+    --for k,v in pairs(info) do
+    --  print(questID .. '.' .. tostring(k), '=', v)
+    --end
+
+    --local taskPOI = existingPOI[questID]
+    --if not taskPOI or ( taskPOI.questID ~= questID) then
+
+
+    local taskPOI
+    if existingPOI[questID] then
+
+      taskPOI = existingPOI[questID]
+      msg = msg .. '\n  there is a POI for this quest, re-using ' .. taskPOI:GetName()
+    else
+      msg = msg .. 'no poi found... create one'
+      poiIndex = poiIndex + 1
+      taskPOI = WorldMap_GetOrCreateTaskPOI(poiIndex);
+
+      local tagID, tagName, worldQuestType, rarity, isElite, tradeskillLineIndex, displayTimeLeft = GetQuestTagInfo(info.questId);
+
+      taskPOI.name = tagName
+
+      local selected = info.questId == GetSuperTrackedQuestID();
+
+      local isCriteria = WorldMapFrame.UIElementsFrame.BountyBoard:IsWorldQuestCriteriaForSelectedBounty(info.questId);
+      local isSpellTarget = SpellCanTargetQuest() and IsQuestIDValidSpellTarget(info.questId);
+      local isEffectivelyTracked = WorldMap_IsWorldQuestEffectivelyTracked(info.questId);
+
+      taskPOI.worldQuest = true;
+
+      taskPOI.questID = questID
+      taskPOI.Texture:SetDrawLayer("OVERLAY");
+
+      WorldMap_SetupWorldQuestButton(taskPOI, worldQuestType, rarity, isElite, tradeskillLineIndex, info.inProgress, selected, isCriteria, isSpellTarget, isEffectivelyTracked);
+
+      C_TaskQuest.RequestPreloadRewardData(info.questId);
+
+    end
+
+    if taskPOI then
+      msg = msg .. "\n  taskPOI established/"
+    end
+
+      --[[
+      taskPOI = WorldMap_TryCreatingWorldQuestPOI(info, poiIndex)
+      print(WorldMap_IsWorldQuestSuppressed(info.questId), not WorldMap_DoesWorldQuestInfoPassFilters(info))
+      existingPOI[questID] = taskPOI
+      if not taskPOI then
+        print('|cFFFF4400unable to create for|r', questID)
+      else
+        --print(taskPOI, 'created',poiIndex)
+      end
+      --]]
+
+
+
+    --else
+
+      --print(taskPOI, 're-used')
+    --end
+    if taskPOI then
+
+
+      msg = msg .. '\n  POS '..tostring(taskPOI:GetName())..' |cFF00FF00x/y:|r ' .. tostring(info.x) ..' '..tostring(info.y)
+        taskPOI.x = info.x;
+        taskPOI.y = info.y;
+        taskPOI.quantizedX = nil;
+        taskPOI.quantizedY = nil;
+        taskPOI.questID = info.questId;
+        taskPOI.numObjectives = info.numObjectives;
+        taskPOI:Show();
+
+        usedPOI[questID] = taskPOI
+    end
+    print(msg)
+
+  end
+
+  for questID, poi in pairs(existingPOI) do
+    if not usedPOI[questID] then
+      print('|cFFFF4400remove un-updated:', poi:GetName())
+      poi:Hide()
+    end
+
+  end
+
+
+
+  WorldMapFrame.UIElementsFrame.ActionButton:SetHasWorldQuests(#usedPOI > 0);
+  WorldMap_QuantizeWorldQuestPOIs(usedPOI)
+
+  _G.print('WQRefresh', time())
+end
\ No newline at end of file
--- a/QuestPOI.lua	Sun Dec 17 18:43:47 2017 -0500
+++ b/QuestPOI.lua	Fri Feb 16 14:27:59 2018 -0500
@@ -42,6 +42,12 @@
 local dprint = DEVIAN_WORKSPACE and function(...) _G.print('WQData', ...) end or nop
 local QuestPOI = WorldPlanPOIMixin
 
+local shownCurrencies = {
+  [1220] = true,
+  --[1342]  = true,
+  [1508] = true, -- argunite
+  [1506] = true, -- argus waystone
+}
 local pinBaseIndex = 1400
 local overlayBaseIndex = 1450
 local previousHighlight
@@ -607,12 +613,6 @@
   return self.dataLoaded
 end
 
-local shownCurrencies = {
-  [1220] = true,
-  [1342]  = true,
-  [1508] = true, -- argunite
-  [1506] = true, -- argus waystone
-}
 
 --- Returns true if data has changed (either from loading in or qualifications changed)
 function QuestPOI:UpdateRewards()