From 1686027c02d29c8d52a685c1de2ce154494da978 Mon Sep 17 00:00:00 2001 From: Christopher Rosell Date: Tue, 24 Jul 2012 17:14:13 +0200 Subject: [PATCH] Add GUID lookup. --- modules/tooltip.lua | 7 +++++-- petjournalex.lua | 56 +++++++++++++++++++++++++++++++++++++++------------ 2 files changed, 48 insertions(+), 15 deletions(-) mode change 100644 => 100755 modules/tooltip.lua mode change 100644 => 100755 modules/uniquecount.lua diff --git a/modules/tooltip.lua b/modules/tooltip.lua old mode 100644 new mode 100755 index d88537d..d3364a9 --- a/modules/tooltip.lua +++ b/modules/tooltip.lua @@ -10,8 +10,11 @@ end function module:UPDATE_MOUSEOVER_UNIT() if not UnitIsWildBattlePet"mouseover" then return end - local name = UnitName"mouseover" - local species = addon:GetPetInfoByName(name) + local guid = UnitGUID"mouseover" + local species = select(2, addon:GetPetInfoByGUID(guid)) + + if not species then return end + local collected = addon:IsPetSpeciesOwned(species) if not collected then return end diff --git a/modules/uniquecount.lua b/modules/uniquecount.lua old mode 100644 new mode 100755 diff --git a/petjournalex.lua b/petjournalex.lua index 5692c37..8017691 100755 --- a/petjournalex.lua +++ b/petjournalex.lua @@ -69,7 +69,24 @@ function addon:GetPetInfoByName(name) for i = 1, self:GetNumPets() do local pname = select(2, self:GetPetInfo(i)) if pname == name then - return self:GetPetInfo(i) + return i, self:GetPetInfo(i) + end + end +end + +function addon:GetPetInfoByGUID(guid) + local first3 = tonumber("0x"..guid:sub(3, 5)) + local unittype = bit.band(first3, 0x00f) + + if unittype ~= 0x03 then return end + + local npcid = tonumber("0x"..guid:sub(7, 10)) + + for i = 1, self:GetNumPets() do + local petnpc = select(5, self:GetPetInfo(i)) + + if petnpc == npcid then + return i, self:GetPetInfo(i) end end end @@ -79,13 +96,9 @@ function addon:IsPetSpeciesOwned(species) return self.petown[species] end -function addon:PET_JOURNAL_LIST_UPDATE(...) - if self.updating then return end +function addon:ClearPetJournalFilters() self.updating = true - wipe(self.petidx) - wipe(self.petown) - for key, val in pairs(filterflags) do filterflags[key] = not PJ.IsFlagFiltered(key) end @@ -105,13 +118,11 @@ function addon:PET_JOURNAL_LIST_UPDATE(...) PJ.SetFlagFilter(LE_PET_JOURNAL_FLAG_NOT_COLLECTED, true) PJ.SetSearchFilter("") - for i = 1, PJ.GetNumPets(false) do - local petid, speciesid, isowned = PJ.GetPetInfoByIndex(i, false) - if speciesid then - table.insert(self.petidx, speciesid) - self.petown[speciesid] = isowned - end - end + self.updating = false +end + +function addon:RestorePetJournalFilters() + self.updating = true for key, val in pairs(filterflags) do PJ.SetFlagFilter(key, val) @@ -132,6 +143,25 @@ function addon:PET_JOURNAL_LIST_UPDATE(...) self.updating = false end +function addon:PET_JOURNAL_LIST_UPDATE(...) + if self.updating then return end + + wipe(self.petidx) + wipe(self.petown) + + self:ClearPetJournalFilters() + + for i = 1, PJ.GetNumPets(false) do + local petid, speciesid, isowned = PJ.GetPetInfoByIndex(i, false) + if speciesid then + table.insert(self.petidx, speciesid) + self.petown[speciesid] = isowned + end + end + + self:RestorePetJournalFilters() +end + function addon:ADDON_LOADED(loaded) if loaded ~= addonname then return end -- 1.7.9.5