extends SceneTree func _initialize() -> void: call_deferred("run") func capture(label: String) -> void: for frame in 4: await process_frame await RenderingServer.frame_post_draw root.get_texture().get_image().save_png("res://logs/operator-game-" + label + ".png") print("CAPTURE ", label) func run() -> void: create_timer(100).timeout.connect(func(): quit(1)) var game: Node3D = load("res://scenes/main.tscn").instantiate() root.add_child(game) while not game.ready_for_play: await process_frame game.ui.controls_menu() await capture("controls") game.ui.operator_menu() await create_timer(0.5).timeout await capture("gallery") game.port = 27978 game.host({"server_name": "Operator render", "mode": "TDM", "max_players": 2, "bots": 1, "score_limit": 100, "time_limit": 600}) game.set_physics_process(false) game.set_process_unhandled_input(false) Input.mouse_mode = Input.MOUSE_MODE_VISIBLE for actor: Fighter in game.players.values(): actor.set_physics_process(false) var player: Fighter = game.players[1] player.reset_at(Vector3(0.2, 0.1, 24)) player.protection = 0 for variant: String in ["steve", "gas_mask"]: player.operator_id = variant player.life += 1 player.weapon = 0 player.reload_left = 0 player.aiming = false await create_timer(0.5).timeout await capture(variant + "-hip") player.aiming = true await create_timer(0.5).timeout await capture(variant + "-ads") player.reload_left = float(player.weapon_stats().reload) * 0.55 await create_timer(0.2).timeout await capture(variant + "-reload") player.weapon = 4 player.reload_left = 0 await create_timer(0.5).timeout await capture("pistol") game.leave() await process_frame quit()