using Luski.Classes;

namespace Luski;

public static class LuskiExperiments
{
    public static List<ExperimentInfo> LuskiExperimentsList = new()
    {
        Parents.MainServer,
        Parents.ThemeEdit,
        new()
        {
            DisplayName = "Proper Message Label Size",
            Name = "2024_04_label_size",
            Options = new()
            {
                GUI.MessageLiveSize
            }
        }
    };
    
    public static class Parents
    {
        public static ExperimentInfo MainServer = new()
        {
            DisplayName = "Main Servers",
            Name = "2023_12_main_servers",
            Options = new()
            {
                MainServers.EnableLuskiMainServers,
                MainServers.EnableMainServers,
            }
        };
        public static ExperimentInfo ThemeEdit = new()
        {
            DisplayName = "Theme Editor",
            Name = "2023_12_theme_edit",
            Options = new()
            {
                Settings.Theme,
            }
        };
    }
    
    public static class Settings
    {
        public static readonly ExperimentSelectorInfo Theme = new()
        {
            Name = "Appearance Tab",
            Description = "Adds a tab to edit the theme options.",
        };
    }
        
    public static class MainServers
    {
        public static readonly ExperimentSelectorInfo EnableMainServers = new()
        {
            Name = "Enable Main Servers",
            Description = "Will allow the Luski client to connect to all main servers.",
            RequiresRestart = true,
        };
        public static readonly ExperimentSelectorInfo EnableLuskiMainServers = new()
        {
            Name = "Enable Luski Main Servers",
            Description = "Will force the Luski client to connect to Luski main servers.",
            RequiresRestart = true,
        };
    }
    
    public static class GUI
    {
        public static readonly ExperimentSelectorInfo MessageLiveSize = new()
        {
            Name = "Proper Label Size",
            Description = "Live updates messages to be the right length during resize.", RequiresRestart = false
        };
    }
}