Files
TheTree_mock/tests/ui/capture_main_dashboard.gd
T

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)