Randoloot/tests/previews/lander_engine_test.gd

54 lines
2.2 KiB
GDScript

extends Node
func _ready() -> void:
GameState.system_seed = 8428159
var game := preload("res://scenes/game/game.tscn").instantiate()
add_child(game)
await get_tree().process_frame
var manager := game.get_node("PlanetExpeditions")
for enemy in get_tree().get_nodes_in_group("enemies"):
enemy.position = Vector2(9000,9000)
game.player.position = game.protected_planet.position
manager.scan_nearby()
manager.land_nearby()
var surface: Control = manager.screen
var audio: AudioStreamPlayer = surface.get_node("EngineAudio")
var engine: Node2D = surface.lander.get_node("EngineVisual")
assert(audio.get_script() == preload("res://scripts/game/ship_engine_audio.gd"))
assert(audio.stream is AudioStreamMP3 and audio.stream.loop and audio.playing)
assert(engine.nozzle_positions.size() == 2 and engine.nozzle_positions[0].x < 0 and engine.nozzle_positions[1].x > 0)
Input.action_press("ship_thrust")
audio._process(1.0)
engine._process(0.25)
assert(surface.engine_thrust_active() and engine._strength == 1 and audio.volume_db == -11)
await get_tree().process_frame
await RenderingServer.frame_post_draw
get_viewport().get_texture().get_image().save_png("res://artifacts/lander_engines_normal.png")
Input.action_press("ship_mini_boost")
surface._physics_process(1.0/60)
engine._process(0.1)
assert(engine._boost)
await get_tree().process_frame
await RenderingServer.frame_post_draw
get_viewport().get_texture().get_image().save_png("res://artifacts/lander_engines_boost.png")
surface._dialog.show()
assert(not surface.engine_thrust_active())
audio._process(1)
engine._process(0.3)
assert(audio.volume_db == -60 and engine._strength == 0)
surface._dialog.hide()
Input.action_release("ship_thrust")
Input.action_release("ship_mini_boost")
surface._physics_process(1.0/60)
assert(not surface.engine_thrust_active())
surface._ending = true
assert(not surface.engine_thrust_active())
var instance := audio.get_instance_id()
manager.finish_surface(true)
await get_tree().process_frame
await get_tree().process_frame
assert(not is_instance_id_valid(instance))
game.queue_free()
await get_tree().process_frame
print("LANDER ENGINE PASS: ship MP3, twin nozzle positions, thrust, boost, POI silence, coast silence, shutdown cleanup")
get_tree().quit()