spaceship/ui
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Claude 9872cb9930 Draw the neon components in the editor, not just at runtime
Nothing under ui/ or vfx/ was marked @tool, so every hand-drawn control
rendered as an empty rect in the editor. BuildMenu.tscn positions its
buttons with hand-tuned pixel offsets (offset_left = -204) around a glyph
identified only as `icon = 8` - laying out invisible boxes by number.

@tool on the three scene-placed components that are safe to run in the
editor, covering 23 of the 34 placements: IconButton (20 scenes),
TouchJoystick (2), NeonPanel (1).

Two of them mutate persisted properties on _ready, which under @tool
would write computed values back into the .tscn every time the scene was
opened, so both are guarded with Engine.is_editor_hint():

  NeonPanel._fit_to_screen()  rewrites all four offsets
  TouchJoystick._relayout()   overwrites max_radius, which is @export

IconButton's _gui_input is guarded too, so clicking a button on the
editor canvas does not emit `pressed`.

The autoload-heavy drawers (ResourceBar, PriceTag, QuestPanel,
ResourceTransferList, SkillTreeView, FormationEditor - 6 to 16
GameState./Quests. references each) are left alone; they need their call
sites guarded first.

Verified: 172/172 headless, and a --headless --editor pass loads the
project with no script errors. That pass only proves the scripts parse
under @tool - it never opens a scene, so it does not exercise the
in-editor _draw.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019AJMdB7iuHuLFZM1aBu3GD
2026-09-08 14:13:51 +02:00
..
menus Stop redrawing what only needs moving 2026-09-08 11:35:45 +02:00
AbilityButtonLayout.gd Arrange fleet abilities around fire stick 2026-09-03 23:00:52 +02:00
AbilityButtonLayout.gd.uid Buy fleet berths with Fleet Offices 2026-09-05 17:09:27 +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
DevMenuButton.gd Add a free-costs sandbox tool 2026-09-04 22:34:36 +02:00
DevMenuButton.gd.uid Turn dev mode into sandbox menu 2026-09-03 20:05:33 +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
IconButton.gd Draw the neon components in the editor, not just at runtime 2026-09-08 14:13:51 +02:00
IconButton.gd.uid #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
LoadingScreen.gd Resolve pending gameplay tickets 2026-09-02 13:43:56 +02:00
LoadingScreen.gd.uid #166-#173: plainer words, a point to shoot at, and a catalog that says when it is broken 2026-08-30 14:04:46 +02:00
MainMenu.gd tmp 2026-08-30 16:53:08 +02:00
MainMenu.gd.uid #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
MainMenu.tscn Smooth boosted fleet travel 2026-09-04 20:01:56 +02:00
NarrationBanner.gd Polish dialog and intro transitions 2026-09-02 20:18:44 +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 Draw the neon components in the editor, not just at runtime 2026-09-08 14:13:51 +02:00
NeonPanel.gd.uid #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
PaletteEntryButton.gd Take planets by killing what defends them 2026-09-05 13:31:25 +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 Resolve pending gameplay tickets 2026-09-02 13:43:56 +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 #166-#173: plainer words, a point to shoot at, and a catalog that says when it is broken 2026-08-30 14:04:46 +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 Implement #160, #161, #162, #163, #164 and #165 2026-08-30 02:27:44 +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
ScannerGuidance.gd Stop redrawing what only needs moving 2026-09-08 11:35:45 +02:00
ScannerGuidance.gd.uid Buy fleet berths with Fleet Offices 2026-09-05 17:09:27 +02:00
ScannerGuidance.tscn Sharpen upgrades, mark the convoy's destination, and give the world sound 2026-09-05 12:16:17 +02:00
SkillTreeView.gd Implement #160, #161, #162, #163, #164 and #165 2026-08-30 02:27:44 +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 Draw the neon components in the editor, not just at runtime 2026-09-08 14:13:51 +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