52 lines
1.7 KiB
GDScript
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
|