This commit is contained in:
Hao Tran 2024-02-28 22:32:21 -05:00
commit 146f7d971e
9 changed files with 258 additions and 0 deletions

29
Core/Functions.lua Normal file
View File

@ -0,0 +1,29 @@
local addon, ns = ...
local T = {}
ns.T = T
--------------------------------------------------------------------------------
-- # CORE > FUNCTIONS
--------------------------------------------------------------------------------
T.ShortValue = function(value)
if value >= 1e11 then
return ('%.0fb'):format(value / 1e9)
elseif value >= 1e10 then
return ('%.1fb'):format(value / 1e9):gsub('%.?0+([km])$', '%1')
elseif value >= 1e9 then
return ('%.2fb'):format(value / 1e9):gsub('%.?0+([km])$', '%1')
elseif value >= 1e8 then
return ('%.0fm'):format(value / 1e6)
elseif value >= 1e7 then
return ('%.1fm'):format(value / 1e6):gsub('%.?0+([km])$', '%1')
elseif value >= 1e6 then
return ('%.2fm'):format(value / 1e6):gsub('%.?0+([km])$', '%1')
elseif value >= 1e5 then
return ('%.0fk'):format(value / 1e3)
elseif value >= 1e3 then
return ('%.1fk'):format(value / 1e3):gsub('%.?0+([km])$', '%1')
else
return value
end
end

32
Core/Localization.lua Normal file
View File

@ -0,0 +1,32 @@
local addon, ns = ...
local L = {}
ns.L = L
--------------------------------------------------------------------------------
-- # CORE > LOCALIZATION
--------------------------------------------------------------------------------
-- ## ENGLISH
--------------------------------------------------------------------------------
L['STATUS_AFK'] = 'AFK'
L['STATUS_DND'] = 'DND'
L['SPELL_ID'] = 'Spell ID:'
L['ITEM_ID'] = 'Item ID:'
local locale = GetLocale()
if locale == 'en_GB' or locale == 'en_US' then return end -- ENGLISH
-- ## OTHER
--------------------------------------------------------------------------------
-- if locale == 'esMX' then return end -- SPANISH (MEXICO)
-- if locale == 'pt_BR' then return end -- PORTUGEUSE
-- if locale == 'de_DE' then return end -- GERMAN
-- if locale == 'es_ES' then return end -- SPANISH (SPAIN)
-- if locale == 'fr_FR' then return end -- FRENCH
-- if locale == 'it_IT' then return end -- ITALIAN
-- if locale == 'ru_RU' then return end -- RUSSIAN
-- if locale == 'ko_KR' then return end -- KOREAN
-- if locale == 'zh_TW' then return end -- CHINESE (TRADITIONAL)
-- if locale == 'zh_CN' then return end -- CHINESE (SIMPLIFIED)

12
KlazTooltip.toc Normal file
View File

@ -0,0 +1,12 @@
## Interface: 100205
## Title: Klaz|cff1994ffTooltip|r
## Author: Klaz
## Notes: Styles default tooltips.
## IconTexture: Interface\AddOns\KlazTooltip\Media\KlazAddOnIcon.blp
Core\Localization.lua
Core\Functions.lua
Modules\HealthValue.lua
Modules\SpellID.lua
Modules\Style.lua

BIN
Media/KlazAddOnIcon.blp Normal file

Binary file not shown.

BIN
Media/Screenshot_ItemID.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

28
Modules/HealthValue.lua Normal file
View File

@ -0,0 +1,28 @@
local addon, ns = ...
local T = ns.T
--------------------------------------------------------------------------------
-- # MODULES > HEALTH VALUE
--------------------------------------------------------------------------------
GameTooltipStatusBar:SetScript('OnValueChanged', function(self, value)
if not value then return end
local min, max = self:GetMinMaxValues()
if (value < min) or (value > max) then return end
local _, unit = GameTooltip:GetUnit()
if unit then
min, max = UnitHealth(unit), UnitHealthMax(unit)
if not self.text then
self.text = self:CreateFontString(nil, 'OVERLAY')
self.text:SetPoint('CENTER', GameTooltipStatusBar, 0, 1)
self.text:SetFont(STANDARD_TEXT_FONT, 11, 'OUTLINE')
self.text:SetShadowOffset(1,-1)
end
self.text:Show()
local hp = T.ShortValue(min)..' / '..T.ShortValue(max)
self.text:SetText(hp)
end
end)

57
Modules/SpellID.lua Normal file
View File

