83 lines
3.7 KiB
GDScript
83 lines
3.7 KiB
GDScript
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()
|