New Release Version 2.0 #3

Merged
Torsten merged 8 commits from dev into main 2026-04-16 09:11:55 +00:00
4 changed files with 35 additions and 30 deletions
Showing only changes of commit af16ab1c0c - Show all commits

View File

@@ -248,7 +248,6 @@ L["OPT_RT_ASSIGNMENT_LEAD_TIME"] = "Vorlaufzeit fuer Zuweisung"
L["OPT_RT_ASSIGNMENT_LEAD_TIME_DESC"] = "Wie viele Sekunden vor dem geplanten Einsatz der zugewiesene Spieler ausgewaehlt werden soll." L["OPT_RT_ASSIGNMENT_LEAD_TIME_DESC"] = "Wie viele Sekunden vor dem geplanten Einsatz der zugewiesene Spieler ausgewaehlt werden soll."
L["OPT_RT_ALERT_HEADER"] = "Hinweisfenster" L["OPT_RT_ALERT_HEADER"] = "Hinweisfenster"
L["OPT_RT_UNLOCK"] = "Hinweisfenster entsperren" L["OPT_RT_UNLOCK"] = "Hinweisfenster entsperren"
L["OPT_RT_PREVIEW"] = "Vorschau anzeigen"
L["OPT_RT_ALERT_COLOR"] = "Textfarbe" L["OPT_RT_ALERT_COLOR"] = "Textfarbe"
L["OPT_RT_ALERT_PREVIEW"] = "Gelassenheit in 5" L["OPT_RT_ALERT_PREVIEW"] = "Gelassenheit in 5"
L["OPT_RT_DESC"] = "Lege hier Encounter-Timelines an und oeffne fuer die visuelle Planung den interaktiven Ace3-Timeline-Editor." L["OPT_RT_DESC"] = "Lege hier Encounter-Timelines an und oeffne fuer die visuelle Planung den interaktiven Ace3-Timeline-Editor."
@@ -313,7 +312,6 @@ L["OPT_RT_INVALID_SPELL"] = "HMGT: ungueltige Spell-ID"
L["OPT_RT_TIMELINE_VIEWPORT"] = "Timeline-Fenster" L["OPT_RT_TIMELINE_VIEWPORT"] = "Timeline-Fenster"
L["OPT_RT_TIMELINE_EMPTY_WINDOW"] = "Im aktuellen Zeitfenster sind keine Cooldowns." L["OPT_RT_TIMELINE_EMPTY_WINDOW"] = "Im aktuellen Zeitfenster sind keine Cooldowns."
L["OPT_RT_TIMELINE_EDITOR"] = "Interaktive Timeline" L["OPT_RT_TIMELINE_EDITOR"] = "Interaktive Timeline"
L["OPT_RT_OPEN_EDITOR"] = "Timeline oeffnen"
L["OPT_RT_START_TEST"] = "Timeline-Test starten" L["OPT_RT_START_TEST"] = "Timeline-Test starten"
L["OPT_RT_STOP_TEST"] = "Test stoppen" L["OPT_RT_STOP_TEST"] = "Test stoppen"
L["OPT_RT_TEST_HINT"] = "Laesst die Encounter-Timeline ausserhalb des Kampfes ablaufen, damit du Zuweisungen, Whisper und Debug-Ausgaben pruefen kannst." L["OPT_RT_TEST_HINT"] = "Laesst die Encounter-Timeline ausserhalb des Kampfes ablaufen, damit du Zuweisungen, Whisper und Debug-Ausgaben pruefen kannst."

View File

@@ -246,7 +246,6 @@ L["OPT_RT_ASSIGNMENT_LEAD_TIME"] = "Assignment lead time"
L["OPT_RT_ASSIGNMENT_LEAD_TIME_DESC"] = "How many seconds before the planned use the assigned player should be selected." L["OPT_RT_ASSIGNMENT_LEAD_TIME_DESC"] = "How many seconds before the planned use the assigned player should be selected."
L["OPT_RT_ALERT_HEADER"] = "Alert frame" L["OPT_RT_ALERT_HEADER"] = "Alert frame"
L["OPT_RT_UNLOCK"] = "Unlock alert frame" L["OPT_RT_UNLOCK"] = "Unlock alert frame"
L["OPT_RT_PREVIEW"] = "Preview alert"
L["OPT_RT_ALERT_COLOR"] = "Text colour" L["OPT_RT_ALERT_COLOR"] = "Text colour"
L["OPT_RT_ALERT_PREVIEW"] = "Tranquility in 5" L["OPT_RT_ALERT_PREVIEW"] = "Tranquility in 5"
L["OPT_RT_DESC"] = "Create encounter timelines here and open the interactive Ace3 timeline editor for visual planning." L["OPT_RT_DESC"] = "Create encounter timelines here and open the interactive Ace3 timeline editor for visual planning."
@@ -311,7 +310,6 @@ L["OPT_RT_INVALID_SPELL"] = "HMGT: invalid spell ID"
L["OPT_RT_TIMELINE_VIEWPORT"] = "Timeline window" L["OPT_RT_TIMELINE_VIEWPORT"] = "Timeline window"
L["OPT_RT_TIMELINE_EMPTY_WINDOW"] = "No cooldowns in the current window." L["OPT_RT_TIMELINE_EMPTY_WINDOW"] = "No cooldowns in the current window."
L["OPT_RT_TIMELINE_EDITOR"] = "Interactive Timeline" L["OPT_RT_TIMELINE_EDITOR"] = "Interactive Timeline"
L["OPT_RT_OPEN_EDITOR"] = "Open timeline"
L["OPT_RT_START_TEST"] = "Start timeline test" L["OPT_RT_START_TEST"] = "Start timeline test"
L["OPT_RT_STOP_TEST"] = "Stop test" L["OPT_RT_STOP_TEST"] = "Stop test"
L["OPT_RT_TEST_HINT"] = "Runs the encounter timeline outside of combat so you can verify assignments, whispers and debug output." L["OPT_RT_TEST_HINT"] = "Runs the encounter timeline outside of combat so you can verify assignments, whispers and debug output."

