Mercurial > wow > worldplan
comparison QuestPOI.lua @ 31:d0114b51cdea
WorldPlan:
- Reworking filters to utilize newly added CVars
- Fleshed out POI tooltip for WQ's associated with Family Familiars
- Filter button tooltip includes reward icons
- Respond to tracking menu clicks when they change filter options
| author | Nenue |
|---|---|
| date | Fri, 28 Oct 2016 19:54:00 -0400 |
| parents | 8cb750e79952 |
| children | be4db60219ca |
comparison
equal
deleted
inserted
replaced
| 30:8cb750e79952 | 31:d0114b51cdea |
|---|---|
| 43 local LE_QUEST_TAG_TYPE_PVP = LE_QUEST_TAG_TYPE_PVP | 43 local LE_QUEST_TAG_TYPE_PVP = LE_QUEST_TAG_TYPE_PVP |
| 44 local LE_QUEST_TAG_TYPE_PET_BATTLE = LE_QUEST_TAG_TYPE_PET_BATTLE | 44 local LE_QUEST_TAG_TYPE_PET_BATTLE = LE_QUEST_TAG_TYPE_PET_BATTLE |
| 45 local LE_QUEST_TAG_TYPE_DUNGEON = LE_QUEST_TAG_TYPE_DUNGEON | 45 local LE_QUEST_TAG_TYPE_DUNGEON = LE_QUEST_TAG_TYPE_DUNGEON |
| 46 local LE_QUEST_TAG_TYPE_PROFESSION = LE_QUEST_TAG_TYPE_PROFESSION | 46 local LE_QUEST_TAG_TYPE_PROFESSION = LE_QUEST_TAG_TYPE_PROFESSION |
| 47 local LE_QUEST_TAG_TYPE_NORMAL = LE_QUEST_TAG_TYPE_NORMAL | 47 local LE_QUEST_TAG_TYPE_NORMAL = LE_QUEST_TAG_TYPE_NORMAL |
| 48 | |
| 49 local subStyles = { | |
| 50 continent = { | |
| 51 PinSize = 14, | |
| 52 Border = 2, | |
| 53 TrackingBorder = 1, | |
| 54 TagSize = 6, | |
| 55 TimeleftStage = 0, | |
| 56 showNumber = false, | |
| 57 numberFontObject = 'WorldPlanFont' | |
| 58 }, | |
| 59 zone = { | |
| 60 PinSize = 22, | |
| 61 Border = 3, | |
| 62 TrackingBorder = 2, | |
| 63 TagSize = 12, | |
| 64 TimeleftStage = 3, | |
| 65 showNumber = true, | |
| 66 numberFontObject = 'WorldPlanNumberFontThin' | |
| 67 }, | |
| 68 minimized = { | |
| 69 PinSize = 4, | |
| 70 Border = 0, | |
| 71 TrackingBorder = 1, | |
| 72 NoIcon = true, | |
| 73 TimeleftStage = 1, | |
| 74 showNumber = false, | |
| 75 } | |
| 76 } | |
| 48 | 77 |
| 49 -- Pin color/display variables | 78 -- Pin color/display variables |
| 50 | 79 |
| 51 local familiars = { | 80 local familiars = { |
| 52 [42159] = {npc = 106552, name = 'Nightwatcher Merayl'}, | 81 [42159] = {npc = 106552, name = 'Nightwatcher Merayl'}, |
| 106 power = text:gsub("%p", ""):match("%d+") | 135 power = text:gsub("%p", ""):match("%d+") |
| 107 power = tonumber(power) | 136 power = tonumber(power) |
| 108 end | 137 end |
| 109 | 138 |
| 110 end | 139 end |
| 111 return REWARD_ARTIFACT_POWER, "Interface\\ICONS\\inv_7xp_inscription_talenttome01", power, name, itemID | 140 return REWARD_ARTIFACT_POWER, "Interface\\ICONS\\inv_7xp_inscription_talenttome01", power, name, itemID, quality |
| 112 elseif text:match("Item Level") then | 141 elseif text:match("Item Level") then |
| 113 --print('equipment!', text) | 142 --print('equipment!', text) |
| 114 quantity = text:match("Item Level ([%d\+]+)") | 143 quantity = text:match("Item Level ([%d\+]+)") |
| 115 return REWARD_GEAR, icon, quantity, name, itemID | 144 return REWARD_GEAR, icon, quantity, name, itemID, quality |
| 116 elseif text:match("Crafting Reagent") then | 145 elseif text:match("Crafting Reagent") then |
| 117 --print('|cFFFF4400it is a reagent', text) | 146 --print('|cFFFF4400it is a reagent', text) |
| 118 return REWARD_REAGENT, icon, quantity, name, itemID | 147 return REWARD_REAGENT, icon, quantity, name, itemID, quality |
| 119 end | 148 end |
| 120 end | 149 end |
| 121 | 150 |
| 122 elseif ttl3 then | 151 elseif ttl3 then |
| 123 local text = ttl3:GetText() | 152 local text = ttl3:GetText() |
| 124 if text:match("Crafting Reagent") then | 153 if text:match("Crafting Reagent") then |
| 125 --print('|cFFFF4400it is a reagent', text) | 154 --print('|cFFFF4400it is a reagent', text) |
| 126 return REWARD_REAGENT, icon, quantity, name, itemID | 155 return REWARD_REAGENT, icon, quantity, name, itemID, quality |
| 127 end | 156 end |
| 128 end | 157 end |
| 129 return 128, icon, quantity, name, itemID | 158 return 128, icon, quantity, name, itemID, quality |
| 130 end | 159 end |
| 131 | 160 |
| 132 function WorldPlanPOIMixin:OnEnter() | 161 function WorldPlanPOIMixin:OnEnter() |
| 133 local completed = select(4,GetAchievementInfo(familiars_id)) | 162 local completed = select(4,GetAchievementInfo(familiars_id)) |
| 134 if not completed then | 163 if not completed then |
| 135 if self.worldQuestType == LE_QUEST_TAG_TYPE_PET_BATTLE and familiars[self.questID] then | 164 if self.worldQuestType == LE_QUEST_TAG_TYPE_PET_BATTLE and familiars[self.questID] then |
| 136 WorldMapTooltip:SetOwner(self, 'ANCHOR_RIGHT') | 165 WorldMapTooltip:SetOwner(self, 'ANCHOR_RIGHT') |
| 166 WorldMapTooltip:AddLine(self.title, 1, 1, 1) | |
| 167 if self.quality then | |
| 168 local c = ITEM_QUALITY_COLORS[self.quality] | |
| 169 WorldMapTooltip:AddLine(" ") | |
| 170 WorldMapTooltip:AddLine('Rewards') | |
| 171 WorldMapTooltip:AddLine(self.itemName .. (self.quantity and (' x'..self.quantity) or ''), c.r, c.g, c.b) | |
| 172 WorldMapTooltip:AddTexture(self.itemTexture) | |
| 173 | |
| 174 local cLine = WorldMapTooltip:NumLines() | |
| 175 local line = _G['WorldMapTooltipTextLeft'..cLine] | |
| 176 local pline = _G['WorldMapTooltipTextLeft'..(cLine-1)] | |
| 177 local icon = _G['WorldMapTooltipTexture'..(cLine-3)] | |
| 178 icon:SetSize(24,24) | |
| 179 icon:ClearAllPoints() | |
| 180 icon:SetPoint('TOPLEFT', pline, 'BOTTOMLEFT', 0, -2) | |
| 181 line:ClearAllPoints() | |
| 182 line:SetPoint('TOPLEFT', icon, 'TOPRIGHT', 7, 0) | |
| 183 | |
| 184 --- voodoo workaround for IDs getting coerced to string | |
| 185 if type(self.itemTexture) == 'number' then | |
| 186 icon:Show() | |
| 187 icon:SetTexture(self.itemTexture) | |
| 188 end | |
| 189 end | |
| 190 | |
| 191 | |
| 192 WorldMapTooltip:AddLine(" ") -- causes crash for some reason | |
| 137 WorldMapTooltip:AddLine('Family Familiars') | 193 WorldMapTooltip:AddLine('Family Familiars') |
| 138 local trainer = familiars[self.questID].name | 194 local trainer = familiars[self.questID].name |
| 139 local numCheevs = GetAchievementNumCriteria(familiars_id) | 195 local numCheevs = GetAchievementNumCriteria(familiars_id) |
| 140 for index = 1, numCheevs do | 196 for index = 1, numCheevs do |
| 141 local cheevName, cType, cCompleted, quantity, requiredQuantity, charName, flags, cheevID, quantityString, criteriaID = GetAchievementCriteriaInfo(familiars_id, index) | 197 local cheevName, cType, cCompleted, quantity, requiredQuantity, charName, flags, cheevID, quantityString, criteriaID = GetAchievementCriteriaInfo(familiars_id, index) |
| 179 self.x = info.x or self.x | 235 self.x = info.x or self.x |
| 180 self.y = info.y or self.y | 236 self.y = info.y or self.y |
| 181 qprint('|cFFFF4400applying taskInfo coords:', info.x, info.y) | 237 qprint('|cFFFF4400applying taskInfo coords:', info.x, info.y) |
| 182 end | 238 end |
| 183 | 239 |
| 184 self.passesBlizzFilters = WorldMap_DoesWorldQuestInfoPassFilters(info) | |
| 185 end | 240 end |
| 186 | 241 |
| 187 | 242 |
| 188 local questID = self:GetID() | 243 local questID = self:GetID() |
| 189 local questTitle, rewardIcon, rewardName, rewardCount, rewardStyle, rewardType, itemID, quantity, quality, _ | 244 local questTitle, rewardIcon, rewardName, rewardCount, rewardStyle, rewardType, itemID, quantity, quality, _ |
| 190 local hasUpdate, isPending = self.hasUpdate, self.isPending | 245 local hasUpdate, isPending = (self.hasUpdate or self.isNew), self.isPending |
| 191 | 246 |
| 192 | 247 |
| 193 if not HaveQuestData(questID) then | 248 if not HaveQuestData(questID) then |
| 194 TQ_RequestPreloadRewardData(questID) | 249 TQ_RequestPreloadRewardData(questID) |
| 195 isPending = true | 250 isPending = true |
| 196 qprint('because not have data') | |
| 197 else | 251 else |
| 198 | 252 |
| 199 -- set reward category | 253 -- set reward category |
| 200 local numRewards = GetNumQuestLogRewards(questID) | 254 local numRewards = GetNumQuestLogRewards(questID) |
| 201 local numCurrency = GetNumQuestLogRewardCurrencies(questID) | 255 local numCurrency = GetNumQuestLogRewardCurrencies(questID) |
| 202 local money = GetQuestLogRewardMoney(questID) | 256 local money = GetQuestLogRewardMoney(questID) |
| 203 if numRewards >= 1 then | 257 if numRewards >= 1 then |
| 204 rewardType, rewardIcon, rewardCount, rewardName, itemID = ParseItemReward(questID) | 258 rewardType, rewardIcon, rewardCount, rewardName, itemID, quality = ParseItemReward(questID) |
| 205 elseif numCurrency >= 1 then | 259 elseif numCurrency >= 1 then |
| 206 rewardName, rewardIcon, rewardCount = GetQuestLogRewardCurrencyInfo(1, questID) | 260 rewardName, rewardIcon, rewardCount = GetQuestLogRewardCurrencyInfo(1, questID) |
| 207 rewardType = REWARD_CURRENCY | 261 rewardType = REWARD_CURRENCY |
| 208 elseif money >= 1 then | 262 elseif money >= 1 then |
| 209 rewardIcon = ICON_MONEY | 263 rewardIcon = ICON_MONEY |
| 213 rewardStyle = self:GetTypeInfo(rewardType) | 267 rewardStyle = self:GetTypeInfo(rewardType) |
| 214 | 268 |
| 215 self.itemNumber = rewardCount or self.itemNumber | 269 self.itemNumber = rewardCount or self.itemNumber |
| 216 self.rewardType = rewardType or REWARD_ITEM | 270 self.rewardType = rewardType or REWARD_ITEM |
| 217 self.style = rewardStyle | 271 self.style = rewardStyle |
| 272 self.quality = quality | |
| 218 | 273 |
| 219 -- title, faction, capped state | 274 -- title, faction, capped state |
| 220 local questTitle, factionID, capped = TQ_GetQuestInfoByQuestID(questID) | 275 local questTitle, factionID, capped = TQ_GetQuestInfoByQuestID(questID) |
| 221 self.factionID = factionID | 276 self.factionID = factionID |
| 222 self.capped = capped | 277 self.capped = capped |
| 268 | 323 |
| 269 qprint(' |cFF00FFFF'..questID..'|r hasUpdate:', hasUpdate, 'isPending:', isPending) | 324 qprint(' |cFF00FFFF'..questID..'|r hasUpdate:', hasUpdate, 'isPending:', isPending) |
| 270 qprint(' ', 'rewardType:', self.rewardType, 'tag:', self.tagID) | 325 qprint(' ', 'rewardType:', self.rewardType, 'tag:', self.tagID) |
| 271 qprint(' ', tostring(self.title), " |T"..tostring(self.itemTexture)..":12:12|t", tostring(self.itemName)) | 326 qprint(' ', tostring(self.title), " |T"..tostring(self.itemTexture)..":12:12|t", tostring(self.itemName)) |
| 272 end | 327 end |
| 328 self.cheevos = familiars[self.questID] | |
| 329 | |
| 273 return hasUpdate, isPending | 330 return hasUpdate, isPending |
| 274 end | 331 end |
| 275 | 332 |
| 276 | 333 |
| 277 function WorldPlanPOIMixin:SetAchievementProgressTooltip() | 334 function WorldPlanPOIMixin:SetAchievementProgressTooltip() |
| 409 local style,subStyle = self:GetTypeInfo(self.rewardType) | 466 local style,subStyle = self:GetTypeInfo(self.rewardType) |
| 410 if self.filtered then | 467 if self.filtered then |
| 411 subStyle = style.minimized | 468 subStyle = style.minimized |
| 412 end | 469 end |
| 413 self.style = style | 470 self.style = style |
| 471 self.subStyle = subStyle | |
| 414 | 472 |
| 415 | 473 |
| 416 local borderMask = style.mask | 474 local borderMask = style.mask |
| 417 local borderFill = style.texture | 475 local borderFill = style.texture |
| 418 local iconBorder = self.iconBorder | 476 local iconBorder = self.iconBorder |
| 419 local icon = self.icon | 477 local icon = self.icon |
| 420 local count = self.count | 478 local count = self.count |
| 421 | 479 |
| 422 self.subStyle = subStyle | |
| 423 self.hasNumeric = style.hasNumeric | 480 self.hasNumeric = style.hasNumeric |
| 424 self.numberRGB = style.numberRGB | 481 self.numberRGB = style.numberRGB |
| 425 self.showNumber = subStyle.showNumber | 482 self.showNumber = subStyle.showNumber |
| 426 | 483 |
| 427 | 484 |
| 436 if self.hasNumeric then | 493 if self.hasNumeric then |
| 437 if subStyle.numberFontObject then | 494 if subStyle.numberFontObject then |
| 438 wqprint('change font', _G[subStyle.numberFontObject]:GetName()) | 495 wqprint('change font', _G[subStyle.numberFontObject]:GetName()) |
| 439 self.count:SetFontObject(_G[subStyle.numberFontObject]) | 496 self.count:SetFontObject(_G[subStyle.numberFontObject]) |
| 440 end | 497 end |
| 441 | 498 wqprint('filtered:', self.filtered, 'showNumber:', self.showNumber) |
| 442 self.count:SetShown(true) | 499 |
| 500 self.count:SetShown(self.showNumber) | |
| 443 self.count:SetText(self.itemNumber) | 501 self.count:SetText(self.itemNumber) |
| 444 self.count:SetTextColor(unpack(self.numberRGB)) | 502 self.count:SetTextColor(unpack(self.numberRGB)) |
| 445 else | 503 else |
| 446 self.count:SetShown(false) | 504 self.count:SetShown(false) |
| 447 self.count:SetText(nil) | 505 self.count:SetText(nil) |
