You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

97 lines
3.6 KiB

local L = DBM_CORE_L
local frame, text, ignore, cancel
local function CreateOurFrame()
---@class DBMHyperlinkFrame: Frame, BackdropTemplate
frame = CreateFrame("Frame", "DBMHyperLinks", UIParent, "BackdropTemplate")
frame.backdropInfo = {
bgFile = "Interface\\DialogFrame\\UI-DialogBox-Background-Dark", -- 312922
edgeFile = "Interface\\DialogFrame\\UI-DialogBox-Border", -- 131072
tile = true,
tileSize = 16,
edgeSize = 16,
insets = { left = 1, right = 1, top = 1, bottom = 1 }
}
frame:ApplyBackdrop()
frame:SetSize(500, 80)
frame:SetPoint("TOP", UIParent, "TOP", 0, -200)
frame:SetFrameStrata("DIALOG")
text = frame:CreateFontString()
text:SetFontObject(ChatFontNormal)
text:SetWidth(470)
text:SetWordWrap(true)
text:SetPoint("TOP", frame, "TOP", 0, -15)
local accept = CreateFrame("Button", nil, frame)
accept:SetNormalTexture(130763)--"Interface\\Buttons\\UI-DialogBox-Button-Up"
accept:SetPushedTexture(130761)--"Interface\\Buttons\\UI-DialogBox-Button-Down"
accept:SetHighlightTexture(130762, "ADD")--"Interface\\Buttons\\UI-DialogBox-Button-Highlight"
accept:SetSize(128, 35)
accept:SetPoint("BOTTOM", frame, "BOTTOM", -75, 0)
accept:SetScript("OnClick", function()
DBM:AddToPizzaIgnore(ignore)
DBT:CancelBar(cancel)
frame:Hide()
end)
local atext = accept:CreateFontString()
atext:SetFontObject(ChatFontNormal)
atext:SetPoint("CENTER", accept, "CENTER", 0, 5)
atext:SetText(YES)
local decline = CreateFrame("Button", nil, frame)
decline:SetNormalTexture(130763)--"Interface\\Buttons\\UI-DialogBox-Button-Up"
decline:SetPushedTexture(130761)--"Interface\\Buttons\\UI-DialogBox-Button-Down"
decline:SetHighlightTexture(130762, "ADD")--"Interface\\Buttons\\UI-DialogBox-Button-Highlight"
decline:SetSize(128, 35)
decline:SetPoint("BOTTOM", frame, "BOTTOM", 75, 0)
decline:SetScript("OnClick", function()
frame:Hide()
end)
local dtext = decline:CreateFontString()
dtext:SetFontObject(ChatFontNormal)
dtext:SetPoint("CENTER", decline, "CENTER", 0, 5)
dtext:SetText(NO)
PlaySound(850)
end
local function LinkHook(self, link)
local _, linkType, arg1, arg2, arg3, arg4, arg5, arg6 = strsplit(":", link)
if linkType ~= "DBM" then
return
end
if arg1 == "cancel" then
DBT:CancelBar(link:match("garrmission:DBM:cancel:(.+):nil$"))
elseif arg1 == "ignore" then
cancel = link:match("garrmission:DBM:ignore:(.+):[^%s:]+$")
ignore = link:match(":([^:]+)$")
if not frame then
CreateOurFrame()
end
text:SetText(L.PIZZA_CONFIRM_IGNORE:format(ignore))
frame:Show()
elseif arg1 == "update" then
DBM:ShowUpdateReminder(arg2, arg3) -- displayVersion, revision
elseif arg1 == "news" then
DBM:ShowUpdateReminder(nil, nil, L.COPY_URL_DIALOG_NEWS, "https://github.com/DeadlyBossMods/DeadlyBossMods/wiki/%5BNews%5D-DBM-Module-Restructuring-and-unification")
elseif arg1 == "noteshare" then
local mod = DBM:GetModByName(arg2 or "")
if mod then
DBM:ShowNoteEditor(mod, arg3, arg4, arg5, arg6)--modvar, ability, text, sender
else--Should not happen, since mod was verified before getting this far, but just in case
DBM:Debug("Bad note share, mod not valid")
end
end
end
DEFAULT_CHAT_FRAME:HookScript("OnHyperlinkClick", LinkHook) -- Handles the weird case that the default chat frame is not one of the normal chat frames (3rd party chat frames or whatever causes this)
local i = 1
while _G["ChatFrame" .. i] do
if _G["ChatFrame" .. i] ~= DEFAULT_CHAT_FRAME then
_G["ChatFrame" .. i]:HookScript("OnHyperlinkClick", LinkHook)
end
i = i + 1
end