Files
florian.berthold 5eaec81f02 chore: move addon into Chatter/ + add standard .gitignore
Matches the Exiles fork-layout convention (each addon in its own folder).
2026-05-25 10:59:27 +02:00

131 lines
3.2 KiB
Lua

-- Strip icons like |TInterface\\FriendsFrame\\UI-Toast-ToastIcons.tga:16:16:0:0:128:64:2:29:34:61
local mod = Chatter:NewModule("BNet", "AceHook-3.0")
local L = LibStub("AceLocale-3.0"):GetLocale("Chatter")
mod.modName = L["RealID Polish"]
local defaults = {
profile = {
toastx = 0,
toasty = 0,
showToast = false
}
}
local options
function mod:GetOptions()
options = options or {
showToastIcons = {
order=100,
type = "toggle",
name = L["Show Toast Icons"],
desc = L["Show toast icons in the chat frames"],
get = function()
return mod.db.profile.showToast
end,
set = function(info, v)
mod.db.profile.showToast = v
end,
},
toastWindowXoffset = {
order=101,
type = "range",
min = -4000,
max = 4000,
name = L["Toast X offset"],
desc = L["Move the Toast X offset to ChatFrame1"],
step = 1,
bigStep = 1,
get = function()
return mod.db.profile.toastx
end,
set = function(info, v)
mod.db.profile.toastx = v
mod:UpdateToastOffsets()
end,
},
toastWindowYoffset = {
order=102,
type = "range",
min = -4000,
max = 4000,
name = L["Toast Y offset"],
desc = L["Move the Toast Y offset, relative to ChatFrame1"],
step = 1,
bigStep = 1,
get = function()
return mod.db.profile.toasty
end,
set = function(info, v)
mod.db.profile.toasty = v
mod:UpdateToastOffsets()
end,
},
testToast = {
order=103,
name = L["Test"],
type = "execute",
func = function() BNToastFrame_AddToast(BN_TOAST_TYPE_NEW_INVITE) end,
}
}
return options
end
function mod:UpdateToastOffsets()
if self:IsEnabled() then
local cf = DEFAULT_CHAT_FRAME
local bside = cf.buttonSide
local cfTop = cf.buttonFrame:GetTop() or 0
local bnH = BNToastFrame:GetHeight() or 0
local offscreen = cfTop + bnH + BN_TOAST_TOP_OFFSET + BN_TOAST_TOP_BUFFER > GetScreenHeight();
BN_TOAST_LEFT_OFFSET = 1 + self.db.profile.toastx
if bside == "right" then
BN_TOAST_RIGHT_OFFSET = -1 + self.db.profile.toastx
end
BN_TOAST_TOP_OFFSET = 40 + self.db.profile.toasty
if offscreen then
BN_TOAST_BOTTOM_OFFSET = -12 + self.db.profile.toasty
end
BNToastFrame_UpdateAnchor(true)
end
end
function mod:OnInitialize()
self.db = Chatter.db:RegisterNamespace("RealIdPolish", defaults)
end
function mod:OnDisable()
self:UnhookAll()
BN_TOAST_TOP_OFFSET = 40
BN_TOAST_BOTTOM_OFFSET = -12
BN_TOAST_RIGHT_OFFSET = -1
BN_TOAST_LEFT_OFFSET = 1
BN_TOAST_TOP_BUFFER = 20
BN_TOAST_MAX_LINE_WIDTH = 196
end
function mod:OnEnable()
for i = 1, NUM_CHAT_WINDOWS do
local cf = _G["ChatFrame" .. i]
if cf ~= COMBATLOG then
self:RawHook(cf, "AddMessage", true)
end
end
self:Hook("BNToastFrame_Close",true)
self:UpdateToastOffsets()
end
function mod:BNToastFrame_Close()
self:UpdateToastOffsets()
end
function mod:ParseLinks(text)
if not text then return nil end
if mod.db.profile.showToast then return text end
text = gsub(text, "(|TInterface(.*)ToastIcons.tga([:%d]*)|t)", "")
return text
end
function mod:AddMessage(frame, text, ...)
return self.hooks[frame].AddMessage(frame, mod:ParseLinks(text), ...)
end