spaceship/ui
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Loïc Wisniewski aabd5804cf #148: the main theme plays, and keeps playing
"All the time" is the whole of the requirement and it decides the shape.
The theme has to survive the main menu becoming the game, the game becoming
a planet surface, and the surface becoming the game again - so the player
cannot live in any of those scenes, because change_scene_to_file() frees
whichever one is current.

It is parented to the tree root instead, beside the GameState autoload,
which is the same trick for the same reason. Music.ensure() is idempotent by
node name, so each scene asks for the music on the way up and gets the one
already playing rather than a second copy over the top of it. Two call
sites cover everything: MainMenu, and GameController - which is the root
script of BOTH the space scene and the planet surface.

Done this way rather than as an autoload deliberately: project.godot carries
the developer's own uncommitted window settings, and adding music should not
drag those into a commit.

It is also PROCESS_MODE_ALWAYS. Since #128 a dialog stops the tree, and a
soundtrack that cuts out every time someone reads a line is worse than no
soundtrack.

The theme ships as MP3 rather than the 59MB WAV that was sitting in the
project root. Same 5m36s, 6.7MB, encoded with LAME at 160k - 89% smaller,
which is the difference between a repository that carries its music and one
that carries a WAV forever in its history. The original file is untouched
and still there, untracked, so nothing is lost.

The test checks CONTINUITY rather than "a sound started": the same player,
never a second one, through two scene changes and a dialog.
2026-08-29 13:05:21 +02:00
..
BreachOverlay.gd #125: slow the prologue down, and give the breach a real black hole 2026-08-24 13:25:10 +02:00
BreachOverlay.gd.uid Add the .uid files for the newest tests 2026-08-24 20:50:51 +02:00
DevWaveButton.gd #110: a dev-mode button that puts a wave on the board now 2026-08-23 21:58:58 +02:00
DevWaveButton.gd.uid Add the .uid files Godot generated for the newest scripts 2026-08-24 12:10:41 +02:00
FormationEditor.gd #118/#121: the speed fader and the formation editor under a mouse 2026-08-23 21:59:24 +02:00
FormationEditor.gd.uid #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
GarrisonPanel.gd #102/#103 (#97d/#97e): the outpost, and the garrison you compose for it 2026-08-23 14:02:20 +02:00
GarrisonPanel.gd.uid Add the .uid files Godot generated for the new scripts 2026-08-23 19:23:50 +02:00
HangarMenuPanel.gd #111/#120: the crafter and hangar panels get room to breathe 2026-08-23 21:59:26 +02:00
HangarMenuPanel.gd.uid Add the .uid files Godot generated for the newest scripts 2026-08-24 12:10:41 +02:00
IconButton.gd #140: the objective moves behind a button next to the map's 2026-08-28 15:37:13 +02:00
IconButton.gd.uid #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
MainMenu.gd #148: the main theme plays, and keeps playing 2026-08-29 13:05:21 +02:00
MainMenu.gd.uid #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
MainMenu.tscn #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
NarrationBanner.gd #128: a dialog stops the game until it is acknowledged 2026-08-28 14:40:46 +02:00
NarrationBanner.gd.uid Add the .uid files Godot generated for the newest scripts 2026-08-24 12:10:41 +02:00
NeonNumber.gd #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
NeonNumber.gd.uid #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
NeonPanel.gd #92: shrink the confirm popup to the window it is in 2026-08-22 23:29:44 +02:00
NeonPanel.gd.uid #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
PaletteEntryButton.gd #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
PaletteEntryButton.gd.uid #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
PlanningPanel.gd #106/#107 (#98a/#98b): the Planning Center 2026-08-23 14:21:52 +02:00
PlanningPanel.gd.uid Add the .uid files Godot generated for the new scripts 2026-08-23 19:23:50 +02:00
PriceTag.gd #138: structures and doctrines cost more than rocks, and more the deeper they are 2026-08-28 15:30:30 +02:00
PriceTag.gd.uid #136, #137, #134: one build grid that cannot stack, one way to show a price 2026-08-28 15:05:20 +02:00
QuestPanel.gd #140: the objective moves behind a button next to the map's 2026-08-28 15:37:13 +02:00
QuestPanel.gd.uid #140: the objective moves behind a button next to the map's 2026-08-28 15:37:13 +02:00
ResourceBar.gd #136, #137, #134: one build grid that cannot stack, one way to show a price 2026-08-28 15:05:20 +02:00
ResourceBar.gd.uid #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
ResourceReadout.gd #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
ResourceReadout.gd.uid #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
ResourceTransferList.gd #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
ResourceTransferList.gd.uid #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
SkillTreeView.gd #112: every skill node carries an icon 2026-08-23 21:59:27 +02:00
SkillTreeView.gd.uid #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
SpeedFader.gd #118/#121: the speed fader and the formation editor under a mouse 2026-08-23 21:59:24 +02:00
SpeedFader.gd.uid #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
TouchJoystick.gd #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
TouchJoystick.gd.uid #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
WaveAlert.gd #100 (#97b): waves replace the roaming enemy spawner 2026-08-23 13:37:42 +02:00
WaveAlert.gd.uid Add the .uid files Godot generated for the new scripts 2026-08-23 19:23:50 +02:00