Mercurial > wow > worldplan
comparison QuestPOI.lua @ 9:a2b623043970 v1.0-rc
WorldQuests:
- Filter interface controls reworked: Left-Click toggles inclusive filtering, right-click toggle exclusion, and holding ctrl or shift will flip or reset the other filters of that type respectively.
- Fix QuestPOI texture masks disappearing when toggling filter options
* new masks aren't applied until SetTexture() is called, making a seemingly redundant call necessary for the change to manifest
- Implemented configuration data storage and retrieval; tracking menu options should actually do something now.
- Ignore remaining time for Profession quests that aren't part of the player's profession loadout
- Alternate tooltip data appears for Pet Battle quests involved in the Family Familar achievement. A list of outstanding criteria is provided in the POI tooltip, and the quest name is highlighted in the filter tooltip.
ClassPlan:
- actually handle the mission complete icon
| author | Nenue |
|---|---|
| date | Sun, 23 Oct 2016 17:18:31 -0400 |
| parents | 802abb8a10ea |
| children | 4a7e89bffbcb |
comparison
equal
deleted
inserted
replaced
| 8:802abb8a10ea | 9:a2b623043970 |
|---|---|
| 3 -- Created: 10/1/2016 7:21 PM | 3 -- Created: 10/1/2016 7:21 PM |
| 4 -- %file-revision% | 4 -- %file-revision% |
| 5 -- | 5 -- |
| 6 local TQ_GetQuestLocation = C_TaskQuest.GetQuestLocation | 6 local TQ_GetQuestLocation = C_TaskQuest.GetQuestLocation |
| 7 local TQ_GetQuestTimeLeftMinutes = C_TaskQuest.GetQuestTimeLeftMinutes | 7 local TQ_GetQuestTimeLeftMinutes = C_TaskQuest.GetQuestTimeLeftMinutes |
| 8 local TQ_IsActive = C_TaskQuest.IsActive | |
| 8 local QuestPOIGetIconInfo, WorldMapPOIFrame = QuestPOIGetIconInfo, WorldMapPOIFrame | 9 local QuestPOIGetIconInfo, WorldMapPOIFrame = QuestPOIGetIconInfo, WorldMapPOIFrame |
| 9 | 10 |
| 10 local print = DEVIAN_WORKSPACE and function(...) _G.print('WP', ...) end or function() end | 11 local print = DEVIAN_WORKSPACE and function(...) _G.print('WP', ...) end or function() end |
| 11 local qprint = DEVIAN_WORKSPACE and function(...) _G.print('POI', ...) end or function() end | 12 local qprint = DEVIAN_WORKSPACE and function(...) _G.print('POI', ...) end or function() end |
| 12 local iprint = DEVIAN_WORKSPACE and function(...) _G.print('ItemScan', ...) end or function() end | 13 local iprint = DEVIAN_WORKSPACE and function(...) _G.print('ItemScan', ...) end or function() end |
| 13 local QuestPOI = WorldPlanPOIMixin | 14 local QuestPOI = WorldPlanPOIMixin |
| 15 | |
| 16 local ICON_UNKNOWN = "Interface\\ICONS\\inv_misc_questionmark" | |
| 17 local ICON_MONEY = "Interface\\Buttons\\UI-GroupLoot-Coin-Up" | |
| 18 | |
| 19 local POI_BORDER_MASK = "Interface\\Minimap\\UI-Minimap-Background" | |
| 20 local POI_BORDER_FILL = "Interface\\BUTTONS\\YELLOWORANGE64" | |
| 21 local POI_BORDER_BLUE = "Interface\\BUTTONS\\GRADBLUE" | |
| 22 local POI_BORDER_RED = "Interface\\BUTTONS\\RedGrad64" | |
| 23 local POI_BORDER_YELLOW = "Interface\\BUTTONS\\YELLOWORANGE64" | |
| 24 local POI_BORDER_GREEN = "Interface\\BUTTONS\\GREENGRAD64" | |
| 14 | 25 |
| 15 local familiars = { | 26 local familiars = { |
| 16 [42159] = {npc = 106552, name = 'Nightwatcher Merayl'}, | 27 [42159] = {npc = 106552, name = 'Nightwatcher Merayl'}, |
| 17 [40277] = {npc = 97804, name = 'Tiffany Nelson'}, | 28 [40277] = {npc = 97804, name = 'Tiffany Nelson'}, |
| 18 [40298] = {npc = 99182, name = 'Sir Galveston'}, | 29 [40298] = {npc = 99182, name = 'Sir Galveston'}, |
| 49 r=0, g=1, b=0, | 60 r=0, g=1, b=0, |
| 50 continentAlpha = .3, | 61 continentAlpha = .3, |
| 51 }, -- 7 days + 1 minute | 62 }, -- 7 days + 1 minute |
| 52 } | 63 } |
| 53 | 64 |
| 65 -- update a masked texture without messing up its blending mask | |
| 66 local SetMaskedTexture = function(region, file, mask) | |
| 67 mask = mask or POI_BORDER_MASK | |
| 68 region:SetMask(nil) | |
| 69 region:SetTexture(file) | |
| 70 region:SetMask(mask) | |
| 71 end | |
| 54 | 72 |
| 55 function QuestPOI:OnEnter() | 73 function QuestPOI:OnEnter() |
| 56 local completed = select(4,GetAchievementInfo(familiars_id)) | 74 local completed = select(4,GetAchievementInfo(familiars_id)) |
| 57 if not completed then | 75 if not completed then |
| 58 if self.worldQuestType == LE_QUEST_TAG_TYPE_PET_BATTLE and familiars[self.questID] then | 76 if self.worldQuestType == LE_QUEST_TAG_TYPE_PET_BATTLE and familiars[self.questID] then |
| 116 end | 134 end |
| 117 end | 135 end |
| 118 self.x = dX | 136 self.x = dX |
| 119 self.y = dY | 137 self.y = dY |
| 120 | 138 |
| 121 print(' |cFF00FF00'..self.questID..':|r', format("%0.2f %0.2f", dX, dY)) | 139 qprint(' |cFF00FF00'..self.questID..':|r', format("%0.2f %0.2f", dX, dY)) |
| 122 | 140 |
| 123 local pX = (dX * mapWidth) | 141 local pX = (dX * mapWidth) |
| 124 local pY = (-dY * mapHeight) | 142 local pY = (-dY * mapHeight) |
| 125 | 143 |
| 126 self:SetParent(WorldMapPOIFrame) | 144 self:SetParent(WorldMapPOIFrame) |
| 196 break | 214 break |
| 197 end | 215 end |
| 198 end | 216 end |
| 199 else | 217 else |
| 200 -- remove self in a timely manner | 218 -- remove self in a timely manner |
| 201 if not self.isPending then | 219 if not TQ_IsActive(self.questID) then |
| 202 self:Hide() | 220 print('|cFFFF4400'..self:GetName()..' pin hard timeout') |
| 221 if self.worldQuestType ~= LE_QUEST_TAG_TYPE_PROFESSION then | |
| 222 self:Hide() | |
| 223 end | |
| 203 end | 224 end |
| 204 end | 225 end |
| 205 self.timeThreschold = tl | 226 self.timeThreschold = tl |
| 206 | 227 |
| 207 if self:IsMouseOver() then | 228 if self:IsMouseOver() then |
| 209 else | 230 else |
| 210 self.MouseGlow:Hide() | 231 self.MouseGlow:Hide() |
| 211 end | 232 end |
| 212 end | 233 end |
| 213 | 234 |
| 235 | |
| 236 | |
| 237 function QuestPOI:Refresh () | |
| 238 local db = WorldPlan.db | |
| 239 local print = qprint | |
| 240 print('|cFF00FF88["'..tostring(self.title)..'"]|r:Refresh()', tostring(self.title), "|T"..tostring(self.itemTexture)..":12:12|t", tostring(self.itemName)) | |
| 241 print(self.style) | |
| 242 | |
| 243 | |
| 244 | |
| 245 local questID = self.questId | |
| 246 local style = self.style | |
| 247 local borderMask = style.mask | |
| 248 local borderFill = style.texture | |
| 249 local iconBorder = self.iconBorder | |
| 250 local icon = self.icon | |
| 251 local count = self.count | |
| 252 | |
| 253 | |
| 254 local subStyle = self.filtered and 'minimized' or 'continent' | |
| 255 if subStyle ~= self.subStyle then | |
| 256 print( ' - changed subStyle, need to redo masks') | |
| 257 end | |
| 258 self.subStyle = subStyle | |
| 259 print(' - subStyle:', (self.filtered == true), self.subStyle) | |
| 260 | |
| 261 --WorldPlan:print(tostring(self.title), "|T"..tostring(self.itemTexture)..":16:16|t", tostring(self.itemName)) | |
| 262 SetMaskedTexture(icon, self.itemTexture or ICON_UNKNOWN, borderMask) | |
| 263 icon:SetAllPoints(self) | |
| 264 | |
| 265 if self.itemName then | |
| 266 local color = self.rewardColor or COMMON_COLOR | |
| 267 if self.itemNumber and self.target then | |
| 268 self.count:SetText(color.hex .. tostring(self.itemNumber)) | |
| 269 else | |
| 270 self.count:SetText(nil) | |
| 271 end | |
| 272 end | |
| 273 | |
| 274 SetMaskedTexture(iconBorder, borderFill, borderMask) | |
| 275 local border = (self.rewardType and db.rewardStyle[self.rewardType]) or (WORLD_QUEST_QUALITY_COLORS[self.rarity] or db.defaultStyle) | |
| 276 iconBorder:SetVertexColor(border.r, border.g, border.b, border.a) | |
| 277 iconBorder:SetDesaturated(true) | |
| 278 | |
| 279 local trackingBorder = self.supertrackBorder | |
| 280 | |
| 281 self.highlight:SetMask(nil) | |
| 282 if questID == GetSuperTrackedQuestID() then | |
| 283 trackingBorder:SetVertexColor(0,0,0,1) | |
| 284 else | |
| 285 trackingBorder:SetVertexColor(0,0,0,0.5) | |
| 286 end | |
| 287 self.highlight:SetAllPoints(trackingBorder) | |
| 288 | |
| 289 SetMaskedTexture(trackingBorder, borderFill, borderMask) | |
| 290 self.highlight:SetMask(borderMask) | |
| 291 | |
| 292 local qType = self.worldQuestType | |
| 293 self.tagIcon:SetAtlas(self.tagAtlas) | |
| 294 self.tagIcon:SetTexCoord(0,1,0,1) | |
| 295 | |
| 296 | |
| 297 if self.isElite then | |
| 298 self.EliteDecal:Show() | |
| 299 else | |
| 300 self.EliteDecal:Hide() | |
| 301 end | |
| 302 | |
| 303 if style.showNumber then | |
| 304 self.label:SetText(self.itemNumber) | |
| 305 else | |
| 306 self.label:SetText(nil) | |
| 307 end | |
| 308 qprint('|cFF88FF00updated', questID, self.title, self.rewardType, (style.showNumber and self.itemNumber) or '') | |
| 309 | |
| 310 | |
| 311 self:UpdateSize() | |
| 312 end | |
| 214 | 313 |
| 215 function WorldPlanFilterPinMixin:OnEnter () | 314 function WorldPlanFilterPinMixin:OnEnter () |
| 216 local filter = WorldPlan.FilterOptions[self:GetID()] | 315 local filter = WorldPlan.FilterOptions[self:GetID()] |
| 217 local mapID = GetCurrentMapAreaID() | 316 local mapID = GetCurrentMapAreaID() |
| 218 local quests = (mapID == WorldPlan.BrokenIsleID) and WorldPlan.QuestsByID or WorldPlan.QuestsByZone[mapID] | 317 local quests = (mapID == WorldPlan.BrokenIsleID) and WorldPlan.QuestsByID or WorldPlan.QuestsByZone[mapID] |
