From 6ee2fc3b0e373160ef27b0083c9bc3146b75a0da Mon Sep 17 00:00:00 2001 From: Klesti Selimaj Date: Sat, 21 Feb 2026 20:42:04 +0100 Subject: [PATCH] Improved theme usability --- .../saturnclient/config/Theme.java | 22 +++++++++++++++++++ .../mixin/SplashOverlayMixin.java | 20 +++++++---------- 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/src/main/java/org/saturnclient/saturnclient/config/Theme.java b/src/main/java/org/saturnclient/saturnclient/config/Theme.java index a5125ae..5023458 100644 --- a/src/main/java/org/saturnclient/saturnclient/config/Theme.java +++ b/src/main/java/org/saturnclient/saturnclient/config/Theme.java @@ -45,11 +45,33 @@ public class Theme { config.property("Font", FONT); } + /** + * primary by default, accent if true + */ public static int getBg(boolean hover) { return hover ? ACCENT.value : PRIMARY.value; } + /** + * (Foreground) primary by default, accent if true + */ public static int getFg(boolean hover) { return hover ? ACCENT_FG.value : PRIMARY_FG.value; } + + /** + * Sets alpha using 0–255 range. + */ + public static int withAlpha(int alpha, int color) { + alpha = Math.max(0, Math.min(255, alpha)); + return (color & 0x00FFFFFF) | (alpha << 24); + } + + /** + * Sets alpha using 0.0–1.0 range. + */ + public static int withAlpha(float alpha, int color) { + alpha = Math.max(0f, Math.min(1f, alpha)); + return withAlpha((int) (alpha * 255f), color); + } } diff --git a/src/main/java/org/saturnclient/saturnclient/mixin/SplashOverlayMixin.java b/src/main/java/org/saturnclient/saturnclient/mixin/SplashOverlayMixin.java index 846b1cc..4570254 100644 --- a/src/main/java/org/saturnclient/saturnclient/mixin/SplashOverlayMixin.java +++ b/src/main/java/org/saturnclient/saturnclient/mixin/SplashOverlayMixin.java @@ -3,6 +3,7 @@ package org.saturnclient.saturnclient.mixin; import java.util.Optional; import java.util.function.Consumer; +import org.saturnclient.saturnclient.config.Theme; import org.saturnclient.ui2.RenderScope; import org.saturnclient.ui2.resources.Textures; import org.spongepowered.asm.mixin.Mixin; @@ -40,10 +41,6 @@ public abstract class SplashOverlayMixin { @Shadow(remap = false) private float progress; - private static int withAlpha(int color, int alpha) { - return color & 0xFFFFFF | alpha << 24; - } - /** * @reason Replace vanilla splash rendering completely but keep exit logic */ @@ -80,19 +77,17 @@ public abstract class SplashOverlayMixin { if (fadeOutProgress >= 1.0F) { renderCurrentScreen(context, mouseX, mouseY, delta); int overlayAlpha = computeOverlayAlpha(fadeOutProgress - 1f); - // context.fill(0, 0, screenWidth, screenHeight, - // withAlpha(0x53389E, overlayAlpha)); scope.drawTexture(Textures.SPLASH, 0, 0, 0, 0, screenWidth, screenHeight, - withAlpha(0xFFFFFF, overlayAlpha)); + Theme.withAlpha(0xFFFFFFFF, overlayAlpha)); } else if (reloading) { if (reloadProgress < 1.0F) { renderCurrentScreen(context, mouseX, mouseY, delta); } scope.drawTexture(Textures.SPLASH, 0, 0, 0, 0, screenWidth, screenHeight, - withAlpha(0xFFFFFF, alpha)); + Theme.withAlpha(0xFFFFFFFF, alpha)); } else { scope.drawTexture(Textures.SPLASH, 0, 0, 0, 0, screenWidth, screenHeight, - withAlpha(0xFFFFFF, alpha)); + Theme.withAlpha(0xFFFFFFFF, alpha)); } float u = this.reload.getProgress(); @@ -120,18 +115,19 @@ public abstract class SplashOverlayMixin { /** Draw the main logo centered */ private void drawLogo(RenderScope scope, int screenWidth, int screenHeight, int alpha) { scope.drawTexture(Textures.LOGO, (screenWidth - 60) / 2, ((screenHeight - 60) / 2) - 20, 0, 0, 60, 60, - withAlpha(0xFFFFFF, alpha)); + Theme.withAlpha(0xFFFFFFFF, alpha)); } private void renderProgressBar(RenderScope scope, DrawContext context, int screenWidth, int screenHeight, int alpha) { int progressY = ((screenHeight - 5) / 2) + 25; - context.drawBorder((screenWidth - 120) / 2, progressY, 120, 5, withAlpha(0xFFFFFF, alpha)); + context.drawBorder((screenWidth - 120) / 2, progressY, 120, 5, Theme.withAlpha(0xFFFFFFFF, alpha)); int progressWidth = Math.min((int) (progress * 120), 120); int progressX = (screenWidth - 120) / 2; - context.fill(progressX, progressY, progressX + progressWidth, progressY + 5, withAlpha(0xFFFFFF, alpha)); + context.fill(progressX, progressY, progressX + progressWidth, progressY + 5, + Theme.withAlpha(0xFFFFFFFF, alpha)); } /** Compute overlay alpha from fade progress */