comparison FilterBar.lua @ 33:be4db60219ca

WorldPlan: - Toggling a reward filter cancels out other types by default. Use right mouse to clear. - Fixed filter bar info falling out of sync after player-triggered world map updates. ClassPlan: - Available missions are now recorded; the mission list can be toggled between in-progress and available by clicking the heading.
author Nenue
date Wed, 02 Nov 2016 17:25:07 -0400
parents e8679ecb48d8
children 21bcff08b0f4
comparison
equal deleted inserted replaced
32:e8679ecb48d8 33:be4db60219ca
3 -- Created: 10/27/2016 8:55 PM 3 -- Created: 10/27/2016 8:55 PM
4 -- %file-revision% 4 -- %file-revision%
5 -- 5 --
6 6
7 local print = DEVIAN_WORKSPACE and function(...) _G.print('FilterBar', ...) end or nop 7 local print = DEVIAN_WORKSPACE and function(...) _G.print('FilterBar', ...) end or nop
8 local wprint = DEVIAN_WORKSPACE and function(...) _G.print('WP', ...) end or function() end
8 local wipe, ipairs, pairs = table.wipe, ipairs, pairs 9 local wipe, ipairs, pairs = table.wipe, ipairs, pairs
9 10
10 local REWARD_CASH = WORLD_QUEST_REWARD_TYPE_FLAG_GOLD 11 local REWARD_CASH = WORLD_QUEST_REWARD_TYPE_FLAG_GOLD
11 local REWARD_ARTIFACT_POWER = WORLD_QUEST_REWARD_TYPE_FLAG_ARTIFACT_POWER 12 local REWARD_ARTIFACT_POWER = WORLD_QUEST_REWARD_TYPE_FLAG_ARTIFACT_POWER
12 local REWARD_GEAR = WORLD_QUEST_REWARD_TYPE_FLAG_EQUIPMENT 13 local REWARD_GEAR = WORLD_QUEST_REWARD_TYPE_FLAG_EQUIPMENT
16 17
17 local LE_QUEST_TAG_TYPE_PVP = LE_QUEST_TAG_TYPE_PVP 18 local LE_QUEST_TAG_TYPE_PVP = LE_QUEST_TAG_TYPE_PVP
18 local LE_QUEST_TAG_TYPE_PET_BATTLE = LE_QUEST_TAG_TYPE_PET_BATTLE 19 local LE_QUEST_TAG_TYPE_PET_BATTLE = LE_QUEST_TAG_TYPE_PET_BATTLE
19 local LE_QUEST_TAG_TYPE_DUNGEON = LE_QUEST_TAG_TYPE_DUNGEON 20 local LE_QUEST_TAG_TYPE_DUNGEON = LE_QUEST_TAG_TYPE_DUNGEON
20 local LE_QUEST_TAG_TYPE_PROFESSION = LE_QUEST_TAG_TYPE_PROFESSION 21 local LE_QUEST_TAG_TYPE_PROFESSION = LE_QUEST_TAG_TYPE_PROFESSION
21 local LE_QUEST_TAG_TYPE_NORMAL = LE_QUEST_TAG_TYPE_NORMAL 22
23 local familiars = {
24 [42159] = {npc = 106552, name = 'Nightwatcher Merayl'},
25 [40277] = {npc = 97804, name = 'Tiffany Nelson'},
26 [40298] = {npc = 99182, name = 'Sir Galveston'},
27 [40282] = {npc= 99150, name = 'Grixis Tinypop'},
28 [40278] = {npc = 98270, name = 'Robert Craig'},
29 [48195] = {npc = 105250, name = 'Aulier'},
30 [41990] = {npc = 105674, name = 'Varenne'},
31 [41860] = {npc = 104970, name = 'Xorvasc'},
32 [40299] = {npc = 99210, name = 'Bodhi Sunwayver'},
33 [42442] = {npc = 107489, name = 'Amalia'},
34 [40280] = {npc = 99077, name = 'Bredda Tenderhide'},
35 [41687] = {npc = 104553, name = 'Odrogg'},
36 [41944] = {npc = 105455, name = 'Trapper Jarrun'},
37 [40337] = {npc = 97709, name = 'Master Tamer Flummox'},
38 [40279] = {npc = 99035, name = 'Durian Strongfruit'}
39 }
40 local familiars_id = 9696
41
22 local DEFAULT_FILTER_LAYOUT = { 42 local DEFAULT_FILTER_LAYOUT = {
23 PinSize = 22, 43 PinSize = 22,
24 Border = 3, 44 Border = 3,
25 TrackingBorder = 2, 45 TrackingBorder = 2,
26 TagSize = 12, 46 TagSize = 12,
49 buttons = {}, 69 buttons = {},
50 } 70 }
51 WorldPlanFilterPinMixin = {} 71 WorldPlanFilterPinMixin = {}
52 72
53 function WorldPlanSummaryMixin:OnLoad() 73 function WorldPlanSummaryMixin:OnLoad()
54 self:RegisterEvent('QUEST_LOG_UPDATE')
55 self:RegisterEvent('WORLD_MAP_UPDATE')
56
57 WorldPlan:AddHandler(self, defaults) 74 WorldPlan:AddHandler(self, defaults)
58
59 for index, info in ipairs(DEFAULT_FILTER_LIST) do 75 for index, info in ipairs(DEFAULT_FILTER_LIST) do
60 info.zone = DEFAULT_FILTER_LAYOUT 76 info.zone = DEFAULT_FILTER_LAYOUT
61 info.continent = DEFAULT_FILTER_LAYOUT 77 info.continent = DEFAULT_FILTER_LAYOUT
62 info.pinMask = "Interface\\Minimap\\UI-Minimap-Background" 78 info.pinMask = "Interface\\Minimap\\UI-Minimap-Background"
63 79
66 82
67 end 83 end
68 84
69 85
70 function WorldPlanSummaryMixin:OnEvent(event) 86 function WorldPlanSummaryMixin:OnEvent(event)
71 self:Refresh() 87 print('|cFF00FF88'..self:GetName()..':OnEvent()', event)
88 self.isStale = true
72 end 89 end
73 90
74 local bountyIndex 91 local bountyIndex
75 local debug_headers = {} 92 local debug_headers = {}
76 93
77 function WorldPlanSummaryMixin:Setup() 94 function WorldPlanSummaryMixin:Setup()
95 print('|cFF00FF88'..self:GetName()..':Setup()')
78 self:GetFilters() 96 self:GetFilters()
79 end 97 end
80 98
81 99
82 function WorldPlanSummaryMixin:OnEvent(event,...)
83 self.isStale = true
84 end
85 function WorldPlanSummaryMixin:OnUpdate() 100 function WorldPlanSummaryMixin:OnUpdate()
86 if self.isStale then 101 if self.isStale then
102 wprint('|cFF00FF00pushing update')
87 self:Refresh() 103 self:Refresh()
88 end 104 end
89 end 105 end
90 106
91 function WorldPlanSummaryMixin:OnShow() 107 function WorldPlanSummaryMixin:OnShow()
92 self:Refresh() 108 print('|cFF00FF88'..self:GetName()..':OnShow()')
109 if self.isStale then
110 self:Refresh()
111 end
93 end 112 end
94 113
95 function WorldPlanSummaryMixin:GetFilters() 114 function WorldPlanSummaryMixin:GetFilters()
96 115
116 print('|cFF00FFFF'..self:GetName()..':GetFilters()')
97 117
98 wipe(self.filterList) 118 wipe(self.filterList)
99 119
100 for index, info in ipairs(DEFAULT_FILTER_LIST) do 120 for index, info in ipairs(DEFAULT_FILTER_LIST) do
101 tinsert(self.filterList, info) 121 tinsert(self.filterList, info)
125 function WorldPlanSummaryMixin:Reset() 145 function WorldPlanSummaryMixin:Reset()
126 self.pinLayout = self:GetTypeInfo(255) 146 self.pinLayout = self:GetTypeInfo(255)
127 self:GetFilters() 147 self:GetFilters()
128 end 148 end
129 149
130 function WorldPlanSummaryMixin:Refresh(forced) 150 function WorldPlanSummaryMixin:Refresh()
131 self:Update(forced) 151 self:Update()
132 end 152 end
133 153
134 local filterFill = "Interface\\BUTTONS\\YELLOWORANGE64" 154 local filterFill = "Interface\\BUTTONS\\YELLOWORANGE64"
135 local filterMask = "Interface\\Minimap\\UI-Minimap-Background" 155 local filterMask = "Interface\\Minimap\\UI-Minimap-Background"
136 156
137 local questResults = {{}} 157 local questResults = {{}}
138 function WorldPlanSummaryMixin:Update(forced) 158 function WorldPlanSummaryMixin:Update()
139 local blocks = self.buttons 159 local blocks = self.buttons
140 local relativeFrame = WorldMapFrame.UIElementsFrame.TrackingOptionsButton 160 local relativeFrame = WorldMapFrame.UIElementsFrame.TrackingOptionsButton
141 local numHeaders = 0 161 local numHeaders = 0
142 print('|cFF00FF88'..tostring(self)..':Refresh()|r', 'currentMap=',self.currentMapID) 162 print('|cFF00FF88'..self:GetName()..':Update()|r', 'currentMap=',WorldPlan.currentMapID)
143 163
144 164
145 local quests = WorldPlanQuests.QuestsByZone[self.currentMapID] or WorldPlanQuests.QuestsByID 165 local quests = WorldPlanQuests.QuestsByZone[WorldPlan.currentMapID] or WorldPlanQuests.QuestsByID
146 local foundQuests = questResults[1] 166 local foundQuests = questResults[1]
147 for index, info in ipairs(self.filterList) do 167 for index, info in ipairs(self.filterList) do
148 local numQuests = 0 168 local numQuests = 0
149 local resultIndex = numHeaders + 1 169 local resultIndex = numHeaders + 1
150 questResults[resultIndex] = questResults[resultIndex] or {} 170 questResults[resultIndex] = questResults[resultIndex] or {}
265 285
266 local r, g, b, a = 1,1,1,1 286 local r, g, b, a = 1,1,1,1
267 local desaturated = false 287 local desaturated = false
268 if self.cVar then 288 if self.cVar then
269 self.iconBorder:SetVertexColor(1, 1, 1, 1) 289 self.iconBorder:SetVertexColor(1, 1, 1, 1)
270 if GetCVarBool(self.cVar) == true then 290 if GetCVarBool(self.cVar) then
271 self.icon:SetVertexColor(1,1,1,1) 291 self.icon:SetVertexColor(1,1,1,1)
272 self:SetAlpha(1) 292 self:SetAlpha(1)
273 else 293 else
274 self.icon:SetVertexColor(.5, .5, .5, 1) 294 self.icon:SetVertexColor(.5, .5, .5, 1)
275 self:SetAlpha(0.5) 295 self:SetAlpha(0.5)
298 end 318 end
299 319
300 function WorldPlanFilterPinMixin:OnUpdate () 320 function WorldPlanFilterPinMixin:OnUpdate ()
301 end 321 end
302 322
323
303 function WorldPlanFilterPinMixin:OnLeave () 324 function WorldPlanFilterPinMixin:OnLeave ()
304 if GameTooltip:IsOwned(self) then 325 if GameTooltip:IsOwned(self) then
305 GameTooltip:Hide() 326 GameTooltip:Hide()
306 end 327 end
307 end 328 end
318 local operation = opPrefix 339 local operation = opPrefix
319 340
320 341
321 if not filterKey then 342 if not filterKey then
322 wipe(WorldPlan.UsedFilters) 343 wipe(WorldPlan.UsedFilters)
344 for i, info in ipairs(DEFAULT_FILTER_LIST) do
345 if info.cVar then
346 SetCVar(info.cVar, 1)
347 end
348 end
349
323 elseif self.cVar then 350 elseif self.cVar then
324 SetCVar(self.cVar, (GetCVarBool(self.cVar) and 0) or 1) 351 for i, info in ipairs(DEFAULT_FILTER_LIST) do
352 if info.cVar then
353 if (info.cVar ~= self.cVar) and (button == 'LeftButton') then
354 SetCVar(info.cVar, 0)
355 else
356 SetCVar(info.cVar, 1)
357 end
358 end
359 end
325 else 360 else
326 local setInclude = (button == 'LeftButton') 361 local setInclude = (button == 'LeftButton')
327 local flushValue 362 local flushValue
328 print('') 363 print('')
329 if WorldPlan.UsedFilters[filterKey] == filterValue then 364 if WorldPlan.UsedFilters[filterKey] == filterValue then
330 WorldPlan.UsedFilters[filterKey] = nil 365 WorldPlan.UsedFilters[filterKey] = nil
331 else 366 else
332 WorldPlan.UsedFilters[filterKey] = filterValue 367 WorldPlan.UsedFilters[filterKey] = filterValue
333 end 368 end
334 end 369 end
335 WorldPlan:Refresh() 370 WorldPlan:Refresh(true)
336 end 371 end