@ -0,0 +1,57 @@
local addon, ns = ...
local L = ns.L
--------------------------------------------------------------------------------
-- # MODULES > SPELLID
--------------------------------------------------------------------------------
local function AddIDLine(self, id, isItem)
for i = 1, self:NumLines() do
local line = _G[self:GetName()..'TextLeft'..i]
if not line then break end
local text = line:GetText()
if text and strfind(text, id) then return end
end
if isItem then
self:AddLine('|cff1994ff'..L.ITEM_ID..' |cnWHITE_FONT_COLOR:'..id..'|r')
else
self:AddLine('|cff1994ff'..L.SPELL_ID..' |cnWHITE_FONT_COLOR:'..id..'|r')
end
self:Show()
end
local function OnTooltipSetSpell(self)
local _, id = self:GetSpell()
if id then AddIDLine(self, id) end
end
hooksecurefunc(GameTooltip, 'SetUnitAura', function(self, ...)
local id = select(10, UnitAura(...))
if id then AddIDLine(self, id) end
if debuginfo == true and id and IsModifierKeyDown() then print(UnitAura(...)..': '..id) end
end)
local function attachByAuraInstanceID(self, ...)
local aura = C_UnitAuras.GetAuraDataByAuraInstanceID(...)
local id = aura and aura.spellId
if id then AddIDLine(self, id) end
if debuginfo == true and id and IsModifierKeyDown() then print(UnitAura(...)..': '..id) end
end
hooksecurefunc(GameTooltip, 'SetUnitBuffByAuraInstanceID', attachByAuraInstanceID)
hooksecurefunc(GameTooltip, 'SetUnitDebuffByAuraInstanceID', attachByAuraInstanceID)
hooksecurefunc('SetItemRef', function(link)
local id = tonumber(link:match('spell:(%d+)'))
if id then AddIDLine(ItemRefTooltip, id) end
end)
local function attachItemTooltip(self)
local _, link = TooltipUtil.GetDisplayedItem(self)
if not link then return end
local id = link:match('item:(%d+):')
if id then AddIDLine(self, id, true) end
end
TooltipDataProcessor.AddTooltipPostCall(Enum.TooltipDataType.Spell, OnTooltipSetSpell)
TooltipDataProcessor.AddTooltipPostCall(Enum.TooltipDataType.Item, attachItemTooltip)

100
Modules/Style.lua Normal file
View File

@ -0,0 +1,100 @@
local addon, ns = ...
local L = ns.L
--------------------------------------------------------------------------------
-- # MODULES > STYLE
--------------------------------------------------------------------------------
-- hide
ITEM_CREATED_BY = ''
-- unit colours
local function GetColor(unit)
if not unit then return end
local r, g, b
if UnitIsPlayer(unit) then
local _, class = UnitClass(unit)
local color = (CUSTOM_CLASS_COLORS or RAID_CLASS_COLORS)[class]
if color then
r, g, b = color.r, color.g, color.b
else
r, g, b = 1, 1, 1
end
elseif UnitIsTapDenied(unit) or UnitIsDead(unit) then
r, g, b = 0.6, 0.6, 0.6
else
local reaction = UnitReaction(unit, 'player')
if reaction then
r, g, b = FACTION_BAR_COLORS[reaction].r, FACTION_BAR_COLORS[reaction].g, FACTION_BAR_COLORS[reaction].b
else
r, g, b = 1, 1, 1
end
end
return r, g, b
end
-- style
local function UpdateTooltip(self)
if self ~= GameTooltip or self:IsForbidden() then return end
local lines = self:NumLines()
local unit = (select(2, self:GetUnit())) or (GetMouseFocus() and GetMouseFocus().GetAttribute and GetMouseFocus():GetAttribute("unit")) or (UnitExists("mouseover") and "mouseover") or nil
if not unit then return end
local r, g, b = GetColor(unit)
GameTooltipTextLeft1:SetTextColor(r, g, b)
-- status indicator
if UnitIsAFK(unit) then
self:AppendText((' %s'):format('|cffe7e716'..L.STATUS_AFK..'|r'))
elseif UnitIsDND(unit) then
self:AppendText((' %s'):format('|cffdd0000'..L.STATUS_DND..'|r'))
end
-- guild name
if GetGuildInfo(unit) then
local guildName, guildRankName, _, _ = GetGuildInfo(unit)
GameTooltipTextLeft2:SetFormattedText('|cff3Ce13f%s|r |cff1994ff[%s]|r', guildName, guildRankName)
end
-- target
if UnitExists(unit..'target') then
local rTarget, gTarget, bTarget
if UnitIsPlayer(unit..'target') then
local _, englishClass = UnitClass(unit..'target')
rTarget, gTarget, bTarget = GetClassColor(englishClass)
else
local reaction = UnitReaction(unit, 'player')
if reaction then
rTarget, gTarget, bTarget= FACTION_BAR_COLORS[reaction].r, FACTION_BAR_COLORS[reaction].g, FACTION_BAR_COLORS[reaction].b
end
end
local text = ''
if UnitName(unit..'target') == UnitName('player') then
text = '|cffee7d01'..TARGET..':|r '..'|cffff0000> '..UNIT_YOU..' <|r'
else
text = '|cffee7d01'..TARGET..':|r '..UnitName(unit..'target')
end
self:AddLine(text, rTarget, gTarget, bTarget)
end
-- statusbar
GameTooltip:AddLine(' ') -- add empty line to make room for status bar
GameTooltipStatusBar:ClearAllPoints()
GameTooltipStatusBar:SetPoint('LEFT', 8, 0)
GameTooltipStatusBar:SetPoint('RIGHT', -8, 0)
GameTooltipStatusBar:SetPoint('BOTTOM', 0, 10)
GameTooltipStatusBar:SetHeight(8)
GameTooltipStatusBar:SetStatusBarTexture('Interface\\ChatFrame\\ChatFrameBackground')
GameTooltipStatusBarTexture:SetVertexColor(r, g, b)
self:Show()
end
TooltipDataProcessor.AddTooltipPostCall(Enum.TooltipDataType.Unit, UpdateTooltip)