spaceship/tests/test_vessel_delivery.gd
2026-08-13 21:39:05 +02:00

52 lines
1.7 KiB
GDScript

extends SceneTree
# Forgejo #28: a completed crafter order visibly travels to the mothership,
# rather than appearing in the hangar at the instant the build timer ends.
var game_state: Node
var scene: Node
var stage := 0
var elapsed := 0.0
func _initialize() -> void:
game_state = root.get_node("GameState")
game_state.buildings.clear()
game_state.extractors.clear()
game_state.transporters.clear()
game_state.vessel_deliveries.clear()
game_state.stored_vessels.clear()
game_state.build_time_scale = 0.02
game_state.add_building(GameState.BUILDING_MOTHERSHIP, Vector2.ZERO)
game_state.add_building(GameState.BUILDING_SHIP_CRAFTER, Vector2(900, 0))
game_state.deposit_to_building(2, GameState.SHIP_COST)
game_state.queue_order(2, GameState.PRODUCT_SHIP)
scene = load("res://Main.tscn").instantiate()
root.add_child(scene)
func _process(delta: float) -> bool:
elapsed += delta
if stage == 0 and not game_state.vessel_deliveries.is_empty():
if not game_state.stored_vessels.is_empty():
return _fail("ship reached hangar before its delivery flight")
var field: Node = scene.get_node("VesselDeliveryField")
if field.active.is_empty():
return _fail("delivery flight was not rendered")
print("finished ship launched from crafter toward mothership")
stage = 1
if stage == 1 and game_state.vessel_deliveries.is_empty():
if game_state.stored_vessels.size() != 1:
return _fail("delivered ship did not arrive in hangar")
print("delivery arrived in mothership hangar")
print("TEST_VESSEL_DELIVERY: PASS")
quit(0)
return true
if elapsed > 8.0:
return _fail("delivery timed out")
return false
func _fail(message: String) -> bool:
print("TEST_VESSEL_DELIVERY: FAIL (%s)" % message)
quit(1)
return true