55 lines
2.0 KiB
GDScript
55 lines
2.0 KiB
GDScript
extends SceneTree
|
|
|
|
const DEFAULT_OUTPUT_PATH := "res://assets/mockups/the-tree-runtime-ui-v6-actors.png"
|
|
|
|
|
|
func _initialize() -> void:
|
|
call_deferred("_capture")
|
|
|
|
|
|
func _capture() -> void:
|
|
var capture_size := Vector2i(
|
|
maxi(int(OS.get_environment("THE_TREE_CAPTURE_WIDTH")), 1440),
|
|
maxi(int(OS.get_environment("THE_TREE_CAPTURE_HEIGHT")), 810)
|
|
)
|
|
var output_path := OS.get_environment("THE_TREE_CAPTURE_PATH")
|
|
if output_path.is_empty():
|
|
output_path = DEFAULT_OUTPUT_PATH
|
|
var capture_viewport := SubViewport.new()
|
|
capture_viewport.size = capture_size
|
|
capture_viewport.size_2d_override = Vector2i(1440, 810)
|
|
capture_viewport.size_2d_override_stretch = true
|
|
capture_viewport.render_target_update_mode = SubViewport.UPDATE_ALWAYS
|
|
root.add_child(capture_viewport)
|
|
var clock := root.get_node("GameClock")
|
|
var state := root.get_node("GameState")
|
|
var runtime := root.get_node("SimulationRuntime")
|
|
clock.reset(1, 6, 0)
|
|
state.reset()
|
|
runtime.initialize(clock, state, 424242)
|
|
clock.set_paused(true)
|
|
var main := load("res://scenes/main/main.tscn").instantiate() as Control
|
|
capture_viewport.add_child(main)
|
|
main.set_anchors_and_offsets_preset(Control.PRESET_FULL_RECT)
|
|
for frame: int in 8:
|
|
await process_frame
|
|
main.call("_hire_staff_candidate", &"staff_akane")
|
|
main.call("_select_build_definition", &"reception")
|
|
main.call("_on_map_cell_clicked", Vector3i(-6, 0, WorldService.LAYER_FRONT))
|
|
clock.advance_minutes(120)
|
|
main.call("_clear_active_tool")
|
|
var facilities: Array[Dictionary] = runtime.construction_service.get_facilities()
|
|
if not facilities.is_empty():
|
|
main.call("_on_facility_selected", StringName(facilities[0].get(&"instance_id", &"")))
|
|
for frame: int in 4:
|
|
await process_frame
|
|
var image := capture_viewport.get_texture().get_image()
|
|
if image == null:
|
|
push_error("Could not read the capture viewport texture.")
|
|
quit(ERR_CANT_ACQUIRE_RESOURCE)
|
|
return
|
|
var result := image.save_png(output_path)
|
|
if result != OK:
|
|
push_error("Could not save UI capture: %s" % error_string(result))
|
|
quit(result)
|