Randoloot/tests/previews/surface_weather_preview.gd
2026-10-18 19:26:02 +02:00

53 lines
2.5 KiB
GDScript

extends Node
func _ready() -> void:
var sheet := Image.create(1280,1080,false,Image.FORMAT_RGBA8)
var progress: Resource = GameState.captain.expedition
for biome in 6:
var profile: Dictionary = preload("res://scripts/planets/planet_profiles.gd").generate(99,biome,"Pogoda / biom %d" % (biome+1))
profile.temperature = 75 if biome == 4 else (-35 if biome == 5 else 20)
progress.lander_hp = 100
assert(progress.begin_visit(profile))
progress.visit_seed = 200+biome
var surface := Control.new()
surface.set_script(preload("res://scripts/planets/surface_screen.gd"))
surface.captain = GameState.captain
surface.progress = progress
add_child(surface)
surface.set_process(false)
surface.set_physics_process(false)
surface.weather.set_process(false)
surface.flight_effects.set_process(false)
surface.weather.intensity = 0.75
surface.weather.target_intensity = 0.75
assert(surface.weather._biome == biome)
assert(surface.weather.z_index > surface.lander.z_index)
assert(surface.flight_effects.z_index < surface.lander.z_index)
Input.action_press("ship_thrust")
for frame in 240:
surface.weather._process(1.0/60)
surface.flight_effects._process(1.0/60)
assert(surface.weather._particles.size() > 0)
assert(surface.weather._particles.size() <= surface.weather.LIMIT)
assert(surface.flight_effects._particles.size() > 0)
assert(surface.flight_effects._particles.size() <= surface.flight_effects.LIMIT)
assert(surface.flight_effects._shadow.texture == surface.lander.texture)
for frame in 5: await get_tree().process_frame
await RenderingServer.frame_post_draw
var image: Image = get_viewport().get_texture().get_image()
assert(image.save_png("res://artifacts/weather_biome_%d.png" % biome) == OK)
image.convert(Image.FORMAT_RGBA8)
image.resize(640,360,Image.INTERPOLATE_LANCZOS)
sheet.blit_rect(image,Rect2i(0,0,640,360),Vector2i(biome%2*640,biome/2*360))
Input.action_release("ship_thrust")
for frame in 180: surface.flight_effects._process(1.0/60)
assert(surface.flight_effects._particles.is_empty(),"Ground wash must expire after stopping engines")
if biome == 5: assert(surface.flight_effects.surface_kind(Vector2.ZERO) == "snow")
progress.finish_visit(GameState.captain,false)
surface.queue_free()
await get_tree().process_frame
await get_tree().process_frame
assert(sheet.save_png("res://artifacts/weather_biomes_review.png") == OK)
print("SURFACE WEATHER PASS: six biomes, layered shadow/weather, bounded particles, engine emission and expiry, snow wash")
get_tree().quit()