The quiz (song, playlist, players, music player and the popups opened from
it) moves into Quiz.tscn and the top panel into TopBar.tscn. The main window
keeps only the top bar, the quiz and the popups opened from the top bar, so
other views can be added next to the quiz later. Every node keeps its place
on screen.
Screenshots of every UI state before and after are pixel-identical, and a
layout test checks each node against a baseline taken before the split.
- Visible columns share the width equally, whether one or five are shown
- Long soundtrack names and errors wrap inside their column instead of
widening the window, which pushed the title and Restart button out of
view and cut off text
- Separators only go between columns; the extra one before the first
column is gone
- Wider, centred panel with inner margins, and spacing above the
Restart button
- The Re-added header no longer reads ReAdded
- Settings: labels in one column and switches and number buttons lined
up in another, with margins inside the panel
- Log: title and margins; text no longer touches the panel edge
- Sync result: error list centred under its header, which now reads
Errors instead of CatchedErrors
- About: text wraps inside the panel instead of running under the
scrollbar
- Character select: wider panel, so the right column of characters is
no longer right next to the scrollbar
Popups:
- All nine popups now extend a shared PopupWindow class with open(),
close() and toggle(), instead of each copying its own close-on-click
code. Popups that need cleanup override close().
- A click outside a popup closed it and also pressed whatever was
underneath, e.g. Reset playlist. The closing click is now consumed.
- Popups used Godot's see-through default panel, so the song list and
titles showed through. They now use an opaque popup theme, and a
backdrop dims the window behind them.
- The main window root now fills the screen, so the backdrop covers it.
Text and images:
- Many labels and buttons forced nearest filtering, which made text and
icons jagged when the window is not 1920x1080. They now use the
default smooth filtering. Only the pixel-art "no character" picture
keeps nearest filtering when the winner window enlarges it.
Player list:
- A long player name pushed that row's character and buttons to the
right. Names now take the free space and shorten with an ellipsis, so
all rows line up and use the full width of the panel.
- The old character select scene, which was never shown but loaded
every character image at startup
- Unused SyncResponse and ProgressResponse classes
- Playlist.set_last_played_answered and select/local-loading code in
the new character select, none of which were called
- Settings.delete_player_children, identical to delete_children
- An unused variable holding a local file path
#23: Add a log for when points are given to players
#25: Fixed some graphical stuff
#26: Changed so the same character can be on a song multiple times
#27: Turning off statistics after win