From 47163f0fe84c373bbf8db88afb6e2affa267b6c1 Mon Sep 17 00:00:00 2001 From: "Johnny C. Lam" Date: Sun, 17 Mar 2013 10:58:32 +0000 Subject: [PATCH] Add additional event handlers so information is accurate on initial login. PLAYER_ALIVE is triggered when the player's talent & glyph information is first available and happens after PLAYER_ENTERING_WORLD. PLAYER_ENTERING_WORLD triggers every time there is a loading screen, so the information gathered during PLAYER_ALIVE is available at this time after the first login. git-svn-id: svn://svn.curseforge.net/wow/ovale/mainline/trunk@792 d5049fe3-3747-40f7-a4b5-f36d6801af5f --- OvaleData.lua | 7 ++++--- OvaleEquipement.lua | 23 +++++++++++++++-------- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/OvaleData.lua b/OvaleData.lua index 108e75b..33352e6 100644 --- a/OvaleData.lua +++ b/OvaleData.lua @@ -305,7 +305,8 @@ function OvaleData:OnEnable() self:RegisterEvent("GLYPH_ENABLED", "UpdateGlyphs") self:RegisterEvent("GLYPH_REMOVED", "UpdateGlyphs") self:RegisterEvent("GLYPH_UPDATED", "UpdateGlyphs") - self:RegisterEvent("PLAYER_ALIVE") + self:RegisterEvent("PLAYER_ALIVE", "Update") + self:RegisterEvent("PLAYER_ENTERING_WORLD", "Update") self:RegisterEvent("PLAYER_TALENT_UPDATE", "RemplirListeTalents") self:RegisterEvent("SPELLS_CHANGED", "FillSpellList") self:RegisterEvent("UNIT_PET", "FillPetSpellList") @@ -319,13 +320,13 @@ function OvaleData:OnDisable() self:UnregisterEvent("GLYPH_REMOVED") self:UnregisterEvent("GLYPH_UPDATED") self:UnregisterEvent("PLAYER_ALIVE") + self:UnregisterEvent("PLAYER_ENTERING_WORLD") self:UnregisterEvent("PLAYER_TALENT_UPDATE") self:UnregisterEvent("SPELLS_CHANGED") self:UnregisterEvent("UNIT_PET") end --- Talent information is available to the UI when PLAYER_ALIVE fires. -function OvaleData:PLAYER_ALIVE(event) +function OvaleData:Update() self:RemplirListeTalents() self:UpdateGlyphs() self:FillSpellList() diff --git a/OvaleEquipement.lua b/OvaleEquipement.lua index 20e2300..ddcd514 100644 --- a/OvaleEquipement.lua +++ b/OvaleEquipement.lua @@ -953,12 +953,14 @@ end -- function OvaleEquipement:OnEnable() - self:RegisterEvent("PLAYER_ENTERING_WORLD") + self:RegisterEvent("PLAYER_ENTERING_WORLD", "UpdateEquippedItems") + self:RegisterEvent("PLAYER_ALIVE", "UpdateEquippedItems") self:RegisterEvent("PLAYER_EQUIPMENT_CHANGED") end function OvaleEquipement:OnDisable() self:UnregisterEvent("PLAYER_ENTERING_WORLD") + self:UnregisterEvent("PLAYER_ALIVE") self:UnregisterEvent("PLAYER_EQUIPMENT_CHANGED") end @@ -983,12 +985,6 @@ function OvaleEquipement:PLAYER_EQUIPMENT_CHANGED(event, slotId, hasItem) self:SendMessage("Ovale_EquipmentChanged") end -function OvaleEquipement:PLAYER_ENTERING_WORLD(event) - self:UpdateEquippedItems() - self:UpdateArmorSetCount() - self:SendMessage("Ovale_EquipmentChanged") -end - function OvaleEquipement:GetArmorSetCount(name) if not armorSetCount[name] then return 0 @@ -1048,11 +1044,22 @@ function OvaleEquipement:UpdateArmorSetCount() end function OvaleEquipement:UpdateEquippedItems() + local changed = false + local item for slotId = INVSLOT_FIRST_EQUIPPED, INVSLOT_LAST_EQUIPPED do - equippedItems[slotId] = GetInventoryItemID("player", slotId) + item = GetInventoryItemID("player", slotId) + if item ~= equippedItems[slotId] then + equippedItems[slotId] = GetInventoryItemID("player", slotId) + changed = true + end end mainHandItemType = GetEquippedItemType(INVSLOT_MAINHAND) offHandItemType = GetEquippedItemType(INVSLOT_OFFHAND) + + if changed then + self:UpdateArmorSetCount() + self:SendMessage("Ovale_EquipmentChanged") + end end function OvaleEquipement:Debug() -- 1.7.9.5