Animate ship crafter deliveries
This commit is contained in:
parent
fc68c4e8cf
commit
798deb48a1
5 changed files with 140 additions and 4 deletions
52
tests/test_vessel_delivery.gd
Normal file
52
tests/test_vessel_delivery.gd
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
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
|
||||
Loading…
Reference in a new issue