Replace ScrollFrame with Messages queue and refactor speeches options

This commit is contained in:
Roman Jaroš 2025-03-07 17:11:59 +01:00
parent b6d64d65b5
commit b17f37ee42
5 changed files with 87 additions and 152 deletions

View file

@ -25,13 +25,13 @@ local function RegisterProxySettings(name, title, setter)
function()
return CzechQuestsAddon_Store.config[name]
end,
setter
function(value) setter(name, value) end
)
end
local function CreateCheckbox(name, title, setter)
local register = RegisterAddOnSettings(name, title)
register:SetValueChangedCallback(setter)
register:SetValueChangedCallback(function(_, value) setter(name, value) end)
Settings.CreateCheckbox(Options.category, register)
end
@ -47,7 +47,7 @@ end
local function CreateButton(title, label, setter)
Options.layout:AddInitializer(
CreateSettingsButtonInitializer(title, label, setter, nil, title)
CreateSettingsButtonInitializer(title, label, function(value) setter(name, value) end, nil, title)
)
end
@ -57,86 +57,67 @@ local function InitQuests()
addon.QuestFrame:UpdateSettings()
end
local function CreateQuestCheckbox(name, title)
CreateCheckbox(name, title, function (_, value) Update(name, value) end)
end
local function CreateQuestDropdown(name, title, items)
CreateDropdown(name, title, items, function (value) Update(name, value) end)
end
local function CreateQuestSlider(name, title, min, max, step)
CreateSlider(name, title, min, max, step, function (value) Update(name, value) end)
end
local layout = Options.layout
layout:AddInitializer(CreateSettingsListSectionHeaderInitializer("Questy"))
CreateQuestCheckbox("QUEST_ENABLED", "Zapnout")
CreateCheckbox("QUEST_ENABLED", "Zapnout", Update)
if (WOW_PROJECT_ID == WOW_PROJECT_CLASSIC) then
CreateQuestCheckbox("QUEST_DARK_MODE", "Pouzit tmavy rezim")
CreateCheckbox("QUEST_DARK_MODE", "Pouzit tmavy rezim", Update)
end
CreateQuestDropdown("QUEST_HEADER_FONT_NAME", "Pismo nadpisu", addon.API.GetFontContainer)
CreateQuestDropdown("QUEST_TEXT_FONT_NAME", "Pismo textu", addon.API.GetFontContainer)
CreateDropdown("QUEST_HEADER_FONT_NAME", "Pismo nadpisu", addon.API.GetFontContainer, Update)
CreateQuestSlider("QUEST_HEADER_FONT_SIZE", "Velikost nadpisu", 10, 30, 1)
CreateQuestSlider("QUEST_TEXT_FONT_SIZE", "Velikost textu", 10, 30, 1)
CreateDropdown("QUEST_TEXT_FONT_NAME", "Pismo textu", addon.API.GetFontContainer, Update)
CreateQuestSlider("QUEST_TEXTURE_ALPHA", "Pruhlednost pozadi", 10, 100, 10)
CreateQuestCheckbox("QUEST_TEXTURE_ALPHA_ONLY_MOVING", "Pruhlednost pouze pri chuzi")
CreateSlider("QUEST_HEADER_FONT_SIZE", "Velikost nadpisu", 10, 30, 1, Update)
CreateSlider("QUEST_TEXT_FONT_SIZE", "Velikost textu", 10, 30, 1, Update)
CreateSlider("QUEST_TEXTURE_ALPHA", "Pruhlednost pozadi", 10, 100, 10, Update)
CreateCheckbox("QUEST_TEXTURE_ALPHA_ONLY_MOVING", "Pruhlednost pouze pri chuzi", Update)
end
local function InitSpeeches()
local function CreateSpeechCheckbox(name, title)
CreateCheckbox(name, title, function (_, value)
CzechQuestsAddon_Store.config[name] = value
addon.SpeechFrame:UpdateSettings()
end)
end
local function CreateSpeechDropdown(name, title, items)
CreateDropdown(name, title, items, function (value)
CzechQuestsAddon_Store.config[name] = value
addon.SpeechFrame:UpdateSettings()
end)
end
local function CreateSpeechSlider(name, title, min, max, step)
CreateSlider(name, title, min, max, step, function (value)
CzechQuestsAddon_Store.config[name] = value
addon.SpeechFrame:UpdateSettings()
end)
local function Update(name, value)
CzechQuestsAddon_Store.config[name] = value
addon.SpeechFrame:UpdateSettings()
end
local layout = Options.layout
layout:AddInitializer(CreateSettingsListSectionHeaderInitializer("Bubliny"))
CreateSpeechCheckbox("SPEECH_ENABLED", "Zapnout")
CreateCheckbox("SPEECH_ENABLED", "Zapnout", Update)
CreateSpeechDropdown("SPEECH_TEXT_FONT_NAME", "Pismo *", addon.API.GetFontContainer)
CreateSpeechSlider("SPEECH_TEXT_FONT_SIZE", "Velikost pisma *", 10, 30, 1)
CreateDropdown("SPEECH_TEXT_FONT_NAME", "Pismo *", addon.API.GetFontContainer, Update)
CreateSpeechSlider("SPEECH_FRAME_WIDTH", "Sirka okna", 200, 1000, 10)
CreateSlider("SPEECH_TEXT_FONT_SIZE", "Velikost pisma *", 10, 30, 1, Update)
CreateSpeechCheckbox("SPEECH_ORIGINAL_WHEN_MISSING", "Original pokud není preklad ")
CreateSlider("SPEECH_FRAME_WIDTH", "Sirka okna", 200, 1000, 10, Update)
CreateCheckbox("SPEECH_ORIGINAL_WHEN_MISSING", "Original pokud není preklad", Update)
CreateSlider("SPEECH_MESSAGE_TEXTURE_ALPHA", "Pruhlednost pozadi zpravy", 0, 100, 10, Update)
CreateSlider("SPEECH_FRAME_POSITION_X", "Pozice okna X", 0, math.floor(GetScreenWidth()), 1, Update)
CreateSlider("SPEECH_FRAME_POSITION_Y", "Pozice okna Y", 0, math.floor(GetScreenHeight()), 1, Update)
CreateButton('Resetovat pozici okna', "RESET", function()
CzechQuestsAddon_Store.config.SPEECH_FRAME_POSITION = { x = 0, y = 0}
addon.SpeechFrame:SetPoint(
"TOPLEFT", UIParent, "TOPLEFT",
CzechQuestsAddon_Store.config.SPEECH_FRAME_POSITION.x,
CzechQuestsAddon_Store.config.SPEECH_FRAME_POSITION.y
)
CzechQuestsAddon_Store.config.SPEECH_FRAME_POSITION_X = 0
CzechQuestsAddon_Store.config.SPEECH_FRAME_POSITION_Y = 0
addon.SpeechFrame:UpdateSettings()
end)
end
local function InitOthers()
local layout = Options.layout
layout:AddInitializer(CreateSettingsListSectionHeaderInitializer("Ostatni"))
CreateCheckbox("DEBUG_MODE", "Zapnout DEBUG", function() end)
CreateCheckbox("DEBUG_MODE", "Zapnout DEBUG", function()
end)
end
local function InitOptions()