View File

@@ -881,9 +881,6 @@ function WorldMapPinMixin:OnLoad()
if self.SetScalingLimits then if self.SetScalingLimits then
self:SetScalingLimits(1, 1.0, 1.2) self:SetScalingLimits(1, 1.0, 1.2)
end end
if self.SetPassThroughButtons then
self:SetPassThroughButtons("")
end
end end
function WorldMapPinMixin:OnAcquired(poi, settings, owner) function WorldMapPinMixin:OnAcquired(poi, settings, owner)

View File

@@ -8,6 +8,7 @@ if not HMGT_Config or not HMGT_Config.RegisterOptionsProvider then return end
local L = LibStub("AceLocale-3.0"):GetLocale(ADDON_NAME, true) or {} local L = LibStub("AceLocale-3.0"):GetLocale(ADDON_NAME, true) or {}
local AceConfigRegistry = LibStub("AceConfigRegistry-3.0") local AceConfigRegistry = LibStub("AceConfigRegistry-3.0")
local AceConfigDialog = LibStub("AceConfigDialog-3.0", true)
local LSM = LibStub("LibSharedMedia-3.0", true) local LSM = LibStub("LibSharedMedia-3.0", true)
local FONT_OUTLINE_VALUES = { local FONT_OUTLINE_VALUES = {
@@ -43,6 +44,15 @@ local function Notify(rebuild)
AceConfigRegistry:NotifyChange(ADDON_NAME) AceConfigRegistry:NotifyChange(ADDON_NAME)
end end
local function SelectRaidTimelineGeneral()
if not AceConfigDialog or type(AceConfigDialog.SelectGroup) ~= "function" then
return
end
pcall(function()
AceConfigDialog:SelectGroup(ADDON_NAME, "modules", "raidTimeline", "general")
end)
end
local function GetDrafts() local function GetDrafts()
HMGT._raidTimelineDraft = HMGT._raidTimelineDraft or { HMGT._raidTimelineDraft = HMGT._raidTimelineDraft or {
addEncounterId = "", addEncounterId = "",
@@ -523,13 +533,9 @@ local function BuildEncounterDetailGroup(encounterId)
diffOrder = diffOrder + 0.01 diffOrder = diffOrder + 0.01
end end
args.openTimelineEditor = {
type = "execute", order = 7, width = "full", name = L["OPT_RT_OPEN_EDITOR"] or "Open timeline",
func = function() if RT.OpenTimelineEditor then RT:OpenTimelineEditor(encounterId) end end,
}
args.runTest = { args.runTest = {
type = "execute", type = "execute",
order = 7.5, order = 7,
width = "full", width = "full",
name = function() name = function()
if RT:IsTestRunning(encounterId) then if RT:IsTestRunning(encounterId) then
@@ -549,19 +555,19 @@ local function BuildEncounterDetailGroup(encounterId)
} }
args.testHint = { args.testHint = {
type = "description", type = "description",
order = 7.6, order = 7.1,
width = "full", width = "full",
name = L["OPT_RT_TEST_HINT"] or "Runs the encounter timeline outside of combat so you can verify assignments, whispers and debug output.", name = L["OPT_RT_TEST_HINT"] or "Runs the encounter timeline outside of combat so you can verify assignments, whispers and debug output.",
} }
args.editorHint = {
type = "description", order = 8, width = "full",
name = L["OPT_RT_TIMELINE_HINT"] or "Click the bar to add a cooldown. Drag markers horizontally to change the time. Mousewheel scrolls, Ctrl+Mousewheel zooms.",
}
args.encounterDelete = { args.encounterDelete = {
type = "execute", order = 9, width = "full", name = DELETE or "Delete", type = "execute", order = 8, width = "full", name = DELETE or "Delete",
disabled = function() return not RT:IsLocalEditor() end, disabled = function() return not RT:IsLocalEditor() end,
confirm = function() return string.format(L["OPT_RT_DELETE_ENCOUNTER_CONFIRM"] or "Delete raid timeline for encounter %d?", tonumber(encounterId) or 0) end, confirm = function() return string.format(L["OPT_RT_DELETE_ENCOUNTER_CONFIRM"] or "Delete raid timeline for encounter %d?", tonumber(encounterId) or 0) end,
func = function() RT:RemoveEncounter(encounterId); Notify(true) end, func = function()
RT:RemoveEncounter(encounterId)
Notify(true)
SelectRaidTimelineGeneral()
end,
} }
args.entryBreak = { type = "description", order = 10, width = "full", name = " " } args.entryBreak = { type = "description", order = 10, width = "full", name = " " }
@@ -569,7 +575,14 @@ local function BuildEncounterDetailGroup(encounterId)
args[key] = value args[key] = value
end end
return { type = "group", name = GetBossTreeLabel(encounterId), args = args } return {
type = "group",
name = GetBossTreeLabel(encounterId),
hidden = function()
return RT:GetEncounter(encounterId) == nil
end,
args = args,
}
end end
local function BuildRaidTreeArgs() local function BuildRaidTreeArgs()
@@ -679,34 +692,33 @@ function RT:GetOptionsGroup()
set = function(_, val) set = function(_, val)
RT:GetSettings().unlocked = val and true or false RT:GetSettings().unlocked = val and true or false
RT:ApplyAlertStyle() RT:ApplyAlertStyle()
if val then RT:ShowPreview() end if val then
RT:ShowPreview()
else
RT:HideAlert()
end
end, end,
}, },
preview = {
type = "toggle", order = 5, width = "double", name = L["OPT_RT_PREVIEW"] or "Preview alert",
get = function() return RT.previewAlertActive == true end,
set = function(_, val) if val then RT:ShowPreview() else RT:HideAlert() end end,
},
alertFont = { alertFont = {
type = "select", order = 6, width = 1.4, name = L["OPT_FONT"] or "Typeface", type = "select", order = 5, width = 1.4, name = L["OPT_FONT"] or "Typeface",
dialogControl = "LSM30_Font", dialogControl = "LSM30_Font",
values = AceGUIWidgetLSMlists and AceGUIWidgetLSMlists.font or (LSM and LSM:HashTable("font")) or {}, values = AceGUIWidgetLSMlists and AceGUIWidgetLSMlists.font or (LSM and LSM:HashTable("font")) or {},
get = function() return RT:GetSettings().alertFont or "Friz Quadrata TT" end, get = function() return RT:GetSettings().alertFont or "Friz Quadrata TT" end,
set = function(_, val) RT:GetSettings().alertFont = val; RT:ApplyAlertStyle() end, set = function(_, val) RT:GetSettings().alertFont = val; RT:ApplyAlertStyle() end,
}, },
alertFontSize = { alertFontSize = {
type = "range", order = 7, min = 10, max = 72, step = 1, width = 1.0, name = L["OPT_FONT_SIZE"] or "Font size", type = "range", order = 6, min = 10, max = 72, step = 1, width = 1.0, name = L["OPT_FONT_SIZE"] or "Font size",
get = function() return tonumber(RT:GetSettings().alertFontSize) or 30 end, get = function() return tonumber(RT:GetSettings().alertFontSize) or 30 end,
set = function(_, val) RT:GetSettings().alertFontSize = math.floor((tonumber(val) or 30) + 0.5); RT:ApplyAlertStyle() end, set = function(_, val) RT:GetSettings().alertFontSize = math.floor((tonumber(val) or 30) + 0.5); RT:ApplyAlertStyle() end,
}, },
alertFontOutline = { alertFontOutline = {
type = "select", order = 8, width = 1.0, name = L["OPT_FONT_OUTLINE"] or "Font outline", type = "select", order = 7, width = 1.0, name = L["OPT_FONT_OUTLINE"] or "Font outline",
values = FONT_OUTLINE_VALUES, values = FONT_OUTLINE_VALUES,
get = function() return RT:GetSettings().alertFontOutline or "OUTLINE" end, get = function() return RT:GetSettings().alertFontOutline or "OUTLINE" end,
set = function(_, val) RT:GetSettings().alertFontOutline = val; RT:ApplyAlertStyle() end, set = function(_, val) RT:GetSettings().alertFontOutline = val; RT:ApplyAlertStyle() end,
}, },
alertColor = { alertColor = {
type = "color", order = 9, width = 0.8, name = L["OPT_RT_ALERT_COLOR"] or "Text colour", hasAlpha = true, type = "color", order = 8, width = 0.8, name = L["OPT_RT_ALERT_COLOR"] or "Text colour", hasAlpha = true,
get = function() get = function()
local color = RT:GetSettings().alertColor or {} local color = RT:GetSettings().alertColor or {}
return color.r or 1, color.g or 0.82, color.b or 0.15, color.a or 1 return color.r or 1, color.g or 0.82, color.b or 0.15, color.a or 1