spaceship/tests/test_building_composition.gd
2026-08-14 23:15:12 +02:00

39 lines
1.3 KiB
GDScript

extends SceneTree
const BUILDING_DEFINITIONS = preload("res://BuildingDefinitions.gd")
func _initialize() -> void:
var scene: PackedScene = load("res://Building.tscn")
for definition in BUILDING_DEFINITIONS.all():
if definition.placement_mode != "space":
continue
var building: Node2D = scene.instantiate()
building.definition_id = definition.definition_id
building._ready()
if building.definition == null \
or building.definition.definition_id != definition.definition_id \
or building.visual == null:
_fail("%s did not compose its definition and visual (resolved=%s visual=%s)" % [
definition.definition_id,
"null" if building.definition == null else building.definition.definition_id,
building.visual,
])
return
var provider: Node = building.visual.get_node_or_null("ActionProvider")
if definition.definition_id == GameState.BUILDING_TRANSPORT_HUB:
if provider != null or not building.available_actions().is_empty():
_fail("transport hub composed a manual action")
return
elif provider == null or not provider.actions.has("transfer"):
_fail("%s has no composed transfer action" % definition.definition_id)
return
building.free()
print("TEST_BUILDING_COMPOSITION: PASS")
quit(0)
func _fail(message: String) -> void:
print("TEST_BUILDING_COMPOSITION: FAIL (%s)" % message)
quit(1)