Compare commits

...
1 Commits
Author SHA1 Message Date
selimaj-devandclaude 320b2fd9a5 Tighten the title screen around the logo
Give the title screen the shift menu's logo and wordmark, bring the
menus up under it, and make the dock smaller with a settings item.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-28 19:09:10 +02:00
2 changed files with 18 additions and 12 deletions
@@ -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)));