From 7ff45dd39813aae326517848d37a0284fb50f690 Mon Sep 17 00:00:00 2001 From: Tercio Jose Date: Fri, 5 May 2023 22:27:58 -0300 Subject: [PATCH] Postponed item data load to fix items without their names in the breakdown --- Definitions.lua | 2 + functions/spellcache.lua | 184 +++++++++++++++++---------------------- startup.lua | 2 +- 3 files changed, 82 insertions(+), 106 deletions(-) diff --git a/Definitions.lua b/Definitions.lua index d3e14a5c..0a028cfa 100644 --- a/Definitions.lua +++ b/Definitions.lua @@ -309,6 +309,8 @@ ---@field RegisterEvent fun(self: detailseventlistener, event: "DETAILS_INSTANCE_OPEN"|"DETAILS_INSTANCE_CLOSE"|"DETAILS_INSTANCE_SIZECHANGED"|"DETAILS_INSTANCE_STARTRESIZE"|"DETAILS_INSTANCE_ENDRESIZE"|"DETAILS_INSTANCE_STARTSTRETCH"|"DETAILS_INSTANCE_ENDSTRETCH"|"DETAILS_INSTANCE_CHANGESEGMENT"|"DETAILS_INSTANCE_CHANGEATTRIBUTE"|"DETAILS_INSTANCE_CHANGEMODE"|"DETAILS_INSTANCE_NEWROW"|"DETAILS_OPTIONS_MODIFIED"|"DETAILS_DATA_RESET"|"DETAILS_DATA_SEGMENTREMOVED"|"COMBAT_ENCOUNTER_START"|"COMBAT_ENCOUNTER_END"|"COMBAT_PLAYER_ENTER"|"COMBAT_PLAYER_LEAVE"|"COMBAT_PLAYER_TIMESTARTED"|"COMBAT_BOSS_WIPE"|"COMBAT_BOSS_DEFEATED"|"COMBAT_BOSS_FOUND"|"COMBAT_INVALID"|"COMBAT_PREPOTION_UPDATED"|"COMBAT_CHARTTABLES_CREATING"|"COMBAT_CHARTTABLES_CREATED"|"COMBAT_ENCOUNTER_PHASE_CHANGED"|"COMBAT_ARENA_START"|"COMBAT_ARENA_END"|"COMBAT_MYTHICDUNGEON_START"|"COMBAT_MYTHICDUNGEON_END"|"GROUP_ONENTER"|"GROUP_ONLEAVE"|"ZONE_TYPE_CHANGED"|"REALM_CHANNEL_ENTER"|"REALM_CHANNEL_LEAVE"|"COMM_EVENT_RECEIVED"|"COMM_EVENT_SENT"|"UNIT_SPEC"|"UNIT_TALENTS"|"PLAYER_TARGET"|"DETAILS_PROFILE_APPLYED", callback: function) ---@field UnregisterEvent fun(self: detailseventlistener, event: "DETAILS_INSTANCE_OPEN"|"DETAILS_INSTANCE_CLOSE"|"DETAILS_INSTANCE_SIZECHANGED"|"DETAILS_INSTANCE_STARTRESIZE"|"DETAILS_INSTANCE_ENDRESIZE"|"DETAILS_INSTANCE_STARTSTRETCH"|"DETAILS_INSTANCE_ENDSTRETCH"|"DETAILS_INSTANCE_CHANGESEGMENT"|"DETAILS_INSTANCE_CHANGEATTRIBUTE"|"DETAILS_INSTANCE_CHANGEMODE"|"DETAILS_INSTANCE_NEWROW"|"DETAILS_OPTIONS_MODIFIED"|"DETAILS_DATA_RESET"|"DETAILS_DATA_SEGMENTREMOVED"|"COMBAT_ENCOUNTER_START"|"COMBAT_ENCOUNTER_END"|"COMBAT_PLAYER_ENTER"|"COMBAT_PLAYER_LEAVE"|"COMBAT_PLAYER_TIMESTARTED"|"COMBAT_BOSS_WIPE"|"COMBAT_BOSS_DEFEATED"|"COMBAT_BOSS_FOUND"|"COMBAT_INVALID"|"COMBAT_PREPOTION_UPDATED"|"COMBAT_CHARTTABLES_CREATING"|"COMBAT_CHARTTABLES_CREATED"|"COMBAT_ENCOUNTER_PHASE_CHANGED"|"COMBAT_ARENA_START"|"COMBAT_ARENA_END"|"COMBAT_MYTHICDUNGEON_START"|"COMBAT_MYTHICDUNGEON_END"|"GROUP_ONENTER"|"GROUP_ONLEAVE"|"ZONE_TYPE_CHANGED"|"REALM_CHANNEL_ENTER"|"REALM_CHANNEL_LEAVE"|"COMM_EVENT_RECEIVED"|"COMM_EVENT_SENT"|"UNIT_SPEC"|"UNIT_TALENTS"|"PLAYER_TARGET"|"DETAILS_PROFILE_APPLYED") +---@class customspellinfo : {name: string, isPassive: boolean, itemId: number, icon: string|number} +---@class customiteminfo: {itemId: number, isPassive: boolean} ---@class savedspelldata : {key1: number, key2: string, key3: number} ---@class alternatepowertable : {last: number, total: number} diff --git a/functions/spellcache.lua b/functions/spellcache.lua index 002dea62..a4bfad2b 100644 --- a/functions/spellcache.lua +++ b/functions/spellcache.lua @@ -106,43 +106,33 @@ do lightOfTheMartyr_Name = lightOfTheMartyr_Name or "Deprecated Spell - Light of the Martyr" lightOfTheMartyr_Icon = lightOfTheMartyr_Icon or "" + ---@type table local defaultSpellCustomization = {} - local itemData_Retail = { - [394453] = {itemId = 195480, isPassive = true}, --ring: Seal of Diurna's Chosen - [382135] = {itemId = 194308}, --trinket: Manic Grieftorch - [382058] = {itemId = 194299}, --trinket: Decoration of Flame (shield) - [382056] = {itemId = 194299}, --trinket: Decoration of Flame - [382090] = {itemId = 194302}, --trinket: Storm-Eater's Boon - [381967] = {itemId = 194305}, --trinket: Controlled Current Technique - [382426] = {itemId = 194309, isPassive = true}, --trinket: Spiteful Storm - [377455] = {itemId = 194304}, --trinket: Iceblood Deathsnare - [377451] = {itemId = 194300}, --trinket: Conjured Chillglobe - [382097] = {itemId = 194303}, --trinket: Rumbling Ruby - [385903] = {itemId = 193639, isPassive = true}, --trinket: Umbrelskul's Fractured Heart - [381475] = {itemId = 193769}, --trinket: Erupting Spear Fragment - [388739] = {itemId = 193660, isPassive = true}, --trinket: Idol of Pure Decay - [388855] = {itemId = 193678}, --trinket: Miniature Singing Stone - [388755] = {itemId = 193677, isPassive = true}, --trinket: Furious Ragefeather - [383934] = {itemId = 193736}, --trinket: Water's Beating Heart - [214052] = {itemId = 133641, isPassive = true}, --trinket: Eye of Skovald - [214200] = {itemId = 133646}, --trinket: Mote of Sanctification - [387036] = {itemId = 193748}, --trinket: Kyrakka's Searing Embers (heal) - [397376] = {itemId = 193748, isPassive = true}, --trinket: Kyrakka's Searing Embers (damage) - [214985] = {itemId = 137486}, --trinket: Windscar Whetstone - [384004] = {itemId = 193815}, --trinket: Homeland Raid Horn - [377459] = {itemId = 194306}, --trinket: All-Totem of the Master - [408815] = {itemId = 202569}, --weapon: Djaruun, Pillar of the Elder Flame - [407961] = {itemId = 203996, isPassive = true}, --trinket: Igneous Flowstone - [408682] = {itemId = 202610}, --trinket: Dragonfire Bomb Dispenser - [401324] = {itemId = 202617, isPassive = true}, --trinket: Elementium Pocket Anvil - [401306] = {itemId = 202617}, --trinket: Elementium Pocket Anvil (use) - [402583] = {itemId = 203963}, --trinket: Beacon to the Beyond - [384325] = {itemId = 193672, isPassive = true}, --trinket: Frenzying Signoll Flare - [384290] = {itemId = 193672, isPassive = true}, --trinket: Frenzying Signoll Flare (dot) - [388948] = {itemId = 193732}, --trinket: Globe of Jagged Ice - [381760] = {itemId = 193786, isPassive = true}, --trinket: Mutated Magmammoth Scale (melee) - } + ---@type table + local customItemList = {} + + local iconSize = 14 + local coords = {0.14, 0.86, 0.14, 0.86} + + ---@param itemId number + ---@return string + local formatTextForItem = function(itemId) + local result = "" + + local itemIcon = C_Item.GetItemIconByID(itemId) + local itemName = C_Item.GetItemNameByID(itemId) + + if (itemName == "") then + itemName = "@notloaded@" + end + + if (itemIcon and itemName) then + result = "" .. CreateTextureMarkup(itemIcon, iconSize, iconSize, iconSize, iconSize, unpack(coords)) .. " " .. itemName .. "" + end + + return result + end if (DetailsFramework.IsClassicWow()) then defaultSpellCustomization = { @@ -218,29 +208,6 @@ do [278057] = {name = GetSpellInfo(278057) .. " (Trinket)"}, --[Vigilant's Bloodshaper] } else - --retail - local iconSize = 14 --icon size - local coords = {0.14, 0.86, 0.14, 0.86} - - ---@param itemId number - ---@return string - local formatTextForItem = function(itemId) - local result = "" - - local itemIcon = C_Item.GetItemIconByID(itemId) - local itemName = C_Item.GetItemNameByID(itemId) - - if (itemName == "") then - itemName = "@notloaded@" - end - - if (itemIcon and itemName) then - result = "" .. CreateTextureMarkup(itemIcon, iconSize, iconSize, iconSize, iconSize, unpack(coords)) .. " " .. itemName .. "" - end - - return result - end - defaultSpellCustomization = { [1] = {name = Loc ["STRING_MELEE"], icon = [[Interface\ICONS\INV_Sword_04]]}, [2] = {name = Loc ["STRING_AUTOSHOT"], icon = [[Interface\ICONS\INV_Weapon_Bow_07]]}, @@ -256,53 +223,40 @@ do [77535] = {name = GetSpellInfo(77535), icon = "Interface\\Addons\\Details\\images\\icon_blood_shield"}, } - if (GetSpellInfo(394453)) then --this is running at load time, this data could not be available at player logon - local dragonflightTrinkets = { - [394453] = {name = formatTextForItem(195480), isPassive = true, itemId = 195480}, --ring: Seal of Diurna's Chosen - [382135] = {name = formatTextForItem(194308)}, --trinket: Manic Grieftorch - [382058] = {name = formatTextForItem(194299)}, --trinket: Decoration of Flame (shield) - [382056] = {name = formatTextForItem(194299)}, --trinket: Decoration of Flame - [382090] = {name = formatTextForItem(194302)}, --trinket: Storm-Eater's Boon - [381967] = {name = formatTextForItem(194305)}, --trinket: Controlled Current Technique - [382426] = {name = formatTextForItem(194309), isPassive = true, itemId = 194309}, --trinket: Spiteful Storm - [377455] = {name = formatTextForItem(194304)}, --trinket: Iceblood Deathsnare - [377451] = {name = formatTextForItem(194300)}, --trinket: Conjured Chillglobe - [382097] = {name = formatTextForItem(194303)}, --trinket: Rumbling Ruby - [385903] = {name = formatTextForItem(193639), isPassive = true, itemId = 193639}, --trinket: Umbrelskul's Fractured Heart - [381475] = {name = formatTextForItem(193769)}, --trinket: Erupting Spear Fragment - [388739] = {name = formatTextForItem(193660), isPassive = true, itemId = 193660}, --trinket: Idol of Pure Decay - [388855] = {name = formatTextForItem(193678)}, --trinket: Miniature Singing Stone - [388755] = {name = formatTextForItem(193677), isPassive = true, itemId = 193677}, --trinket: Furious Ragefeather - [383934] = {name = formatTextForItem(193736)}, --trinket: Water's Beating Heart - [214052] = {name = formatTextForItem(133641), isPassive = true, itemId = 133641}, --trinket: Eye of Skovald - [214200] = {name = formatTextForItem(133646)}, --trinket: Mote of Sanctification - [387036] = {name = formatTextForItem(193748)}, --trinket: Kyrakka's Searing Embers (heal) - [397376] = {name = formatTextForItem(193748), isPassive = true, itemId = 193748}, --trinket: Kyrakka's Searing Embers (damage) - [214985] = {name = formatTextForItem(137486)}, --trinket: Windscar Whetstone - [384004] = {name = formatTextForItem(193815)}, --trinket: Homeland Raid Horn - [377459] = {name = formatTextForItem(194306)}, --trinket: All-Totem of the Master - [408815] = {name = formatTextForItem(202569)}, --weapon: Djaruun, Pillar of the Elder Flame - [407961] = {name = formatTextForItem(203996), isPassive = true, itemId = 203996}, --trinket: Igneous Flowstone - [408682] = {name = formatTextForItem(202610)}, --trinket: Dragonfire Bomb Dispenser - [401324] = {name = formatTextForItem(202617), isPassive = true, itemId = 202617}, --trinket: Elementium Pocket Anvil - [401306] = {name = formatTextForItem(202617)}, --trinket: Elementium Pocket Anvil (use) - [402583] = {name = formatTextForItem(203963)}, --trinket: Beacon to the Beyond - [384325] = {name = formatTextForItem(193672), isPassive = true, itemId = 193672}, --trinket: Frenzying Signoll Flare - [384290] = {name = formatTextForItem(193672), isPassive = true, itemId = 193672}, --trinket: Frenzying Signoll Flare (dot) - [388948] = {name = formatTextForItem(193732)}, --trinket: Globe of Jagged Ice - [381760] = {name = formatTextForItem(193786), isPassive = true, itemId = 193786}, --trinket: Mutated Magmammoth Scale (melee) - } - - --[] = {name = GetSpellInfo() .. formatTextForItem(193757), isPassive = true}, --trinket: Ruby Whelp Shell - --to check an item : /dump C_Item.GetItemNameByID(137486) - --get the itemId from default tooltip using /code > script name > "SpellID on Tooltip" - --spellId is from details breakdown - --/de trinket on the spell icon on the breakdown, trinket equipped - - for spellId, spellCustomization in pairs(dragonflightTrinkets) do - defaultSpellCustomization[spellId] = spellCustomization - end - end + customItemList[394453] = {itemId = 195480, isPassive = true} --ring: Seal of Diurna's Chosen + customItemList[382135] = {itemId = 194308} --trinket: Manic Grieftorch + customItemList[382058] = {itemId = 194299} --trinket: Decoration of Flame (shield) + customItemList[382056] = {itemId = 194299} --trinket: Decoration of Flame + customItemList[382090] = {itemId = 194302} --trinket: Storm-Eater's Boon + customItemList[381967] = {itemId = 194305} --trinket: Controlled Current Technique + customItemList[382426] = {itemId = 194309, isPassive = true} --trinket: Spiteful Storm + customItemList[377455] = {itemId = 194304} --trinket: Iceblood Deathsnare + customItemList[377451] = {itemId = 194300} --trinket: Conjured Chillglobe + customItemList[382097] = {itemId = 194303} --trinket: Rumbling Ruby + customItemList[385903] = {itemId = 193639, isPassive = true} --trinket: Umbrelskul's Fractured Heart + customItemList[381475] = {itemId = 193769} --trinket: Erupting Spear Fragment + customItemList[388739] = {itemId = 193660, isPassive = true} --trinket: Idol of Pure Decay + customItemList[388855] = {itemId = 193678} --trinket: Miniature Singing Stone + customItemList[388755] = {itemId = 193677, isPassive = true} --trinket: Furious Ragefeather + customItemList[383934] = {itemId = 193736} --trinket: Water's Beating Heart + customItemList[214052] = {itemId = 133641, isPassive = true} --trinket: Eye of Skovald + customItemList[214200] = {itemId = 133646} --trinket: Mote of Sanctification + customItemList[387036] = {itemId = 193748} --trinket: Kyrakka's Searing Embers (heal) + customItemList[397376] = {itemId = 193748, isPassive = true} --trinket: Kyrakka's Searing Embers (damage) + customItemList[214985] = {itemId = 137486} --trinket: Windscar Whetstone + customItemList[384004] = {itemId = 193815} --trinket: Homeland Raid Horn + customItemList[377459] = {itemId = 194306} --trinket: All-Totem of the Master + customItemList[408815] = {itemId = 202569} --weapon: Djaruun, Pillar of the Elder Flame + customItemList[407961] = {itemId = 203996, isPassive = true} --trinket: Igneous Flowstone + customItemList[408682] = {itemId = 202610} --trinket: Dragonfire Bomb Dispenser + customItemList[401324] = {itemId = 202617, isPassive = true} --trinket: Elementium Pocket Anvil + customItemList[401306] = {itemId = 202617} --trinket: Elementium Pocket Anvil (use) + customItemList[402583] = {itemId = 203963} --trinket: Beacon to the Beyond + customItemList[384325] = {itemId = 193672, isPassive = true} --trinket: Frenzying Signoll Flare + customItemList[384290] = {itemId = 193672, isPassive = true} --trinket: Frenzying Signoll Flare (dot) + customItemList[388948] = {itemId = 193732} --trinket: Globe of Jagged Ice + customItemList[381760] = {itemId = 193786, isPassive = true} --trinket: Mutated Magmammoth Scale (melee) + customItemList[389839] = {itemId = 193757, isPassive = true} --trinket: Ruby Whelp Shell end if (LIB_OPEN_RAID_SPELL_CUSTOM_NAMES) then @@ -318,6 +272,10 @@ do return defaultSpellCustomization end + function Details:GetDefaultCustomItemList() + return customItemList + end + function Details:UserCustomSpellUpdate(index, spellName, spellIcon) ---@type savedspelldata local savedSpellData = Details.savedCustomSpells[index] @@ -361,6 +319,22 @@ do Details:UserCustomSpellAdd(spellId, spellTable.name or spellName or "Unknown", spellTable.icon or spellIcon or [[Interface\InventoryItems\WoWUnknownItem01]]) end + --itens + --[381760] = {name = formatTextForItem(193786), isPassive = true, itemId = 193786}, + ---@type number, customiteminfo + for spellId, itemInfo in pairs(customItemList) do + local bIsPassive = itemInfo.isPassive + local itemId = itemInfo.itemId + local spellName, _, spellIcon = GetSpellInfo(spellId) + + local itemName = formatTextForItem(itemId) + if (itemName == "") then + itemName = "Unknown Item" + end + + Details:UserCustomSpellAdd(spellId, itemName, spellIcon or [[Interface\InventoryItems\WoWUnknownItem01]]) + end + for i = #Details.savedCustomSpells, 1, -1 do ---@type savedspelldata local savedSpellData = Details.savedCustomSpells[i] diff --git a/startup.lua b/startup.lua index 0678342b..3e805cf4 100644 --- a/startup.lua +++ b/startup.lua @@ -457,7 +457,7 @@ function Details:StartMeUp() return Details.trinket_data end - local customSpellList = Details:GetDefaultCustomSpellsList() + local customSpellList = Details:GetDefaultCustomItemList() local trinketData = Details:GetTrinketData() for spellId, trinketTable in pairs(customSpellList) do if (trinketTable.isPassive) then