comparison WorldQuests.lua @ 64:876c3f0bfd0e

- script upvalues cleanup - add quest active status to pin metadata
author Nick@Zahhak
date Thu, 23 Mar 2017 05:26:51 -0400
parents 8e130c92698f
children 02f1d3bce558
comparison
equal deleted inserted replaced
63:8e130c92698f 64:876c3f0bfd0e
3 -- Created: 11/2/2016 3:40 PM 3 -- Created: 11/2/2016 3:40 PM
4 -- %file-revision% 4 -- %file-revision%
5 local _, db = ... 5 local _, db = ...
6 local Module = WorldPlanQuestsMixin 6 local Module = WorldPlanQuestsMixin
7 7
8 local _G = _G
8 local MC_GetNumZones, MC_GetZoneInfo = C_MapCanvas.GetNumZones, C_MapCanvas.GetZoneInfo 9 local MC_GetNumZones, MC_GetZoneInfo = C_MapCanvas.GetNumZones, C_MapCanvas.GetZoneInfo
9 local TQ_GetQuestsForPlayerByMapID = C_TaskQuest.GetQuestsForPlayerByMapID -- This function is not yet documented 10 local TQ_GetQuestsForPlayerByMapID = C_TaskQuest.GetQuestsForPlayerByMapID -- This function is not yet documented
10 local TQ_GetQuestZoneID = C_TaskQuest.GetQuestZoneID 11 local TQ_GetQuestZoneID = C_TaskQuest.GetQuestZoneID
11 local GetMapInfo = GetMapInfo 12 local TQ_IsActive = C_TaskQuest.IsActive
13 local pairs, ipairs, tinsert, tremove, wipe = pairs, ipairs, tinsert, tremove, table.wipe
14 local GetTaskInfo, GetTasksTable, HaveQuestData = GetTaskInfo, GetTasksTable, HaveQuestData
15 local GetTime = GetTime
16 local SpellCanTargetQuest = SpellCanTargetQuest
17 local tonumber, abs = tonumber, math.abs
18 local GetQuestLogRewardInfo = GetQuestLogRewardInfo
19 local GetCurrentMapAreaID, GetMapInfo, GetMapNameByID = GetCurrentMapAreaID, GetMapInfo, GetMapNameByID
20
12 local print = DEVIAN_WORKSPACE and function(...) _G.print('WorldQuests', ...) end or function() end 21 local print = DEVIAN_WORKSPACE and function(...) _G.print('WorldQuests', ...) end or function() end
13 local rprint = DEVIAN_WORKSPACE and function(...) _G.print('WQRefresh', ...) end or function() end 22 local rprint = DEVIAN_WORKSPACE and function(...) _G.print('WQRefresh', ...) end or function() end
14 local qprint = DEVIAN_WORKSPACE and function(...) _G.print('POI', ...) end or function() end 23 local qprint = DEVIAN_WORKSPACE and function(...) _G.print('POI', ...) end or function() end
15 local wprint = DEVIAN_WORKSPACE and function(...) _G.print('WP', ...) end or function() end 24 local wprint = DEVIAN_WORKSPACE and function(...) _G.print('WP', ...) end or function() end
16 local mprint = DEVIAN_WORKSPACE and function(...) _G.print('Canvas', ...) end or function() end 25 local mprint = DEVIAN_WORKSPACE and function(...) _G.print('Canvas', ...) end or function() end
17 local pairs = pairs
18 26
19 local PinBaseIndex = 1200 27 local PinBaseIndex = 1200
20 local BROKEN_ISLES_ID, DALARAN_ID, AZSUNA_ID, VALSHARAH_ID, HIGHMOUNTAIN_ID, STORMHEIM_ID, SURAMAR_ID, EOA_ID = 1007, 1014, 1015,1018, 1024, 1017, 1033, 1096 28 local BROKEN_ISLES_ID, DALARAN_ID, AZSUNA_ID, VALSHARAH_ID, HIGHMOUNTAIN_ID, STORMHEIM_ID, SURAMAR_ID, EOA_ID = 1007, 1014, 1015,1018, 1024, 1017, 1033, 1096
21 local WORLD_QUEST_MAPS = { [DALARAN_ID] = 'Dalaran70', [AZSUNA_ID] = 'Azsuna', [VALSHARAH_ID] = "Val'sharah", 29 local WORLD_QUEST_MAPS = { [DALARAN_ID] = 'Dalaran70', [AZSUNA_ID] = 'Azsuna', [VALSHARAH_ID] = "Val'sharah",
22 [HIGHMOUNTAIN_ID] = 'Highmountain', [STORMHEIM_ID] = 'Stormheim', [SURAMAR_ID] = 'Suramar', [EOA_ID] = 'EyeOfAszhara', } 30 [HIGHMOUNTAIN_ID] = 'Highmountain', [STORMHEIM_ID] = 'Stormheim', [SURAMAR_ID] = 'Suramar', [EOA_ID] = 'EyeOfAszhara', }
87 if button.questID and db.QuestsByID[button.questID] then 95 if button.questID and db.QuestsByID[button.questID] then
88 db.QuestsByID[button.questID]:SetShown(false) 96 db.QuestsByID[button.questID]:SetShown(false)
89 end 97 end
90 end 98 end
91 99
92 local SpellCanTargetQuest = SpellCanTargetQuest
93 function Module:UpdateBlizzButtons() 100 function Module:UpdateBlizzButtons()
94 101
95 local func = SpellCanTargetQuest() and InternalShowButton or InternalHideButton 102 local func = SpellCanTargetQuest() and InternalShowButton or InternalHideButton
96 for i = 1, NUM_WORLDMAP_TASK_POIS do 103 for i = 1, NUM_WORLDMAP_TASK_POIS do
97 local button = _G['WorldMapFrameTaskPOI'..i] 104 local button = _G['WorldMapFrameTaskPOI'..i]
248 if (not pin.dataLoaded) then 255 if (not pin.dataLoaded) then
249 pin:GetData() 256 pin:GetData()
250 WorldPlan.dataFlush = true 257 WorldPlan.dataFlush = true
251 end 258 end
252 259
260 pin.isActive = TQ_IsActive(questID)
261
253 pin:CheckFilterRules() 262 pin:CheckFilterRules()
254 pin.isStale = true 263 pin.isStale = true
255 rprint(pin:GetID(), pin.filtered, pin.used) 264 rprint(pin:GetID(), pin.filtered, pin.used)
256 265
257 return pin 266 return pin
268 print('-', i, zone[i]) 277 print('-', i, zone[i])
269 zone[id] = nil 278 zone[id] = nil
270 end 279 end
271 db.TasksByID[id] = nil 280 db.TasksByID[id] = nil
272 end 281 end
282 pin.isActive = nil
283 pin.dataLoaded = nil
273 pin:HideFrames() 284 pin:HideFrames()
274 tinsert(db.FreePins, pin) 285 tinsert(db.FreePins, pin)
275 286
276 WorldPlan.dataFlush = true 287 WorldPlan.dataFlush = true
277 print('|cFF00FF00-'.. (pin.mapID and GetMapNameByID(pin.mapID) or '???') ..'|r', id, pin.title) 288 print('|cFF00FF00-'.. (pin.mapID and GetMapNameByID(pin.mapID) or '???') ..'|r', id, pin.title)
278 end 289 end
290
279 291
280 function Module:GetBonusObjectives() 292 function Module:GetBonusObjectives()
281 293
282 294
283 local tasksTable = GetTasksTable() 295 local tasksTable = GetTasksTable()
317 329
318 330
319 end 331 end
320 end 332 end
321 end 333 end
322
323
324 334
325 335
326 -- use tooltip object to extract item details 336 -- use tooltip object to extract item details
327 function Module:GetRewardHeader(questID) 337 function Module:GetRewardHeader(questID)
328 local name, icon, quantity, quality, _, itemID = GetQuestLogRewardInfo(1, questID) 338 local name, icon, quantity, quality, _, itemID = GetQuestLogRewardInfo(1, questID)
377 return REWARD_REAGENT, icon, quantity, name, itemID, quality 387 return REWARD_REAGENT, icon, quantity, name, itemID, quality
378 end 388 end
379 end 389 end
380 return 128, icon, quantity, name, itemID, quality 390 return 128, icon, quantity, name, itemID, quality
381 end 391 end
382
383 local GetCurrentMapAreaID, GetMapNameByID= GetCurrentMapAreaID, GetMapNameByID
384 local wipe, pairs = wipe, pairs
385 -- create of update quest pins for a map and its underlying zones 392 -- create of update quest pins for a map and its underlying zones
386 function Module:UpdateWorldQuests (mapID) 393 function Module:UpdateWorldQuests (mapID)
387 394
388 mapID = mapID or db.currentMapID 395 mapID = mapID or db.currentMapID
389 if not mapID then 396 if not mapID then
496 pin.isStale = true 503 pin.isStale = true
497 rprint('|cFF00FF00filter', pin.questID, pin.filtered, 'used:', pin.used) 504 rprint('|cFF00FF00filter', pin.questID, pin.filtered, 'used:', pin.used)
498 end 505 end
499 end 506 end
500 507
501 local abs = math.abs
502 function Module:UpdateQuestButton(info, mapID) 508 function Module:UpdateQuestButton(info, mapID)
503 local questID, x, y = info.questId, info.x, info.y 509 local questID, x, y = info.questId, info.x, info.y
504 local pin = self:AcquirePin(info) 510 local pin = self:AcquirePin(info)
505 if not pin then 511 if not pin then
506 return 512 return