extends Node func settle() -> void: for frame in 4: await get_tree().process_frame await RenderingServer.frame_post_draw func teleport(surface: Control, at: Vector2) -> void: surface.lander.position = at surface._previous_position = at surface.lander.reset_physics_interpolation() surface.camera.position = at surface.camera.reset_smoothing() surface.world.refresh_pois(at) func _ready() -> void: GameState.system_seed = 8428159 GameState.captain.credits = 500 var game := preload("res://scenes/game/game.tscn").instantiate() add_child(game) await settle() get_viewport().get_texture().get_image().save_png("res://artifacts/space_ship_comparison.png") var manager := game.get_node("PlanetExpeditions") for enemy in get_tree().get_nodes_in_group("enemies"): enemy.position = Vector2(9999,9999) var planet: Node2D = game.protected_planet var found_seed := 0 for index in range(200,240): var data: Dictionary = preload("res://scripts/planets/surface_generator.gd").generate(index,planet.planet_profile) if not data.events.is_empty(): found_seed = index break assert(found_seed > 0) planet.planet_profile.seed = found_seed ^ 7919 game.player.position = planet.position game.player.landing_combat_lock = 0 manager.scan_nearby() manager.land_nearby() var surface: Control = manager.screen assert(surface.camera.zoom.is_equal_approx(Vector2.ONE*0.8*surface.SURFACE_RENDER_SCALE)) assert(surface.world.data.structures.size() <= 5 and surface.world.data.events.size() == 1) assert(surface._surface_viewport.size == Vector2i(1920,1080)) for event_nodes in surface.world._event_nodes: assert(event_nodes.size() == 1 and event_nodes.has("marker")) var event: Dictionary = surface.world.data.events[0] event.kind = "trader" teleport(surface,event.position+Vector2(0,220)) await settle() get_viewport().get_texture().get_image().save_png("res://artifacts/planet_scenery_event_marker.png") teleport(surface,event.position+Vector2(0,100)) surface._check_events() assert(surface._dialog.visible) await settle() get_viewport().get_texture().get_image().save_png("res://artifacts/trader_event_offer.png") var purchase: Button for child in surface._choices.get_children(): if child is Button and child.text.begins_with("Kup ") and child.text.contains("rakiet"): purchase = child assert(purchase != null and not purchase.disabled) purchase.pressed.emit() assert(event.complete and GameState.captain.credits == 500-int(event.missile_price)) assert(surface.progress.cargo_missiles == int(event.missile_count)) await settle() get_viewport().get_texture().get_image().save_png("res://artifacts/trader_event_result.png") var keys: Array = preload("res://scripts/planets/surface_scenery.gd").KINDS.duplicate() keys.append("engineer_camp") var sheet := Image.create(1280,640,false,Image.FORMAT_RGBA8) sheet.fill(Color("15252e")) for index in keys.size(): var texture: Texture2D = load("res://assets/planets/props/%s.png" % keys[index]) var image: Image = texture.get_image() if image.is_compressed(): image.decompress() image.convert(Image.FORMAT_RGBA8) assert(image.get_pixel(0,0).a < 0.01) var scale_value := minf(285.0/image.get_width(),285.0/image.get_height()) image.resize(roundi(image.get_width()*scale_value),roundi(image.get_height()*scale_value),Image.INTERPOLATE_LANCZOS) sheet.blend_rect(image,Rect2i(Vector2i.ZERO,image.get_size()),Vector2i(index%4*320+(320-image.get_width())/2,index/4*320+(320-image.get_height())/2)) sheet.save_png("res://artifacts/surface_props_sheet.png") manager.finish_surface(true) game.queue_free() await get_tree().process_frame print("SURFACE SCENERY UI PASS: zoom, props, transparency, automatic event dialog, discounted rockets, temporary expedition cargo") get_tree().quit()