Fix UI bugs and bring the remaining screens into the new style #7

Merged
selimaj-dev merged 5 commits from ui-fixes into master 2026-09-27 17:15:01 +00:00
Owner

UI bug fixes, and the screens the redesign didn't cover brought into the same style. Tested on 1.21.11.

Emote wheel

  • Fixed: the slot index was taken before the middle slot was skipped, so emote 5 never showed and emote 8 showed on two pages. Empty slots could also be clicked, playing a null emote.
  • Fixed: previews were tinted with the theme colors, almost black on hover. They now keep their own colors.
  • Emotes are tiles with their names, an icon when there's no preview (Front Flip has none), and page controls in the middle cell that only show with more than one page.
  • The wheel key closes the wheel too (in the saturnclient PR).

Buttons, Shift menu and title screen

  • Button is one translucent outlined style that brightens on hover; IconButton is its square icon version. They replace the PNG TextureButtons and no longer use Element.scale, which multiplied click positions instead of dividing them.
  • Shift menu: HUD editor, Mods (it was labelled "Settings") and Cosmetics.
  • Title screen: the logo over a compact stack of the game's menus; along the bottom, a player chip (skin face, name, Saturn connection dot), an icon dock for Mods, Cosmetics and the HUD editor, and the version.

HUD editor

HUDs are drawn as they are in game, background included, with no blur behind them. Each has an outline and name while hovered or dragged and a visible resize handle. Scale stays within its range and HUDs stay on screen, and a hint says how to use it.

Cleanup

Removed TextureButton, ClickableTexture, Text, Notification, FadeOut, SlideX, Utils.getOrNull, Element.duration, 17 old PNG icons and 26 unused Textures constants.

Needs the saturnclient PR

A follow-up saturnclient PR points at this one's merge commit. It adds SaturnProvider.getPlayerSkin for the player chip, and closes the emote wheel with its key.

🤖 Generated with Claude Code

UI bug fixes, and the screens the redesign didn't cover brought into the same style. Tested on 1.21.11. ## Emote wheel - **Fixed:** the slot index was taken before the middle slot was skipped, so emote 5 never showed and emote 8 showed on two pages. Empty slots could also be clicked, playing a `null` emote. - **Fixed:** previews were tinted with the theme colors, almost black on hover. They now keep their own colors. - Emotes are tiles with their names, an icon when there's no preview (Front Flip has none), and page controls in the middle cell that only show with more than one page. - The wheel key closes the wheel too (in the saturnclient PR). ## Buttons, Shift menu and title screen - `Button` is one translucent outlined style that brightens on hover; `IconButton` is its square icon version. They replace the PNG `TextureButton`s and no longer use `Element.scale`, which multiplied click positions instead of dividing them. - **Shift menu:** HUD editor, Mods (it was labelled "Settings") and Cosmetics. - **Title screen:** the logo over a compact stack of the game's menus; along the bottom, a player chip (skin face, name, Saturn connection dot), an icon dock for Mods, Cosmetics and the HUD editor, and the version. ## HUD editor HUDs are drawn as they are in game, background included, with no blur behind them. Each has an outline and name while hovered or dragged and a visible resize handle. Scale stays within its range and HUDs stay on screen, and a hint says how to use it. ## Cleanup Removed `TextureButton`, `ClickableTexture`, `Text`, `Notification`, `FadeOut`, `SlideX`, `Utils.getOrNull`, `Element.duration`, 17 old PNG icons and 26 unused `Textures` constants. ## Needs the saturnclient PR A follow-up saturnclient PR points at this one's merge commit. It adds `SaturnProvider.getPlayerSkin` for the player chip, and closes the emote wheel with its key. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
selimaj-dev added 5 commits 2026-09-27 17:14:19 +00:00
The slot index was taken before the middle slot was skipped, so page one
showed emotes 0-4 and 6-8: emote 5 never appeared and emote 8 showed on
two pages. Emotes now fill the eight cells around the middle in order,
and slots past the last emote aren't drawn, so they can't play a null
emote.

Emotes show as EmoteTiles: the preview in its own colors (it was tinted,
almost black on hover), the name under it, an accent outline on hover, and
an icon when an emote has no preview. The middle cell holds the page and
its arrows when there's more than one page. Emote names and cosmetic names
share Utils.nameFromId.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Button is now primary (accent fill) or secondary (a translucent outlined
surface), and IconButton is a square secondary button with a Lucide icon,
replacing the PNG TextureButtons. Neither is scaled with Element.scale any
more, which multiplied click positions instead of dividing them.

The Shift menu is the HUD editor, the mod menu (its button was labelled
"Settings") and cosmetics. The title screen centers the logo over a
compact stack of the game's menus, with the player, a dock of Saturn's
screens and the version along the bottom. The player chip shows the
player's face from their skin and whether they're connected to Saturn.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Buttons no longer have a primary style: every button is the translucent
outlined surface that brightens on hover, and only an icon button's icon
takes the accent color. The title screen's dock shows just its icons.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
HUDs are drawn as they are in game, background included, through the
new HudModPreview.draw, and the world behind the editor isn't blurred.
Each has an outline that turns the accent color with the mod's name while
hovered or dragged, and a visible resize handle that's easier to grab.
Scale stays within its range and HUDs stay on screen, and a hint says how
to use the editor.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
TextureButton, ClickableTexture, Text, Notification and the FadeOut and
SlideX animations only Notification used, Utils.getOrNull and the
commented-out notify, Element.duration, the 17 PNG icons the Lucide SVGs
replaced, and the Textures constants for them and for files that don't
exist.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
selimaj-dev merged commit ef0ead6bf8 into master 2026-09-27 17:15:01 +00:00
selimaj-dev deleted branch ui-fixes 2026-09-27 17:15:03 +00:00
Sign in to join this conversation.