Animations: add option-tab fade, minimap pulse, zButton expand fade, map-pin drop-in; wire BeastTraining debug log to /mth err

This commit is contained in:
DuvelCorp
2026-09-10 16:05:36 +02:00
parent 566f3f4925
commit d2fb04f7c5
7 changed files with 91 additions and 2 deletions
+14 -1
View File
@@ -168,7 +168,10 @@ function MTH_PT_HasBeastTrainingRows()
end
local function MTH_PT_DebugLog(line)
return
if line == nil then return end
if MTH_DebugFrame and type(MTH_DebugFrame.AddInfo) == "function" then
MTH_DebugFrame:AddInfo("[BeastTraining] " .. tostring(line))
end
end
local function MTH_PT_IsScanMessageEnabled()
@@ -381,6 +384,10 @@ local function MTH_PT_ProcessLearnSystemMessage(rawMessage)
_, _, abilityName, rankText = string.find(message, "^[Yy]ou have learned a new spell:%s*(.-)%s*[Rr]ank%s*(%d+)%.?$")
end
if not abilityName or not rankText then
-- Only trace messages that look like a learn line, to avoid flooding the log.
if MTH_PT_DebugLog and string.find(message, "[Ll]earned") then
MTH_PT_DebugLog("learn-msg parse FAILED: '" .. tostring(message) .. "'")
end
return false
end
@@ -412,6 +419,12 @@ local function MTH_PT_ProcessLearnSystemMessage(rawMessage)
petRecorded = MTH_PETS_RecordCurrentPetLearnedAbility(abilityName, rankNumber, "beasttraining:learn-msg") and true or false
end
if MTH_PT_DebugLog then
MTH_PT_DebugLog("learn-msg matched: ability='" .. tostring(abilityName) .. "' rank=" .. tostring(rankNumber)
.. " token='" .. tostring(token) .. "' alreadyKnown=" .. tostring(alreadyKnown)
.. " changed=" .. tostring(changed) .. " petRecorded=" .. tostring(petRecorded))
end
if changed or petRecorded then
if MTH_PT_DebugLog then
MTH_PT_DebugLog("learn-msg captured: source='you have learned a new spell' ability='" .. tostring(abilityName) .. "' rank=" .. tostring(rankNumber) .. " token='" .. tostring(token) .. "' changed=" .. tostring(changed) .. " petRecorded=" .. tostring(petRecorded))
+16
View File
@@ -58,6 +58,22 @@ MTH_FX_ANIM_DEFS = {
label = "Slide the options window open", labelKey = "ANIM_UI_OPTIONS",
tooltip = "Slide and fade the MetaHunt options window in when you open it.",
tooltipKey = "ANIM_UI_OPTIONS_TIP" },
{ key = "ui.optiontabs", section = "ui", default = true,
label = "Fade options tab changes", labelKey = "ANIM_UI_OPTIONTABS",
tooltip = "Fade the settings panel when you switch tabs inside the options window.",
tooltipKey = "ANIM_UI_OPTIONTABS_TIP" },
{ key = "ui.minimap", section = "ui", default = true,
label = "Pulse the minimap button on click", labelKey = "ANIM_UI_MINIMAP",
tooltip = "Give the minimap button a quick pulse when you click it.",
tooltipKey = "ANIM_UI_MINIMAP_TIP" },
{ key = "ui.zbuttons", section = "ui", default = true,
label = "Fade zButton bars open", labelKey = "ANIM_UI_ZBUTTONS",
tooltip = "Fade the child buttons in when a collapsible zButton bar (pet, tracking, aspects...) expands.",
tooltipKey = "ANIM_UI_ZBUTTONS_TIP" },
{ key = "ui.mappins", section = "ui", default = true,
label = "Fade map markers in", labelKey = "ANIM_UI_MAPPINS",
tooltip = "Fade the world map markers in when you locate a beast, vendor or master.",
tooltipKey = "ANIM_UI_MAPPINS_TIP" },
}
local function MTH_FX_Store()
+10
View File
@@ -29,6 +29,15 @@ MTH_Map = {
minimapTickIdle = 0.75,
}
-- Capture our PizzaSauce instance for the world map pin drop-in (guarded; may be nil).
local MTH_MAP_Sauce = PizzaSauce
local function MTH_Map_AnimatePin(pin)
if not MTH_MAP_Sauce or not pin then return end
if type(MTH_FX_IsEnabled) == "function" and not MTH_FX_IsEnabled("ui.mappins") then return end
if type(pin.SetAlpha) == "function" then pin:SetAlpha(0) end
MTH_MAP_Sauce:FadeIn(pin, 0.3)
end
local MTH_MAP_MINIMAP_ZOOM = {
[0] = { [0] = 300, [1] = 240, [2] = 180, [3] = 120, [4] = 80, [5] = 50 },
[1] = { [0] = 466 + 2/3, [1] = 400, [2] = 333 + 1/3, [3] = 266 + 2/6, [4] = 200, [5] = 133 + 1/3 },
@@ -1041,6 +1050,7 @@ function MTH_Map:UpdateWorldMap()
pin:ClearAllPoints()
pin:SetPoint("CENTER", worldButton, "TOPLEFT", x, -y)
pin:Show()
MTH_Map_AnimatePin(pin)
end
end
+14
View File
@@ -14,6 +14,19 @@ if not MTH_MinimapButton then
MTH_MinimapButton = {}
end
-- Capture our PizzaSauce instance for the click pulse (guarded; may be nil).
local MTH_MB_Sauce = PizzaSauce
local function MTH_MB_AnimateClick()
if not MTH_MB_Sauce then return end
if type(MTH_FX_IsEnabled) == "function" and not MTH_FX_IsEnabled("ui.minimap") then return end
local icon = MTH_MinimapButton and MTH_MinimapButton.icon
if not icon or type(icon.SetWidth) ~= "function" then return end
-- Reset to base size first so rapid clicks can't make the icon drift in size.
icon:SetWidth(20)
icon:SetHeight(20)
MTH_MB_Sauce:Pulse(icon, 1.35, 0.28)
end
local function MTH_MB_L(key, default)
if MTH and MTH.GetLocalization then
return MTH:GetLocalization(key, default)
@@ -164,6 +177,7 @@ function MTH_MinimapButton:Initialize()
button:SetScript("OnClick", function()
local mouseButton = arg1
MTH_MB_AnimateClick()
if mouseButton == "RightButton" then
if type(MTH_OpenOptions) == "function" then
MTH_OpenOptions("General")
+18
View File
@@ -30,6 +30,23 @@ local function MTH_OPT_AnimateOpen(frame)
MTH_OPT_Sauce:SlideIn(frame, "UP", 60, 0.4, "outCubic")
end
-- Fade the active settings panel when switching options tabs, unless disabled.
local function MTH_OPT_AnimateTabContent(tabKey)
if not MTH_OPT_Sauce then return end
if type(MTH_FX_IsEnabled) == "function" and not MTH_FX_IsEnabled("ui.optiontabs") then return end
if type(MTH_OPTIONS_TABS) ~= "table" then return end
for i = 1, table.getn(MTH_OPTIONS_TABS) do
if MTH_OPTIONS_TABS[i].key == tabKey then
local frame = MTH_GetFrame(MTH_OPTIONS_TABS[i].frame)
if frame then
if type(frame.SetAlpha) == "function" then frame:SetAlpha(0) end
MTH_OPT_Sauce:FadeIn(frame, 0.22)
end
return
end
end
end
local function MTH_RegisterEscClose(frameName)
if not (frameName and UISpecialFrames) then
return
@@ -277,6 +294,7 @@ function MTH_SelectOptionsTab(tabKey)
end
end
end
MTH_OPT_AnimateTabContent(tabKey)
end
function MTH_ResetAndSelectOptionsTab(tabKey)