Mercurial > wow > worldplan
comparison WorldQuests.lua @ 71:d6c0bed32c51
fixed bounty highlighting and changed quests matching the selected bounty to have a yellow highlight, while quests matching any ongoing bounty are highlighted blue
author | Nenue |
---|---|
date | Wed, 05 Apr 2017 12:44:19 -0400 |
parents | 31de7e9e7849 |
children | 6db0b9696936 |
comparison
equal
deleted
inserted
replaced
70:bb2baedae81f | 71:d6c0bed32c51 |
---|---|
78 db.QuestsByZone[mapID] = {} | 78 db.QuestsByZone[mapID] = {} |
79 end | 79 end |
80 for target, arg in pairs(callbacks) do | 80 for target, arg in pairs(callbacks) do |
81 print(type(target)) | 81 print(type(target)) |
82 if type(target) == 'table' then | 82 if type(target) == 'table' then |
83 local callerName = target:GetName() | 83 local callerName = target:GetName() or tostring(target) |
84 for name, method in pairs(arg) do | 84 for name, method in pairs(arg) do |
85 print(callerName, arg) | 85 print(callerName, arg) |
86 hooksecurefunc(target, name, function(...) | 86 hooksecurefunc(target, name, function(...) |
87 self:OnSecureHook(callerName .. '.' .. arg, method, ...) | 87 self:OnSecureHook(callerName .. '.' .. name, method, ...) |
88 end) | 88 end) |
89 end | 89 end |
90 else | 90 else |
91 hooksecurefunc(target, function(...) | 91 hooksecurefunc(target, function(...) |
92 self:OnSecureHook(target, arg, ...) | 92 self:OnSecureHook(target, arg, ...) |
136 WorldQuests:RefreshIfChanged() | 136 WorldQuests:RefreshIfChanged() |
137 end | 137 end |
138 callbacks[WorldMapFrame.UIElementsFrame.BountyBoard] = { | 138 callbacks[WorldMapFrame.UIElementsFrame.BountyBoard] = { |
139 SetSelectedBountyIndex = function(WorldQuests) | 139 SetSelectedBountyIndex = function(WorldQuests) |
140 WorldQuests:UpdateBountyInfo() | 140 WorldQuests:UpdateBountyInfo() |
141 WorldQuests:Refresh(true) | |
141 end | 142 end |
142 } | 143 } |
143 callbacks[WorldMapFrame.UIElementsFrame.ActionButton] = { | 144 callbacks[WorldMapFrame.UIElementsFrame.ActionButton] = { |
144 UpdateCastingState = function(WorldQuests) | 145 UpdateCastingState = function(WorldQuests) |
145 WorldQuests:Refresh(true) | 146 WorldQuests:Refresh(true) |
147 } | 148 } |
148 | 149 |
149 | 150 |
150 local GetQuestBountyInfoForMapID, GetQuestLogTitle, GetQuestLogIndexByID, IsQuestFlaggedCompleted = GetQuestBountyInfoForMapID, GetQuestLogTitle, GetQuestLogIndexByID, IsQuestFlaggedCompleted | 151 local GetQuestBountyInfoForMapID, GetQuestLogTitle, GetQuestLogIndexByID, IsQuestFlaggedCompleted = GetQuestBountyInfoForMapID, GetQuestLogTitle, GetQuestLogIndexByID, IsQuestFlaggedCompleted |
151 function Module:UpdateBountyInfo() | 152 function Module:UpdateBountyInfo() |
153 print('|cFF00FF88BountyInfo()|r') | |
152 wipe(db.BountyInfo) | 154 wipe(db.BountyInfo) |
153 db.selectedBounty = nil | 155 db.selectedBounty = nil |
154 | 156 |
155 local selectedBounty = WorldMapFrame.UIElementsFrame.BountyBoard:GetSelectedBountyIndex() | 157 local selectedBounty = WorldMapFrame.UIElementsFrame.BountyBoard:GetSelectedBountyIndex() |
156 local bounties, numBounties = GetQuestBountyInfoForMapID(db.currentMapID) | 158 local bounties, numBounties = GetQuestBountyInfoForMapID(db.currentMapID) |
157 | 159 |
158 for index, data in ipairs(bounties) do | 160 for index, data in ipairs(bounties) do |
159 if data.factionID then | 161 if data.factionID then |
160 data.title = GetQuestLogTitle(GetQuestLogIndexByID(data.questID)) | 162 data.title = GetQuestLogTitle(GetQuestLogIndexByID(data.questID)) |
161 data.complete = IsQuestFlaggedCompleted(data.questID) | 163 data.complete = IsQuestFlaggedCompleted(data.questID) |
162 db.BountyInfo[data.factionID] = data | 164 if not data.complete then |
163 if index == selectedBounty then | 165 db.BountyInfo[data.factionID] = data |
164 db.selectedBounty = data | 166 print('bounty', data.factionID, data.title, data.complete) |
165 end | 167 if index == selectedBounty then |
168 db.selectedBounty = data | |
169 end | |
170 end | |
171 | |
166 end | 172 end |
167 end | 173 end |
168 | 174 |
169 for questID, pin in pairs(db.QuestsByID) do | 175 for questID, pin in pairs(db.QuestsByID) do |
170 local doUpdate | 176 local doUpdate |
171 if pin.factionID and db.BountyInfo[pin.factionID] then | 177 if pin.factionID then |
172 if not pin.isCriteria then | 178 if db.BountyInfo[pin.factionID] then |
179 print(pin.questID, pin.factionID, db.BountyInfo[pin.factionID], pin.isCriteria) | |
173 pin.isCriteria = true | 180 pin.isCriteria = true |
174 doUpdate = true | 181 doUpdate = true |
175 end | 182 else |
176 else | |
177 if pin.isCriteria then | |
178 doUpdate = true | 183 doUpdate = true |
179 pin.isCriteria = nil | 184 pin.isCriteria = nil |
180 end | 185 end |
181 end | 186 |
187 end | |
188 | |
189 | |
182 if doUpdate then | 190 if doUpdate then |
183 if pin:IsVisible() then | 191 if pin:IsVisible() then |
184 pin:Refresh() | 192 pin:Refresh() |
185 else | 193 else |
186 pin.isStale = true | 194 pin.isStale = true |
517 while pin do | 525 while pin do |
518 pin:CheckFilterRules() | 526 pin:CheckFilterRules() |
519 | 527 |
520 local scaleFactor = SCALE_FACTORS[(pin.dataLoaded and not pin.filtered) and scaleConstant or 1] | 528 local scaleFactor = SCALE_FACTORS[(pin.dataLoaded and not pin.filtered) and scaleConstant or 1] |
521 print(pin.title, pin.dataLoaded and not pin.filtered, scaleFactor) | 529 print(pin.title, pin.dataLoaded and not pin.filtered, scaleFactor) |
522 pin:SetAnchor(nil, pin.x, pin.y, self.hostWidth, self.hostHeight, scaleFactor) | 530 if pin.used then |
523 | 531 pin:SetAnchor(nil, pin.x, pin.y, self.hostWidth, self.hostHeight, scaleFactor) |
524 if pin.isNew then | 532 if pin.isNew then |
525 pin:OnShow() | 533 pin:OnShow() |
526 end | 534 end |
527 | 535 end |
528 | 536 |
529 pin = tremove(db.UpdatedPins) | 537 pin = tremove(db.UpdatedPins) |
530 | 538 |
531 end | 539 end |
532 end | 540 end |
652 pin.hideReason = "Not used in map area " .. (db.currentMapID) | 660 pin.hideReason = "Not used in map area " .. (db.currentMapID) |
653 pin:HideFrames() | 661 pin:HideFrames() |
654 end | 662 end |
655 end | 663 end |
656 | 664 |
665 | |
666 self:UpdateBountyInfo() | |
667 | |
657 print(numShown, 'shown', numLoaded, 'loaded') | 668 print(numShown, 'shown', numLoaded, 'loaded') |
658 if numShown > numLoaded then | 669 if numShown > numLoaded then |
659 self.Status:Show() | 670 self.Status:Show() |
660 end | 671 end |
661 | 672 |