comparison Main.lua @ 566:244aec3f15b0 8.0.1-5

Updated world quest parsing and recording to work on all continents, not just ones with emissaries.
author Caleb Atherton <atcaleb@twitch.tv>
date Wed, 01 Aug 2018 17:17:33 -0400
parents 19c59ee05ab1
children 1f472a5452a8
comparison
equal deleted inserted replaced
565:19c59ee05ab1 566:244aec3f15b0
31 31
32 local DatamineTT = _G.CreateFrame("GameTooltip", "WDPDatamineTT", _G.UIParent, "GameTooltipTemplate") 32 local DatamineTT = _G.CreateFrame("GameTooltip", "WDPDatamineTT", _G.UIParent, "GameTooltipTemplate")
33 DatamineTT:SetOwner(_G.WorldFrame, "ANCHOR_NONE") 33 DatamineTT:SetOwner(_G.WorldFrame, "ANCHOR_NONE")
34 34
35 35
36 -- CONSTANTS ---------------------------------------------------------- 36 -- SIMPLE CONSTANTS ----------------------------------------------------------
37 37
38 local AF = private.ACTION_TYPE_FLAGS 38 local AF = private.ACTION_TYPE_FLAGS
39 local CLIENT_LOCALE = _G.GetLocale() 39 local CLIENT_LOCALE = _G.GetLocale()
40 local DB_VERSION = 19 40 local DB_VERSION = 19
41 local DEBUGGING = false 41 local DEBUGGING = false
42 local EVENT_DEBUG = false 42 local EVENT_DEBUG = false
43 43
44 -- Timer durations in seconds 44 -- Timer durations in seconds
45 local DELAY_PROCESS_ITEMS = 30 45 local DELAY_PROCESS_ITEMS = 30
46 local DELAY_PROCESS_WORLD_QUESTS = 60 46 local DELAY_PROCESS_WORLD_QUESTS = 90
47 local DELAY_UPDATE_TARGET_LOCATION = 0.5 47 local DELAY_UPDATE_TARGET_LOCATION = 0.5
48 48
49 local ITEM_ID_TIMBER = 114781 49 local ITEM_ID_TIMBER = 114781
50 50
51 local LOOT_SLOT_CURRENCY = _G.LOOT_SLOT_CURRENCY 51 local LOOT_SLOT_CURRENCY = _G.LOOT_SLOT_CURRENCY
66 local PLAYER_LEVEL = _G.UnitLevel("player") 66 local PLAYER_LEVEL = _G.UnitLevel("player")
67 local PLAYER_NAME = _G.UnitName("player") 67 local PLAYER_NAME = _G.UnitName("player")
68 local PLAYER_RACE = _G.select(2, _G.UnitRace("player")) 68 local PLAYER_RACE = _G.select(2, _G.UnitRace("player"))
69 69
70 local SPELL_ID_UPDATE_INTERACTIONS = 161006 70 local SPELL_ID_UPDATE_INTERACTIONS = 161006
71
72 local UI_MAP_COSMIC = 946
71 73
72 local ALLOWED_LOCALES = { 74 local ALLOWED_LOCALES = {
73 enUS = true, 75 enUS = true,
74 enGB = true, 76 enGB = true,
75 enTW = true, 77 enTW = true,
1010 1012
1011 function WDP:ProcessWorldQuests() 1013 function WDP:ProcessWorldQuests()
1012 -- Ignore if player is low level (there are some world quests before max level now, but we can collect enough data from 110s alone still) 1014 -- Ignore if player is low level (there are some world quests before max level now, but we can collect enough data from 110s alone still)
1013 if _G.UnitLevel("player") < 110 then return end 1015 if _G.UnitLevel("player") < 110 then return end
1014 1016
1015 local current_ui_map_id = C_Map.GetBestMapForUnit("player") 1017 -- Check all first-order continents
1016 local bounty_maps = MapUtil.GetRelatedBountyZoneMaps(current_ui_map_id) 1018 local continents = C_Map.GetMapChildrenInfo(UI_MAP_COSMIC, Enum.UIMapType.Continent, true);
1017 1019 for i, continentInfo in ipairs(continents) do
1018 -- Iterate over zones in continent 1020
1019 for i = 1, #bounty_maps do 1021 -- Get continent data for World Quests
1020 1022 local continent_api_data = C_TaskQuest.GetQuestsForPlayerByMapID(continentInfo.mapID)
1021 -- Get data for World Quests 1023
1022 local api_data = C_TaskQuest.GetQuestsForPlayerByMapID(bounty_maps[i]); 1024 -- If the continent has WQ data, continue
1023 local continent_ui_map_id = MapUtil.GetMapParentInfo(bounty_maps[i], _G.Enum.UIMapType.Continent) 1025 if continent_api_data and type(continent_api_data) == "table" and #continent_api_data > 0 then
1024 1026 -- Iterate over zones on continents
1025 -- Iterate over the questIDs for each map, doing preload reward requests and creating SavedVariables entries 1027 local zones = C_Map.GetMapChildrenInfo(continentInfo.mapID, Enum.UIMapType.Zone)
1026 if api_data and type(api_data) == "table" and #api_data > 0 then 1028 for j, zoneInfo in ipairs(zones) do
1027 for j = 1, #api_data do 1029
1028 1030 -- Get zone data for World Quests
1029 -- Check if we had a valid API table returned to us 1031 local zone_api_data = C_TaskQuest.GetQuestsForPlayerByMapID(zoneInfo.mapID);
1030 if api_data[j] and type(api_data[j]) == "table" and api_data[j].questId then 1032
1031 local quest_id = tonumber(api_data[j].questId) or 0 1033 -- Iterate over the questIDs for each zone, doing preload reward requests and creating SavedVariables entries
1032 1034 if zone_api_data and type(zone_api_data) == "table" and #zone_api_data > 0 then
1033 -- Check if we have quest data 1035 for k = 1, #zone_api_data do
1034 if quest_id > 0 and _G.HaveQuestData(quest_id) and QuestUtils_IsQuestWorldQuest(quest_id) and api_data[j].mapID == bounty_maps[i] then 1036
1035 _G.C_TaskQuest.RequestPreloadRewardData(quest_id) 1037 -- Check if we had a valid API table returned to us
1036 RecordWorldQuestData(quest_id, api_data[j]) 1038 if zone_api_data[k] and type(zone_api_data[k]) == "table" and zone_api_data[k].questId then
1039 local quest_id = tonumber(zone_api_data[k].questId) or 0
1040
1041 -- Check if we have quest data and the quest is within this zone directly
1042 if quest_id > 0 and _G.HaveQuestData(quest_id) and QuestUtils_IsQuestWorldQuest(quest_id) and zone_api_data[k].mapID == zoneInfo.mapID then
1043 _G.C_TaskQuest.RequestPreloadRewardData(quest_id)
1044 RecordWorldQuestData(quest_id, zone_api_data[k])
1045 end
1046 end
1037 end 1047 end
1038 end 1048 end
1039 end 1049 end
1040 end 1050 end
1041 end 1051 end