Without knowing what you're trying to extract, and not wanting to reverse-engineer it from the gsub() mess, the only thing I can offer is a simplification of your if-nesting mess:
Code:
local lastricon = 1
function addon:AddRaidIcon(self)
if not addon.settings.showRaidIcon then
return
end
local name, unit = self:GetUnit()
if not unit then
return
end
local text = GameTooltipTextLeft1:GetText()
if not text then
return
end
local ricon = GetRaidTargetIndex(unit)
if not ricon then
return
end
if lastricon ~= 1 then
text = gsub(text, "|T", "")
text = gsub(text, lastricon.."::", "")
text = gsub(text, addon.settings.tooltipIconSize / 10, "")
text = gsub(text, "Interface", "")
text = gsub(text, "TargetingFrame", "")
text = gsub(text, "\\", "")
text = gsub(text, "UI", "")
text = gsub(text, "RaidTargetingIcon", "")
text = gsub(text, "-", "")
text = gsub(text, "_", "")
text = gsub(text, " ", "", 1)
end
lastricon = ricon
if not text:find(ricon) then
GameTooltipTextLeft1:SetText(("|t%s:%s|t %s"):format(ICON_LIST[ricon], addon.settings.tooltipIconSize / 10, text))
GameTooltip:Show()
end
if not ricon then
if lastricon ~= 1 then
text = gsub(text, "|T", "")
text = gsub(text, lastricon.."::", "")
text = gsub(text, addon.settings.tooltipIconSize / 10, "")
text = gsub(text, "Interface", "")
text = gsub(text, "TargetingFrame", "")
text = gsub(text, "\\", "")
text = gsub(text, "UI", "")
text = gsub(text, "RaidTargetingIcon", "")
text = gsub(text, "-", "")
text = gsub(text, "_", "")
text = gsub(text, " ", "", 1)
GameTooltipTextLeft1:SetText(("%s"):format(text))
lastricon = 1
GameTooltip:Show()
end
end
end
The only other change I made was getting rid of "or ricon == nil", since "not ricon" already achieves this. I'm also unsure of the overall logic, since you check for something, show the GameTooltip, then check for something else and show GameTooltip again.