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://world/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