diff --git a/JiayiLauncher/Appearance/PaletteGenerator.cs b/JiayiLauncher/Appearance/PaletteGenerator.cs index 062f44d..b92d46e 100644 --- a/JiayiLauncher/Appearance/PaletteGenerator.cs +++ b/JiayiLauncher/Appearance/PaletteGenerator.cs @@ -128,10 +128,11 @@ public static void CreatePalette() ); var allChannelsAverage = (averageColor.R + averageColor.G + averageColor.B) / 3; + allChannelsAverage = Math.Clamp(allChannelsAverage + Random.Shared.Next(-20, 20), 0, 255); var dark = allChannelsAverage < 200; // prefer dark // values and stuff - var accent = palette[0]; + var accent = palette[Random.Shared.Next(0, palette.Count / 2)]; Color primaryBackground; Color secondaryBackground; diff --git a/JiayiLauncher/Settings/JiayiSettings.cs b/JiayiLauncher/Settings/JiayiSettings.cs index a17b37f..a1952d0 100644 --- a/JiayiLauncher/Settings/JiayiSettings.cs +++ b/JiayiLauncher/Settings/JiayiSettings.cs @@ -8,6 +8,7 @@ using System.Text.Json; using System.Text.Json.Serialization; using System.Text.RegularExpressions; +using System.Threading; using System.Threading.Tasks; using JiayiLauncher.Appearance; using JiayiLauncher.Features.Mods; @@ -157,7 +158,7 @@ public float[] MovementSpeed public bool UseBackgroundImage { get => _themeState.ThemeStyles.GetProperty(":root", "--background-image")?.Value != "none"; - set => _themeState.UpdateTheme("--background-image", value ? $"url('')" : "none"); + set => _themeState.UpdateTheme("--background-image", value ? "url('')" : "none"); } @@ -196,7 +197,7 @@ public string BackgroundImageUrl if (Instance.UseBackgroundImage) return Regex.Match(_themeState.ThemeStyles.GetProperty(":root", "--background-image")?.Value ?? "", @"url\(\'(?[^']+)\'\)").Groups["url"].Value; - _themeState.UpdateTheme("--background-image", $"none"); + _themeState.UpdateTheme("--background-image", "none"); return string.Empty; } set @@ -208,7 +209,8 @@ public string BackgroundImageUrl [JsonIgnore] [Setting("Generate palette from background", "Appearance", - "Create a color palette based on your background image. Videos are NOT supported.", "UseBackgroundImage")] + "Create a color palette based on your background image. Videos are NOT supported.", "UseBackgroundImage", + "Palette generation is memory intensive and may take a while. Every generated palette is slightly different.")] public (string, Action) GeneratePalette { get; set; } = ("Generate", () => { if (!Instance.UseBackgroundImage) return; diff --git a/JiayiLauncher/Shared/ThemeController.razor b/JiayiLauncher/Shared/ThemeController.razor index 41aa23b..e205962 100644 --- a/JiayiLauncher/Shared/ThemeController.razor +++ b/JiayiLauncher/Shared/ThemeController.razor @@ -52,10 +52,7 @@ var theme = CssBuilder.FromFile(themeStyles); theme.UpdateProperty(":root", new CssProperty("--background-image", - $"url('./themes/{JiayiSettings.Instance.Theme}/background.gif'), " + - $"url('./themes/{JiayiSettings.Instance.Theme}/background.png'), " + - $"url('./themes/{JiayiSettings.Instance.Theme}/background.jpg')")); - ThemeState.Instance.ApplyTheme(theme); + $"url('{JiayiSettings.Instance.BackgroundImageUrl}')")); await base.OnInitializedAsync(); }