From bd228bf545324c38cd813b1dce3a959ee54cf596 Mon Sep 17 00:00:00 2001 From: Bunny67 Date: Sat, 14 Jul 2018 17:44:15 +0300 Subject: [PATCH] update tooltip --- ElvUI/Modules/Tooltip/ItemPrice.lua | 210 -------------- ElvUI/Modules/Tooltip/Load_Tooltip.xml | 1 - ElvUI/Modules/Tooltip/Tooltip.lua | 384 +++++++++++++++++++++++-- 3 files changed, 368 insertions(+), 227 deletions(-) delete mode 100644 ElvUI/Modules/Tooltip/ItemPrice.lua diff --git a/ElvUI/Modules/Tooltip/ItemPrice.lua b/ElvUI/Modules/Tooltip/ItemPrice.lua deleted file mode 100644 index 7b9cca1..0000000 --- a/ElvUI/Modules/Tooltip/ItemPrice.lua +++ /dev/null @@ -1,210 +0,0 @@ -local E, L, V, P, G = unpack(ElvUI) -local IP = E:NewModule("Tooltip_ItemPrice", "AceHook-3.0") - -local LIP = LibStub:GetLibrary("ItemPrice-1.1") - -local match = string.match - -local GetActionCount = GetActionCount -local GetAuctionItemInfo = GetAuctionItemInfo -local GetAuctionSellItemInfo = GetAuctionSellItemInfo -local GetContainerItemInfo = GetContainerItemInfo -local GetCraftReagentInfo = GetCraftReagentInfo -local GetInboxItem = GetInboxItem -local GetItemCount = GetItemCount -local GetLootRollItemInfo = GetLootRollItemInfo -local GetLootSlotInfo = GetLootSlotInfo -local GetMerchantItemInfo = GetMerchantItemInfo -local GetQuestItemInfo = GetQuestItemInfo -local GetQuestLogRewardInfo = GetQuestLogRewardInfo -local GetSendMailItem = GetSendMailItem -local GetTradePlayerItemInfo = GetTradePlayerItemInfo -local GetTradeSkillReagentInfo = GetTradeSkillReagentInfo -local GetTradeTargetItemInfo = GetTradeTargetItemInfo -local IsConsumableAction = IsConsumableAction - -local tooltips = { - "GameTooltip", - "ItemRefTooltip" -} - -function IP:SetAction(tt, id) - local itemName = GameTooltipTextLeft1:GetText() - if not itemName then return end - - local item = GetItemInfoByName(itemName) - if item then - local count = 1 - if IsConsumableAction(id) then - local actionCount = GetActionCount(id) - if actionCount and actionCount == GetItemCount(item) then - count = actionCount - end - end - - self:SetPrice(tt, count, item) - end -end - -function IP:SetAuctionItem(tt, type, index) - local _, _, count = GetAuctionItemInfo(type, index) - self:SetPrice(tt, count) -end - -function IP:SetAuctionSellItem(tt) - local _, _, count = GetAuctionSellItemInfo() - self:SetPrice(tt, count) -end - -function IP:SetBagItem(tt, bag, slot) - local _, count = GetContainerItemInfo(bag, slot) - self:SetPrice(tt, count) -end - -function IP:SetCraftItem(tt, skill, slot) - local count = 1 - if slot then - count = select(3, GetCraftReagentInfo(skill, slot)) - end - - self:SetPrice(tt, count) -end - -function IP:SetHyperlink(tt, link, count) - count = tonumber(count) - if not count or count < 1 then - local owner = tt:GetParent() - count = owner and tonumber(owner.count) - if not count or count < 1 then - count = 1 - end - end - - self:SetPrice(tt, count) -end - -function IP:SetInboxItem(tt, index, attachmentIndex) - local _, _, count = GetInboxItem(index, attachmentIndex) - self:SetPrice(tt, count) -end - -function IP:SetInventoryItem(tt, unit, slot) - if type(slot) ~= "number" or slot < 0 then return end - - local count = 1 - if slot < 20 or slot > 39 and slot < 68 then - count = GetInventoryItemCount(unit, slot) - end - - self:SetPrice(tt, count) -end - -function IP:SetLootItem(tt, slot) - local _, _, count = GetLootSlotInfo(slot) - self:SetPrice(tt, count) -end - -function IP:SetLootRollItem(tt, rollID) - local _, _, count = GetLootRollItemInfo(rollID) - self:SetPrice(tt, count) -end - -function IP:SetMerchantItem(tt, slot) - local _, _, _, count = GetMerchantItemInfo(slot) - self:SetPrice(tt, count) -end - -function IP:SetQuestItem(tt, type, slot) - local _, _, count = GetQuestItemInfo(type, slot) - self:SetPrice(tt, count) -end - -function IP:SetQuestLogItem(tt, type, index) - local _, _, count = GetQuestLogRewardInfo(index) - self:SetPrice(tt, count) -end - -function IP:SetSendMailItem(tt, index) - local _, _, count = GetSendMailItem(index) - self:SetPrice(tt, count) -end - -function IP:SetTradePlayerItem(tt, index) - local _, _, count = GetTradePlayerItemInfo(index) - self:SetPrice(tt, count) -end - -function IP:SetTradeSkillItem(tt, skill, slot) - local count = 1 - if slot then - count = select(3, GetTradeSkillReagentInfo(skill, slot)) - end - - self:SetPrice(tt, count) -end - -function IP:SetTradeTargetItem(tt, index) - local _, _, count = GetTradeTargetItemInfo(index) - self:SetPrice(tt, count) -end - -function IP:SetPrice(tt, count) - if MerchantFrame:IsShown() then return end - - local itemName = GameTooltipTextLeft1:GetText() - if not itemName then return end - - local _, itemString = GetItemInfoByName(itemName) - if not itemString then return end - - local itemID = match(itemString, "item:(%d+)") - if not itemID then return end - - local price = LIP:GetSellValue(itemID) - - if price and price > 0 then - tt:AddDoubleLine(SALE_PRICE_COLON, E:FormatMoney(count and price * count or price, "BLIZZARD", false), nil, nil, nil, 1, 1, 1) - end - - if tt:IsShown() then tt:Show() end -end - -function IP:ApplyHooks(tooltip) - self:SecureHook(tooltip, "SetAction", "SetAction") - self:SecureHook(tooltip, "SetAuctionItem", "SetAuctionItem") - self:SecureHook(tooltip, "SetAuctionSellItem", "SetAuctionSellItem") - self:SecureHook(tooltip, "SetBagItem", "SetBagItem") - self:SecureHook(tooltip, "SetCraftItem", "SetCraftItem") - self:SecureHook(tooltip, "SetHyperlink", "SetHyperlink") - self:SecureHook(tooltip, "SetInboxItem", "SetInboxItem") - self:SecureHook(tooltip, "SetInventoryItem", "SetInventoryItem") - self:SecureHook(tooltip, "SetLootItem", "SetLootItem") - self:SecureHook(tooltip, "SetLootRollItem", "SetLootRollItem") - self:SecureHook(tooltip, "SetMerchantItem", "SetMerchantItem") - self:SecureHook(tooltip, "SetQuestItem", "SetQuestItem") - self:SecureHook(tooltip, "SetQuestLogItem", "SetQuestLogItem") - self:SecureHook(tooltip, "SetSendMailItem", "SetSendMailItem") - self:SecureHook(tooltip, "SetTradePlayerItem", "SetTradePlayerItem") - self:SecureHook(tooltip, "SetTradeSkillItem", "SetTradeSkillItem") - self:SecureHook(tooltip, "SetTradeTargetItem", "SetTradeTargetItem") -end - -function IP:UpdateSettings() - if E.db.tooltip.itemPrice then - for _, tooltip in pairs(tooltips) do - self:ApplyHooks(_G[tooltip]) - end - else - self:UnhookAll() - end -end - -function IP:Initialize() - self:UpdateSettings() -end - -local function InitializeCallback() - IP:Initialize() -end - -E:RegisterModule(IP:GetName(), InitializeCallback) \ No newline at end of file diff --git a/ElvUI/Modules/Tooltip/Load_Tooltip.xml b/ElvUI/Modules/Tooltip/Load_Tooltip.xml index aede184..1e62dbe 100644 --- a/ElvUI/Modules/Tooltip/Load_Tooltip.xml +++ b/ElvUI/Modules/Tooltip/Load_Tooltip.xml @@ -1,4 +1,3 @@