Add GUI scale and glass, and rework the title screen #8

Merged
selimaj-dev merged 10 commits from glass-blur into master 2026-09-28 20:01:19 +00:00
2 changed files with 18 additions and 12 deletions
Showing only changes of commit 320b2fd9a5 - Show all commits
@@ -15,12 +15,12 @@ public class Dock extends Element {
public record Item(IdentifierRef icon, Runnable onClick) { public record Item(IdentifierRef icon, Runnable onClick) {
} }
public static final int HEIGHT = 52; public static final int HEIGHT = 40;
private static final int PADDING = 6; private static final int PADDING = 5;
private static final int ITEM = HEIGHT - PADDING * 2; private static final int ITEM = HEIGHT - PADDING * 2;
private static final int ICON = 18; private static final int ICON = 15;
private static final int GAP = 4; private static final int GAP = 3;
private final List<Item> items; private final List<Item> items;
@@ -27,9 +27,13 @@ import org.saturnclient.ui.resources.Textures;
* along the bottom the player, a dock of Saturn's screens and the version. * along the bottom the player, a dock of Saturn's screens and the version.
*/ */
public class TitleMenu extends SaturnScreen { public class TitleMenu extends SaturnScreen {
private static final int LOGO = 88; // The logo and wordmark as the shift menu has them: the wordmark over the logo's foot
private static final int WORDMARK_WIDTH = 200; private static final int LOGO = 98;
private static final int WORDMARK_HEIGHT = 20; private static final int WORDMARK_WIDTH = 98;
private static final int WORDMARK_HEIGHT = 10;
private static final int WORDMARK_Y = 88;
/** From the logo's foot to the menus, close so they read as one block */
private static final int MENUS_GAP = 14;
private static final int COLUMN_WIDTH = 280; private static final int COLUMN_WIDTH = 280;
private static final int BUTTON_HEIGHT = 36; private static final int BUTTON_HEIGHT = 36;
private static final int GAP = 8; private static final int GAP = 8;
@@ -51,16 +55,16 @@ public class TitleMenu extends SaturnScreen {
// Logo and menus, centered together a little above the middle // Logo and menus, centered together a little above the middle
int menusHeight = BUTTON_HEIGHT * 3 + GAP * 2; int menusHeight = BUTTON_HEIGHT * 3 + GAP * 2;
int blockHeight = LOGO + 16 + WORDMARK_HEIGHT + 36 + menusHeight; int blockHeight = LOGO + MENUS_GAP + menusHeight;
int top = (height - blockHeight) / 2 - 20; int top = (height - blockHeight) / 2 - 20;
draw(new ImageTexture(Config.getLogo()) draw(new ImageTexture(Config.getLogo())
.dimensions(LOGO, LOGO) .dimensions(LOGO, LOGO)
.position((width - LOGO) / 2, top) .position((width - LOGO) / 2, top)
.animation(new SlideY(AnimationConfig.logo, -20))); .animation(new SlideY(AnimationConfig.logo, -20)));
draw(new ImageTexture(Textures.LOGO_TEXT_BIG) draw(new ImageTexture(Textures.LOGO_TEXT)
.dimensions(WORDMARK_WIDTH, WORDMARK_HEIGHT) .dimensions(WORDMARK_WIDTH, WORDMARK_HEIGHT)
.position((width - WORDMARK_WIDTH) / 2, top + LOGO + 16) .position((width - WORDMARK_WIDTH) / 2, top + WORDMARK_Y)
.animation(new Fade(AnimationConfig.logo.duration.value))); .animation(new Fade(AnimationConfig.logo.duration.value)));
int rowHeight = BUTTON_HEIGHT + GAP; int rowHeight = BUTTON_HEIGHT + GAP;
@@ -80,7 +84,7 @@ public class TitleMenu extends SaturnScreen {
() -> Providers.saturn.getClient().scheduleStop()) () -> Providers.saturn.getClient().scheduleStop())
.dimensions(halfWidth, BUTTON_HEIGHT).position(COLUMN_WIDTH - halfWidth, rowHeight * 2)); .dimensions(halfWidth, BUTTON_HEIGHT).position(COLUMN_WIDTH - halfWidth, rowHeight * 2));
draw(menus.position((width - COLUMN_WIDTH) / 2, top + LOGO + 16 + WORDMARK_HEIGHT + 36)); draw(menus.position((width - COLUMN_WIDTH) / 2, top + LOGO + MENUS_GAP));
// Along the bottom: the player, Saturn's screens, the version // Along the bottom: the player, Saturn's screens, the version
draw(new AccountChip() draw(new AccountChip()
@@ -92,7 +96,9 @@ public class TitleMenu extends SaturnScreen {
new Dock.Item(Textures.ICON_COSMETICS, new Dock.Item(Textures.ICON_COSMETICS,
() -> Providers.saturn.getClient().setScreen(new CosmeticsMenu())), () -> Providers.saturn.getClient().setScreen(new CosmeticsMenu())),
new Dock.Item(Textures.ICON_HUD_EDITOR, new Dock.Item(Textures.ICON_HUD_EDITOR,
() -> Providers.saturn.getClient().setScreen(new HudEditor())))); () -> Providers.saturn.getClient().setScreen(new HudEditor())),
new Dock.Item(Textures.ICON_SETTINGS,
() -> Providers.saturn.getClient().setScreen(new ClientSettings()))));
draw(dock.position((width - dock.width) / 2, height - EDGE - Dock.HEIGHT) draw(dock.position((width - dock.width) / 2, height - EDGE - Dock.HEIGHT)
.animation(new SlideFade(AnimationConfig.mainMenu, 12))); .animation(new SlideFade(AnimationConfig.mainMenu, 12)));