Mercurial > wow > askmrrobot
comparison Core.lua @ 81:0515882856f1 v38
updated for 7.0
author | yellowfive |
---|---|
date | Tue, 19 Jul 2016 10:05:32 -0700 |
parents | a892c863c86a |
children | b8e9664d3229 |
comparison
equal
deleted
inserted
replaced
80:8f235b016212 | 81:0515882856f1 |
---|---|
49 local function initializeDb() | 49 local function initializeDb() |
50 | 50 |
51 local defaults = { | 51 local defaults = { |
52 char = { | 52 char = { |
53 FirstUse = true, -- true if this is first time use, gets cleared after seeing the export help splash window | 53 FirstUse = true, -- true if this is first time use, gets cleared after seeing the export help splash window |
54 SubSpecs = {}, -- last seen subspecs for this character, used to deal with some ambiguous specs | 54 Talents = {}, -- for each spec, selected talents |
55 Equipped = {}, -- for each spec group (1 or 2), slot id to item link | 55 Artifacts = {}, -- for each spec, artifact info |
56 Equipped = {}, -- for each spec, slot id to item link | |
56 BagItems = {}, -- list of item links for bag | 57 BagItems = {}, -- list of item links for bag |
57 BankItems = {}, -- list of item links for bank | 58 BankItems = {}, -- list of item links for bank |
58 VoidItems = {}, -- list of item links for void storage | 59 VoidItems = {}, -- list of item links for void storage |
59 BagItemsAndCounts = {}, -- used mainly for the shopping list | 60 BagItemsAndCounts = {}, -- used mainly for the shopping list |
60 BankItemsAndCounts = {}, -- used mainly for the shopping list | 61 BankItemsAndCounts = {}, -- used mainly for the shopping list |
123 byDiff[difficultyId] = false | 124 byDiff[difficultyId] = false |
124 end | 125 end |
125 end | 126 end |
126 end | 127 end |
127 | 128 |
128 Amr.db = LibStub("AceDB-3.0"):New("AskMrRobotDb2", defaults) | 129 Amr.db = LibStub("AceDB-3.0"):New("AskMrRobotDb3", defaults) |
129 | 130 |
130 Amr.db.RegisterCallback(Amr, "OnProfileChanged", "RefreshConfig") | 131 Amr.db.RegisterCallback(Amr, "OnProfileChanged", "RefreshConfig") |
131 Amr.db.RegisterCallback(Amr, "OnProfileCopied", "RefreshConfig") | 132 Amr.db.RegisterCallback(Amr, "OnProfileCopied", "RefreshConfig") |
132 Amr.db.RegisterCallback(Amr, "OnProfileReset", "RefreshConfig") | 133 Amr.db.RegisterCallback(Amr, "OnProfileReset", "RefreshConfig") |
133 end | 134 end |
173 end | 174 end |
174 end | 175 end |
175 | 176 |
176 function Amr:OnEnable() | 177 function Amr:OnEnable() |
177 | 178 |
179 --[[ | |
178 -- listen for changes to the snapshot enable state, and always make sure it is enabled if using the core AskMrRobot addon | 180 -- listen for changes to the snapshot enable state, and always make sure it is enabled if using the core AskMrRobot addon |
179 self:RegisterMessage("AMR_SNAPSHOT_STATE_CHANGED", function(eventName, isEnabled) | 181 self:RegisterMessage("AMR_SNAPSHOT_STATE_CHANGED", function(eventName, isEnabled) |
180 if not isEnabled then | 182 if not isEnabled then |
181 -- immediately re-enable on any attempt to disable | 183 -- immediately re-enable on any attempt to disable |
182 Amr.Serializer:EnableSnapshots() | 184 Amr.Serializer:EnableSnapshots() |
183 end | 185 end |
184 end) | 186 end) |
185 self.Serializer:EnableSnapshots() | 187 self.Serializer:EnableSnapshots() |
188 ]] | |
186 | 189 |
187 -- update based on current configuration whenever enabled | 190 -- update based on current configuration whenever enabled |
188 self:RefreshConfig() | 191 self:RefreshConfig() |
189 | 192 |
190 -- if we have fully entered the world, do initialization; otherwise wait for PLAYER_ENTERING_WORLD to continue | 193 -- if we have fully entered the world, do initialization; otherwise wait for PLAYER_ENTERING_WORLD to continue |
494 -- could not find or ambiguous | 497 -- could not find or ambiguous |
495 return nil | 498 return nil |
496 end | 499 end |
497 | 500 |
498 | 501 |
499 -- scanning tooltip b/c for some odd reason the api has no way to get basic item properties... | |
500 -- so you have to generate a fake item tooltip and search for pre-defined strings in the display text | |
501 local _scanTt | |
502 function Amr:GetScanningTooltip() | |
503 if not _scanTt then | |
504 _scanTt = CreateFrame("GameTooltip", "AmrUiScanTooltip", nil, "GameTooltipTemplate") | |
505 _scanTt:SetOwner(UIParent, "ANCHOR_NONE") | |
506 end | |
507 return _scanTt | |
508 end | |
509 | |
510 local function scanTooltipHelper(txt, ...) | |
511 for i = 1, select("#", ...) do | |
512 local region = select(i, ...) | |
513 if region and region:GetObjectType() == "FontString" then | |
514 local text = region:GetText() -- string or nil | |
515 print(text) | |
516 end | |
517 end | |
518 end | |
519 | |
520 -- search the tooltip for txt, returns true if it is encountered on any line | 502 -- search the tooltip for txt, returns true if it is encountered on any line |
521 function Amr:IsTextInTooltip(tt, txt) | 503 function Amr:IsTextInTooltip(tt, txt) |
522 local regions = { tt:GetRegions() } | 504 local regions = { tt:GetRegions() } |
523 for i, region in ipairs(regions) do | 505 for i, region in ipairs(regions) do |
524 if region and region:GetObjectType() == "FontString" then | 506 if region and region:GetObjectType() == "FontString" then |
530 return false | 512 return false |
531 end | 513 end |
532 | 514 |
533 -- helper to determine if we can equip an item (it is already soulbound or account bound) | 515 -- helper to determine if we can equip an item (it is already soulbound or account bound) |
534 function Amr:CanEquip(bagId, slotId) | 516 function Amr:CanEquip(bagId, slotId) |
535 local tt = self:GetScanningTooltip() | 517 local tt = Amr.GetItemTooltip(bagId, slotId) |
536 tt:ClearLines() | |
537 if bagId then | |
538 tt:SetBagItem(bagId, slotId) | |
539 else | |
540 tt:SetInventoryItem("player", slotId) | |
541 end | |
542 if self:IsTextInTooltip(tt, ITEM_SOULBOUND) then return true end | 518 if self:IsTextInTooltip(tt, ITEM_SOULBOUND) then return true end |
543 if self:IsTextInTooltip(tt, ITEM_BNETACCOUNTBOUND) then return true end | 519 if self:IsTextInTooltip(tt, ITEM_BNETACCOUNTBOUND) then return true end |
544 if self:IsTextInTooltip(tt, ITEM_ACCOUNTBOUND) then return true end | 520 if self:IsTextInTooltip(tt, ITEM_ACCOUNTBOUND) then return true end |
545 end | 521 end |
546 | 522 |
547 -- helper to determine if an item has a unique constraint | 523 -- helper to determine if an item has a unique constraint |
548 function Amr:IsUnique(bagId, slotId) | 524 function Amr:IsUnique(bagId, slotId) |
549 local tt = self:GetScanningTooltip() | 525 local tt = Amr.GetItemTooltip(bagId, slotId) |
550 tt:ClearLines() | |
551 if bagId then | |
552 tt:SetBagItem(bagId, slotId) | |
553 else | |
554 tt:SetInventoryItem("player", slotId) | |
555 end | |
556 if self:IsTextInTooltip(tt, ITEM_UNIQUE_EQUIPPABLE) then return true end | 526 if self:IsTextInTooltip(tt, ITEM_UNIQUE_EQUIPPABLE) then return true end |
557 if self:IsTextInTooltip(tt, ITEM_UNIQUE) then return true end | 527 if self:IsTextInTooltip(tt, ITEM_UNIQUE) then return true end |
558 return false | 528 return false |
559 end | 529 end |
560 | 530 |