Files
HailMaryGuildTools/Core/VersionNoticeWindow.lua
Torsten Brendgen fc5a8aa361 initial commit
2026-04-10 21:30:31 +02:00

104 lines
3.7 KiB
Lua

local ADDON_NAME = "HailMaryGuildTools"
local HMGT = _G[ADDON_NAME]
if not HMGT then return end
local L = HMGT.L or LibStub("AceLocale-3.0"):GetLocale(ADDON_NAME)
function HMGT:EnsureVersionNoticeWindow()
if self.versionNoticeWindow then
return self.versionNoticeWindow
end
self.versionNoticeWindowStatus = self.versionNoticeWindowStatus or {
width = 560,
height = 240,
}
local window = self:CreateAceWindow("versionNotice", {
title = L["VERSION_WINDOW_TITLE"] or "HMGT Version Check",
statusText = "",
statusTable = self.versionNoticeWindowStatus,
width = self.versionNoticeWindowStatus.width or 560,
height = self.versionNoticeWindowStatus.height or 240,
backgroundTexture = "Interface\\AddOns\\HailMaryGuildTools\\Media\\HailMaryLogo.png",
backgroundWidth = 220,
backgroundHeight = 120,
backgroundOffsetY = -8,
backgroundAlpha = 0.12,
strata = "FULLSCREEN_DIALOG",
})
if not window then
return nil
end
local content = window:GetContent()
local messageText = content:CreateFontString(nil, "OVERLAY", "GameFontHighlightLarge")
messageText:SetPoint("TOPLEFT", content, "TOPLEFT", 28, -28)
messageText:SetPoint("TOPRIGHT", content, "TOPRIGHT", -28, -28)
messageText:SetJustifyH("CENTER")
messageText:SetJustifyV("MIDDLE")
messageText:SetTextColor(1, 0.82, 0.1, 1)
messageText:SetText(L["VERSION_WINDOW_MESSAGE"] or "A new version of Hail Mary Guild Tools is available.")
window.messageText = messageText
local detailText = content:CreateFontString(nil, "OVERLAY", "GameFontHighlight")
detailText:SetPoint("TOPLEFT", messageText, "BOTTOMLEFT", 0, -18)
detailText:SetPoint("TOPRIGHT", messageText, "BOTTOMRIGHT", 0, -18)
detailText:SetJustifyH("CENTER")
detailText:SetJustifyV("TOP")
if detailText.SetSpacing then
detailText:SetSpacing(2)
end
detailText:SetTextColor(0.9, 0.9, 0.9, 1)
window.detailText = detailText
self.versionNoticeWindow = window
return window
end
function HMGT:ShowVersionMismatchPopup(playerName, detail, sourceTag, opts)
opts = opts or {}
if playerName or detail or sourceTag then
self.latestVersionMismatch = {
playerName = playerName,
detail = detail,
sourceTag = sourceTag,
}
end
local info = self.latestVersionMismatch or {}
local window = self:EnsureVersionNoticeWindow()
if not window then
return
end
local hasMismatch = info.playerName or info.detail
window:SetTitle(L["VERSION_WINDOW_TITLE"] or "HMGT Version Check")
if hasMismatch then
window.messageText:SetText(L["VERSION_WINDOW_MESSAGE"] or "A new version of Hail Mary Guild Tools is available.")
window.detailText:SetText(string.format(
L["VERSION_WINDOW_DETAIL"] or "Detected via %s from %s.\n%s",
tostring(info.sourceTag or "?"),
tostring(info.playerName or UNKNOWN),
tostring(info.detail or "")
))
else
window.messageText:SetText(L["VERSION_WINDOW_NO_MISMATCH"] or "No newer HMGT version has been detected in your current group.")
window.detailText:SetText(string.format(
L["VERSION_WINDOW_CURRENT"] or "Current version: %s | Protocol: %s",
tostring(HMGT.ADDON_VERSION or "dev"),
tostring(HMGT.PROTOCOL_VERSION or "?")
))
end
self:DevTrace("Version", hasMismatch and "window_show_mismatch" or "window_show_current", {
player = info.playerName,
source = info.sourceTag,
detail = info.detail,
})
window:Show()
window:Raise()
end