All checks were successful
forgejo/Czech Quests/addon/pipeline/head This commit looks good
155 lines
5.2 KiB
Lua
155 lines
5.2 KiB
Lua
local _, addon = ...
|
|
|
|
local Options = {}
|
|
addon.Options = Options
|
|
|
|
local function RegisterAddOnSettings(name, title)
|
|
return Settings.RegisterAddOnSetting(
|
|
Options.category,
|
|
"CzechQuestsAddon__" .. name,
|
|
name,
|
|
CzechQuestsAddon_Store.config,
|
|
type(CzechQuestsAddon_Store.config[name]),
|
|
title,
|
|
CzechQuestsAddon_Store.config[name]
|
|
)
|
|
end
|
|
|
|
local function RegisterProxySettings(name, title, setter)
|
|
return Settings.RegisterProxySetting(
|
|
Options.category,
|
|
"CzechQuestsAddon__" .. name,
|
|
type(CzechQuestsAddon_Store.config[name]),
|
|
title,
|
|
CzechQuestsAddon_Store.config[name],
|
|
function()
|
|
return CzechQuestsAddon_Store.config[name]
|
|
end,
|
|
function(value) setter(name, value) end
|
|
)
|
|
end
|
|
|
|
local function CreateCheckbox(name, title, setter)
|
|
local register = RegisterAddOnSettings(name, title)
|
|
register:SetValueChangedCallback(function(_, value) setter(name, value) end)
|
|
Settings.CreateCheckbox(Options.category, register)
|
|
end
|
|
|
|
local function CreateDropdown(name, title, items, setter)
|
|
Settings.CreateDropdown(Options.category, RegisterProxySettings(name, title, setter), items)
|
|
end
|
|
|
|
local function CreateSlider(name, title, min, max, step, setter)
|
|
local options = Settings.CreateSliderOptions(min, max, step)
|
|
options:SetLabelFormatter(MinimalSliderWithSteppersMixin.Label.Right);
|
|
Settings.CreateSlider(Options.category, RegisterProxySettings(name, title, setter), options)
|
|
end
|
|
|
|
local function CreateButton(title, label, setter)
|
|
Options.layout:AddInitializer(
|
|
CreateSettingsButtonInitializer(title, label, function(value) setter(name, value) end, nil, title)
|
|
)
|
|
end
|
|
|
|
local function InitQuests()
|
|
local function Update(name, value)
|
|
CzechQuestsAddon_Store.config[name] = value
|
|
addon.QuestFrame:UpdateSettings()
|
|
end
|
|
|
|
local layout = Options.layout
|
|
layout:AddInitializer(CreateSettingsListSectionHeaderInitializer("Questy"))
|
|
|
|
CreateCheckbox("QUEST_ENABLED", "Zapnout", Update)
|
|
|
|
if (WOW_PROJECT_ID == WOW_PROJECT_CLASSIC) then
|
|
CreateCheckbox("QUEST_DARK_MODE", "Pouzit tmavy rezim", Update)
|
|
end
|
|
|
|
CreateDropdown("QUEST_HEADER_FONT_NAME", "Pismo nadpisu", addon.API.GetFontContainer, Update)
|
|
|
|
CreateDropdown("QUEST_TEXT_FONT_NAME", "Pismo textu", addon.API.GetFontContainer, Update)
|
|
|
|
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 Update(name, value)
|
|
CzechQuestsAddon_Store.config[name] = value
|
|
addon.SpeechFrame:UpdateSettings()
|
|
end
|
|
|
|
local layout = Options.layout
|
|
layout:AddInitializer(CreateSettingsListSectionHeaderInitializer("Bubliny"))
|
|
|
|
CreateCheckbox("SPEECH_ENABLED", "Zapnout", Update)
|
|
|
|
CreateDropdown("SPEECH_TEXT_FONT_NAME", "Pismo *", addon.API.GetFontContainer, Update)
|
|
|
|
CreateSlider("SPEECH_TEXT_FONT_SIZE", "Velikost pisma *", 10, 30, 1, Update)
|
|
|
|
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
|
|
CzechQuestsAddon_Store.config.SPEECH_FRAME_POSITION_Y = 0
|
|
addon.SpeechFrame:UpdateSettings()
|
|
end)
|
|
|
|
CreateButton('Zobrazit testovaci zpravu', "Zobrazit", function()
|
|
addon.API.AddSpeechMessage("Test", "Text message")
|
|
end)
|
|
|
|
end
|
|
|
|
local function InitTactics()
|
|
local function Update(name, value)
|
|
CzechQuestsAddon_Store.config[name] = value
|
|
addon.TacticFrame:UpdateSettings()
|
|
end
|
|
|
|
local layout = Options.layout
|
|
layout:AddInitializer(CreateSettingsListSectionHeaderInitializer("Taktiky"))
|
|
|
|
CreateCheckbox("TACTIC_ENABLED", "Zapnout *", Update)
|
|
|
|
CreateDropdown("TACTIC_TEXT_FONT_NAME", "Pismo *", addon.API.GetFontContainer, Update)
|
|
|
|
CreateSlider("TACTIC_TEXT_FONT_SIZE", "Velikost pisma *", 10, 30, 1, Update)
|
|
end
|
|
|
|
local function InitOthers()
|
|
local layout = Options.layout
|
|
layout:AddInitializer(CreateSettingsListSectionHeaderInitializer("Ostatni"))
|
|
|
|
CreateCheckbox("DEBUG_MODE", "Zapnout DEBUG", function()
|
|
end)
|
|
end
|
|
|
|
local function InitOptions()
|
|
local category, layout = Settings.RegisterVerticalLayoutCategory("Czech Quests")
|
|
Options.category = category
|
|
Options.layout = layout
|
|
|
|
InitQuests()
|
|
InitSpeeches()
|
|
InitTactics()
|
|
InitOthers()
|
|
|
|
Settings.RegisterAddOnCategory(category)
|
|
end
|
|
addon.API.InitOptions = InitOptions
|