Mercurial > wow > worldplan
comparison WorldPlan.lua @ 7:34d9fbf7af20
beginning of reflecting code path isolation in file structure
| author | Nenue |
|---|---|
| date | Sat, 22 Oct 2016 15:36:25 -0400 |
| parents | 232617b8bcd5 |
| children | 802abb8a10ea |
comparison
equal
deleted
inserted
replaced
| 6:48001b6a9496 | 7:34d9fbf7af20 |
|---|---|
| 21 local QuestPOI = WorldPlanPOIMixin | 21 local QuestPOI = WorldPlanPOIMixin |
| 22 local FilterPin = WorldPlanFilterPinMixin | 22 local FilterPin = WorldPlanFilterPinMixin |
| 23 local WP_VERSION = "1.0" | 23 local WP_VERSION = "1.0" |
| 24 | 24 |
| 25 local print = DEVIAN_WORKSPACE and function(...) _G.print('WP', ...) end or function() end | 25 local print = DEVIAN_WORKSPACE and function(...) _G.print('WP', ...) end or function() end |
| 26 local qprint = DEVIAN_WORKSPACE and function(...) _G.print('POI', ...) end or function() end | |
| 27 local iprint = DEVIAN_WORKSPACE and function(...) _G.print('ItemScan', ...) end or function() end | |
| 28 | |
| 26 local wipe, tremove, tinsert, pairs, floor, tContains = table.wipe, table.remove, table.insert, pairs, floor, tContains | 29 local wipe, tremove, tinsert, pairs, floor, tContains = table.wipe, table.remove, table.insert, pairs, floor, tContains |
| 27 local TQ_GetQuestInfoByQuestID = C_TaskQuest.GetQuestInfoByQuestID -- Return the name of a quest with a given ID | 30 local TQ_GetQuestInfoByQuestID = C_TaskQuest.GetQuestInfoByQuestID -- Return the name of a quest with a given ID |
| 28 local TQ_GetQuestsForPlayerByMapID = C_TaskQuest.GetQuestsForPlayerByMapID -- This function is not yet documented | 31 local TQ_GetQuestsForPlayerByMapID = C_TaskQuest.GetQuestsForPlayerByMapID -- This function is not yet documented |
| 29 local TQ_GetQuestTimeLeftMinutes = C_TaskQuest.GetQuestTimeLeftMinutes | 32 local TQ_GetQuestTimeLeftMinutes = C_TaskQuest.GetQuestTimeLeftMinutes |
| 30 local TQ_RequestPreloadRewardData = C_TaskQuest.RequestPreloadRewardData | 33 local TQ_RequestPreloadRewardData = C_TaskQuest.RequestPreloadRewardData |
| 43 local GetQuestLogRewardInfo, GetQuestLogRewardCurrencyInfo, GetMoneyString = GetQuestLogRewardInfo, GetQuestLogRewardCurrencyInfo, GetMoneyString | 46 local GetQuestLogRewardInfo, GetQuestLogRewardCurrencyInfo, GetMoneyString = GetQuestLogRewardInfo, GetQuestLogRewardCurrencyInfo, GetMoneyString |
| 44 | 47 |
| 45 local GetCurrentMapAreaID, GetMapNameByID, GetSuperTrackedQuestID = GetCurrentMapAreaID, GetMapNameByID, GetSuperTrackedQuestID | 48 local GetCurrentMapAreaID, GetMapNameByID, GetSuperTrackedQuestID = GetCurrentMapAreaID, GetMapNameByID, GetSuperTrackedQuestID |
| 46 local MC_GetNumZones, MC_GetZoneInfo = C_MapCanvas.GetNumZones, C_MapCanvas.GetZoneInfo | 49 local MC_GetNumZones, MC_GetZoneInfo = C_MapCanvas.GetNumZones, C_MapCanvas.GetZoneInfo |
| 47 | 50 |
| 48 local qprint = DEVIAN_WORKSPACE and function(...) _G.print('POI', ...) end or function() end | |
| 49 local iprint = DEVIAN_WORKSPACE and function(...) _G.print('ItemScan', ...) end or function() end | |
| 50 | 51 |
| 51 local SearchFaction | 52 local SearchFaction |
| 52 local PinBaseIndex = 1600 | 53 local PinBaseIndex = 1600 |
| 53 local ShowAllProfessionQuests = false | 54 local ShowAllProfessionQuests = false |
| 54 local DisplayContinentSummary = true | 55 local DisplayContinentSummary = true |
| 175 { filterKey= 'worldQuestType', filterValue = LE_QUEST_TAG_TYPE_PVP, label = 'PvP', texture = "Interface\\Icons\\Ability_PVP_GladiatorMedallion", spacing = 10 }, | 176 { filterKey= 'worldQuestType', filterValue = LE_QUEST_TAG_TYPE_PVP, label = 'PvP', texture = "Interface\\Icons\\Ability_PVP_GladiatorMedallion", spacing = 10 }, |
| 176 { filterKey= 'worldQuestType', filterValue = LE_QUEST_TAG_TYPE_PET_BATTLE, label = 'Pet Battle', texture = "Interface\\Icons\\PetJournalPortrait", }, | 177 { filterKey= 'worldQuestType', filterValue = LE_QUEST_TAG_TYPE_PET_BATTLE, label = 'Pet Battle', texture = "Interface\\Icons\\PetJournalPortrait", }, |
| 177 { filterKey= 'worldQuestType', filterValue = LE_QUEST_TAG_TYPE_DUNGEON, label = 'Dungeon', texture = "Interface\\LFGFRAME\\UI-LFR-PORTRAIT", }, | 178 { filterKey= 'worldQuestType', filterValue = LE_QUEST_TAG_TYPE_DUNGEON, label = 'Dungeon', texture = "Interface\\LFGFRAME\\UI-LFR-PORTRAIT", }, |
| 178 } | 179 } |
| 179 | 180 |
| 180 local PIN_TIME_CONTEXT = { | |
| 181 {max = 60, | |
| 182 r=1, g=0.25, b =0, format = function (minutes) return '|cFFFF4400'.. minutes .. 'm' end, | |
| 183 continentAlpha = 1, swipeTime = 1440, | |
| 184 }, | |
| 185 {max = 240, | |
| 186 r=1, g=.5, b=0, format = function(minutes) return '|cFFFF4400'.. floor(minutes/60) .. 'h' end, | |
| 187 continentAlpha = 1, swipeTime = 1440, | |
| 188 }, | |
| 189 {max = 1440, | |
| 190 r=1, g=1, b=0, format = function(minutes) return '|cFFFFFF00'.. floor(minutes/60) .. 'h' end, | |
| 191 continentAlpha = .55, swipeTime = 1440 | |
| 192 }, | |
| 193 {max = 10081, | |
| 194 r=0, g=1, b=0, | |
| 195 continentAlpha = .3, | |
| 196 }, -- 7 days + 1 minute | |
| 197 } | |
| 198 | |
| 199 local numPins = 0 | 181 local numPins = 0 |
| 200 local QuestsByZone = {} | 182 local QuestsByZone = {} |
| 201 local QuestsByFaction = {} | 183 local QuestsByFaction = {} |
| 202 local QuestsByReward = {} | 184 local QuestsByReward = {} |
| 203 local QuestsByTag = {} | 185 local QuestsByTag = {} |
| 497 else | 479 else |
| 498 local name = 'WorldPlanQuestMarker' .. NumPinFrames | 480 local name = 'WorldPlanQuestMarker' .. NumPinFrames |
| 499 --print('|cFF00FF00Creating', name) | 481 --print('|cFF00FF00Creating', name) |
| 500 pin = CreateFrame('Frame', name, WorldMapPOIFrame, 'WorldPlanQuestPin') | 482 pin = CreateFrame('Frame', name, WorldMapPOIFrame, 'WorldPlanQuestPin') |
| 501 pin:SetFrameStrata('HIGH') | 483 pin:SetFrameStrata('HIGH') |
| 502 pin:SetScript('OnEnter', function(self) | |
| 503 TaskPOI_OnEnter(self) | |
| 504 end) | |
| 505 pin:SetScript('OnLeave', function(self) | |
| 506 TaskPOI_OnLeave(self) | |
| 507 end) | |
| 508 pin:SetScript('OnMouseDown', TaskPOI_OnClick) | |
| 509 | 484 |
| 510 NumPinFrames = NumPinFrames + 1 | 485 NumPinFrames = NumPinFrames + 1 |
| 511 | 486 |
| 512 --pin.iconBorder:SetVertexColor(0,0,0,1) | 487 --pin.iconBorder:SetVertexColor(0,0,0,1) |
| 513 | 488 |
| 517 pin.currentWidth = nil | 492 pin.currentWidth = nil |
| 518 | 493 |
| 519 -- used by TaskPOI_x scripts | 494 -- used by TaskPOI_x scripts |
| 520 pin.questID = questID | 495 pin.questID = questID |
| 521 pin.worldQuest = true | 496 pin.worldQuest = true |
| 497 | |
| 498 pin.Reset = function(self) | |
| 499 WorldQuests:GetPinByQuestID(questID) | |
| 500 end | |
| 522 else | 501 else |
| 523 --print('|cFF00FF00Using', pin:GetName()) | 502 --print('|cFF00FF00Using', pin:GetName()) |
| 524 end | 503 end |
| 525 | 504 |
| 526 -- set display flags accordingly | 505 -- set display flags accordingly |
| 881 local tooltip = CreateFrame ("GameTooltip", "VeneerWorldQuestsScanner", nil, "GameTooltipTemplate") | 860 local tooltip = CreateFrame ("GameTooltip", "VeneerWorldQuestsScanner", nil, "GameTooltipTemplate") |
| 882 local tooltipLine1 = _G['VeneerWorldQuestsScannerTextLeft1'] | 861 local tooltipLine1 = _G['VeneerWorldQuestsScannerTextLeft1'] |
| 883 local tooltipLine3 = _G['VeneerWorldQuestsScannerTextLeft3'] | 862 local tooltipLine3 = _G['VeneerWorldQuestsScannerTextLeft3'] |
| 884 local GetTime, mod = GetTime, mod | 863 local GetTime, mod = GetTime, mod |
| 885 | 864 |
| 886 function QuestPOI:OnLoad() | 865 |
| 887 self:RegisterEvent('SUPER_TRACKED_QUEST_CHANGED') | 866 |
| 888 end | 867 |
| 889 | |
| 890 function QuestPOI:OnEvent(event, ...) | |
| 891 if event == 'SUPER_TRACKED_QUEST_CHANGED' then | |
| 892 if self:IsVisible() then | |
| 893 self:Refresh() | |
| 894 end | |
| 895 end | |
| 896 end | |
| 897 | |
| 898 local PIN_UPDATE_DELAY = .016 | |
| 899 local TOP_PIN_ID | |
| 900 function QuestPOI:OnUpdate (sinceLast) | |
| 901 -- control update check intervals | |
| 902 self.throttle = (self.throttle or PIN_UPDATE_DELAY) - sinceLast | |
| 903 if self.throttle <= 0 then | |
| 904 -- factor overtime into the throttle timer | |
| 905 self.throttle = PIN_UPDATE_DELAY - self.throttle | |
| 906 else | |
| 907 return | |
| 908 end | |
| 909 | |
| 910 -- query for reward data if it wasn't found in the original scan | |
| 911 local questID = self.questID | |
| 912 if self.isPending then | |
| 913 WorldQuests:GetPinByQuestID(questID) | |
| 914 if not (self.PendingFade:IsPlaying() or self.isAnimating) then | |
| 915 self.PendingFade:Play() | |
| 916 end | |
| 917 return | |
| 918 else | |
| 919 if self.PendingFade:IsPlaying() then | |
| 920 self.PendingFade:Stop() | |
| 921 end | |
| 922 end | |
| 923 | |
| 924 if self.hasUpdate then | |
| 925 self:Refresh() | |
| 926 self.hasUpdate = nil | |
| 927 end | |
| 928 | |
| 929 -- update time elements | |
| 930 local tl = self.timeThreschold | |
| 931 local timeLeft = TQ_GetQuestTimeLeftMinutes(questID) | |
| 932 if timeLeft > 0 then | |
| 933 for i, context in ipairs(PIN_TIME_CONTEXT) do | |
| 934 if i > self.TimeleftStage then | |
| 935 self.timeLabel:SetText(nil) | |
| 936 break | |
| 937 end | |
| 938 | |
| 939 | |
| 940 if timeLeft <= context.max then | |
| 941 if tl ~= i then | |
| 942 tl = i | |
| 943 end | |
| 944 | |
| 945 if context.format then | |
| 946 self.timeLabel:SetText(context.format(timeLeft)) | |
| 947 else | |
| 948 self.timeLabel:SetText(nil) | |
| 949 end | |
| 950 break | |
| 951 end | |
| 952 end | |
| 953 else | |
| 954 -- remove self in a timely manner | |
| 955 if not self.isPending then | |
| 956 self:Hide() | |
| 957 end | |
| 958 end | |
| 959 self.timeThreschold = tl | |
| 960 | |
| 961 if self:IsMouseOver() then | |
| 962 self.MouseGlow:Show() | |
| 963 else | |
| 964 self.MouseGlow:Hide() | |
| 965 end | |
| 966 end | |
| 967 | |
| 968 function QuestPOI:OnShow () | |
| 969 qprint('|cFFFFFF00["'..tostring(self.title)..'"]|r:OnShow()') | |
| 970 -- pop this on principle | |
| 971 self:Refresh() | |
| 972 end | |
| 973 function QuestPOI:OnHide() | |
| 974 --qprint('|cFFFFFF00["'..tostring(self.title)..'"]|r:OnHide()') | |
| 975 end | |
| 976 function QuestPOI:Refresh () | 868 function QuestPOI:Refresh () |
| 977 print('|cFF00FF88["'..tostring(self.title)..'"]|r:Refresh()', tostring(self.title), "|T"..tostring(self.itemTexture)..":12:12|t", tostring(self.itemName)) | 869 print('|cFF00FF88["'..tostring(self.title)..'"]|r:Refresh()', tostring(self.title), "|T"..tostring(self.itemTexture)..":12:12|t", tostring(self.itemName)) |
| 978 qprint(self.style) | 870 qprint(self.style) |
| 979 | 871 |
| 980 local questID = self.questId | 872 local questID = self.questId |
| 1033 self.label:SetText(nil) | 925 self.label:SetText(nil) |
| 1034 end | 926 end |
| 1035 qprint('|cFF88FF00updated', questID, self.title, self.rewardType, (style.showNumber and self.itemNumber) or '') | 927 qprint('|cFF88FF00updated', questID, self.title, self.rewardType, (style.showNumber and self.itemNumber) or '') |
| 1036 end | 928 end |
| 1037 | 929 |
| 1038 function QuestPOI:SetAnchor(frame, mapID, mapWidth, mapHeight) | 930 |
| 1039 self:ClearAllPoints() | |
| 1040 local dX, dY = TQ_GetQuestLocation(self.questID, mapID) | |
| 1041 if not dX or dX == 0 then | |
| 1042 local _, x, y = QuestPOIGetIconInfo(self.questID) | |
| 1043 if x and floor(x) ~= 0 then | |
| 1044 dX, dY = x, y | |
| 1045 else | |
| 1046 dX, dY = self.x, self.y | |
| 1047 end | |
| 1048 end | |
| 1049 self.x = dX | |
| 1050 self.y = dY | |
| 1051 | |
| 1052 print(' |cFF00FF00'..self.questID..':|r', format("%0.2f %0.2f", dX, dY)) | |
| 1053 | |
| 1054 local pX = (dX * mapWidth) | |
| 1055 local pY = (-dY * mapHeight) | |
| 1056 | |
| 1057 self:SetParent(WorldMapPOIFrame) | |
| 1058 self:SetPoint('CENTER', frame, 'TOPLEFT', pX, pY) | |
| 1059 end | |
| 1060 | 931 |
| 1061 | 932 |
| 1062 function QuestPOI:IsShowable (ignoreFilters) | 933 function QuestPOI:IsShowable (ignoreFilters) |
| 1063 local qType = self.worldQuestType | 934 local qType = self.worldQuestType |
| 1064 local rType = self.rewardType | 935 local rType = self.rewardType |
| 1157 else | 1028 else |
| 1158 self.icon:Show() | 1029 self.icon:Show() |
| 1159 end | 1030 end |
| 1160 | 1031 |
| 1161 end | 1032 end |
| 1162 | |
| 1163 | 1033 |
| 1164 | 1034 |
| 1165 function FilterBar:OnEvent(event) | 1035 function FilterBar:OnEvent(event) |
| 1166 if event == 'QUEST_LOG_UPDATE' then | 1036 if event == 'QUEST_LOG_UPDATE' then |
| 1167 self:Refresh() | 1037 self:Refresh() |
