69 lines
2.8 KiB
GDScript
69 lines
2.8 KiB
GDScript
extends Node
|
|
|
|
func _ready() -> void:
|
|
GameState.start_new_run()
|
|
GameState.system_seed = 8428159
|
|
var game := preload("res://scenes/game/game.tscn").instantiate()
|
|
add_child(game)
|
|
game.set_physics_process(false)
|
|
game.player.set_physics_process(false)
|
|
game.player.get_node("WeaponController").set_physics_process(false)
|
|
var manager: Node = game.get_node("PlanetExpeditions")
|
|
manager.set_process(false)
|
|
for enemy in get_tree().get_nodes_in_group("enemies"):
|
|
enemy.set_physics_process(false)
|
|
enemy.position = Vector2(-9999,-9999)
|
|
await get_tree().process_frame
|
|
for target in [manager.freighter,game.protected_planet]:
|
|
game.player.position = target.position
|
|
game.player.landing_combat_lock = 0.0
|
|
manager._process(0.11)
|
|
assert(manager._prompt.visible)
|
|
var position: Vector2 = game.player.position
|
|
for repetition in 3:
|
|
game.player.landing_combat_lock = 0.05
|
|
manager._process(0.016)
|
|
assert(not manager._prompt.visible)
|
|
manager.land_nearby()
|
|
assert(not is_instance_valid(manager.screen))
|
|
assert(manager._message_time == 0.0,"Combat cannot leave a stale warning over the docking card")
|
|
game.player.landing_combat_lock = 0.0
|
|
manager._process(0.016)
|
|
assert(manager._prompt.visible,"Timer expiration restores the card without movement")
|
|
assert(not manager._land_button.disabled)
|
|
if target == game.protected_planet:
|
|
assert(manager._text.text.contains("TLEN") and manager._text.text.contains("ŚREDNIA SZANSA POI"))
|
|
assert(GameState.captain.expedition.scans.has(target.planet_profile.id))
|
|
assert(manager._prompt.find_children("*","Button",true,false).size()==1,"Only the land/dock button remains")
|
|
assert(game.player.position == position)
|
|
var enemy: Node2D = get_tree().get_first_node_in_group("enemies")
|
|
enemy.position = position+Vector2(100,0)
|
|
enemy.hull = 100.0
|
|
manager._process(0.016)
|
|
assert(not manager._prompt.visible)
|
|
enemy.hull = 0.0
|
|
manager._process(0.016)
|
|
assert(manager._prompt.visible,"Dead ships cannot keep docking blocked")
|
|
enemy.hull = 100.0
|
|
manager._process(0.016)
|
|
assert(not manager._prompt.visible)
|
|
enemy.queue_free()
|
|
manager._process(0.016)
|
|
assert(manager._prompt.visible,"Queued enemies cannot keep docking blocked")
|
|
get_tree().paused = true
|
|
manager._process(0.016)
|
|
assert(not manager._prompt.visible)
|
|
get_tree().paused = false
|
|
manager._process(0.016)
|
|
assert(manager._prompt.visible,"Resuming restores the card without movement")
|
|
await get_tree().process_frame
|
|
game.player.position = manager.freighter.position
|
|
manager._process(0.11)
|
|
manager.land_nearby()
|
|
assert(is_instance_valid(manager.screen) and get_tree().paused)
|
|
manager._leave()
|
|
manager._process(0.016)
|
|
assert(manager._prompt.visible and not get_tree().paused)
|
|
print("ORBITAL_PROMPT_RECOVERY_TEST: PASS (stationary freighter/planet; combat lock expiry; live/dead/queued enemies; pause and docking)")
|
|
game.queue_free()
|