spaceship/buildings
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Loïc Wisniewski 721913c040 Guard the definition catalog against silent .tres property loss
Opening the project in the Godot editor re-saves .tres files, and its writer
DROPS properties it considers default-valued. An empty-looking
PackedStringArray is the usual casualty, and it has now cost this project
twice - both times silently, and both times the damage surfaced somewhere
else entirely:

  GasBurnerBuildingDefinition lost `capabilities` and `collected_outputs`,
  which took the burner's whole conversion with it.

  InterceptorVesselDefinition lost `capabilities`, `hull_points`,
  `build_time`, `icon` and `glow_color` - so the starting vessel had no
  cargo hold, and a full suite came back with ten unrelated tests broken
  because nothing anywhere could mine.

Neither raised an error. The resource still loaded; it was just quietly less
than it had been.

test_definitions_intact asserts the SHAPE of the catalog rather than any one
value: every vessel has a name, stats, a hull and its components; a hold and
a "cargo" capability imply each other; every building has a description, a
price, hit points, its build-menu wiring and at least one capability; and a
converter keeps the fields its conversion needs. Whatever the editor eats
now fails here, next to the thing that was eaten.

Verified against both real incidents by reproducing them: deleting the
interceptor's capabilities line fails with "cargo_capacity 20.0 but
capabilities []", and deleting the burner's collected_outputs fails with
"converts but lists no collected outputs".

The first draft of that last check looked for the conversion fields on the
DEFINITION, where they are not - they live on its logistics sub-resource -
so it answered null and never fired. It passed while the burner sat there
broken, which is the same class of quiet as the bug it is guarding.

Also restores what the editor took from the gas burner this time round.
2026-08-29 14:38:51 +02:00
..
Building.gd #99 (#97a): buildings have health, and can be destroyed 2026-08-23 13:37:40 +02:00
Building.gd.uid #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
Building.tscn #101 (#97c): waves attack buildings 2026-08-23 13:53:17 +02:00
BuildingActionProvider.gd #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
BuildingActionProvider.gd.uid #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
BuildingDefinition.gd #138: structures and doctrines cost more than rocks, and more the deeper they are 2026-08-28 15:30:30 +02:00
BuildingDefinition.gd.uid #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
BuildingDefinitions.gd #116: the Spacial Workshop, and the drones that mend what waves break 2026-08-23 21:59:51 +02:00
BuildingDefinitions.gd.uid #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
BuildingField.gd #146: shots, deaths and collapses are heard 2026-08-29 13:05:47 +02:00
BuildingField.gd.uid #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
BuildingHitbox.gd #101 (#97c): waves attack buildings 2026-08-23 13:53:17 +02:00
BuildingHitbox.gd.uid Add the .uid files Godot generated for the new scripts 2026-08-23 19:23:50 +02:00
BuildingLogisticsProfile.gd #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
BuildingLogisticsProfile.gd.uid #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
BuildingVisualBase.gd #117: the crafter and the lab animate only while they are working 2026-08-23 21:58:59 +02:00
BuildingVisualBase.gd.uid #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
CommandBuildingDefinition.tres #138: structures and doctrines cost more than rocks, and more the deeper they are 2026-08-28 15:30:30 +02:00
CommandBuildingVisual.gd #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
CommandBuildingVisual.gd.uid #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
CommandBuildingVisual.tscn #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
CrafterBuildingDefinition.tres #99 (#97a): buildings have health, and can be destroyed 2026-08-23 13:37:40 +02:00
CrafterBuildingVisual.gd #117: the crafter and the lab animate only while they are working 2026-08-23 21:58:59 +02:00
CrafterBuildingVisual.gd.uid #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
CrafterBuildingVisual.tscn #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
ExtractorBuildingDefinition.tres #99 (#97a): buildings have health, and can be destroyed 2026-08-23 13:37:40 +02:00
GasBurnerBuildingDefinition.tres Guard the definition catalog against silent .tres property loss 2026-08-29 14:38:51 +02:00
GasBurnerBuildingVisual.gd #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
GasBurnerBuildingVisual.gd.uid #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
GasBurnerBuildingVisual.tscn #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
MothershipBuildingDefinition.tres #99 (#97a): buildings have health, and can be destroyed 2026-08-23 13:37:40 +02:00
MothershipBuildingVisual.gd #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
MothershipBuildingVisual.gd.uid #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
MothershipBuildingVisual.tscn #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
OutpostBuildingDefinition.tres #138: structures and doctrines cost more than rocks, and more the deeper they are 2026-08-28 15:30:30 +02:00
OutpostBuildingVisual.gd #102/#103 (#97d/#97e): the outpost, and the garrison you compose for it 2026-08-23 14:02:20 +02:00
OutpostBuildingVisual.gd.uid Add the .uid files Godot generated for the new scripts 2026-08-23 19:23:50 +02:00
OutpostBuildingVisual.tscn #102/#103 (#97d/#97e): the outpost, and the garrison you compose for it 2026-08-23 14:02:20 +02:00
PlanningBuildingDefinition.tres #138: structures and doctrines cost more than rocks, and more the deeper they are 2026-08-28 15:30:30 +02:00
PlanningBuildingVisual.gd #106/#107 (#98a/#98b): the Planning Center 2026-08-23 14:21:52 +02:00
PlanningBuildingVisual.gd.uid Add the .uid files Godot generated for the new scripts 2026-08-23 19:23:50 +02:00
PlanningBuildingVisual.tscn #106/#107 (#98a/#98b): the Planning Center 2026-08-23 14:21:52 +02:00
ShipLabBuildingDefinition.tres #138: structures and doctrines cost more than rocks, and more the deeper they are 2026-08-28 15:30:30 +02:00
ShipLabBuildingVisual.gd #117: the crafter and the lab animate only while they are working 2026-08-23 21:58:59 +02:00
ShipLabBuildingVisual.gd.uid #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
ShipLabBuildingVisual.tscn #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
TransportHubBuildingDefinition.tres #138: structures and doctrines cost more than rocks, and more the deeper they are 2026-08-28 15:30:30 +02:00
TransportHubBuildingVisual.gd #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
TransportHubBuildingVisual.gd.uid #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
TransportHubBuildingVisual.tscn #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
WorkshopBuildingDefinition.tres #138: structures and doctrines cost more than rocks, and more the deeper they are 2026-08-28 15:30:30 +02:00
WorkshopBuildingVisual.gd #116: the Spacial Workshop, and the drones that mend what waves break 2026-08-23 21:59:51 +02:00
WorkshopBuildingVisual.gd.uid Add the .uid files Godot generated for the newest scripts 2026-08-24 12:10:41 +02:00
WorkshopBuildingVisual.tscn #116: the Spacial Workshop, and the drones that mend what waves break 2026-08-23 21:59:51 +02:00