extends Node2D const DEFINITION := preload("res://resources/items/external_turret.tres") func _ready() -> void: GameState.start_new_run() var game := preload("res://scenes/game/game.tscn").instantiate() add_child(game) game.set_physics_process(false) var ship: CharacterBody2D = game.player ship.set_physics_process(false) ship.get_node("WeaponController").set_physics_process(false) ship.get_node("ExtensionSystems").set_physics_process(false) for enemy in get_tree().get_nodes_in_group("enemies"): enemy.queue_free() ship.position = Vector2(0,1500) ship.rotation = 0.0 ship.get_node("Camera2D").reset_smoothing() var inventory: ShipInventory = ship.get_node("ShipInventory") var item := ItemInstance.new() item.definition = DEFINITION inventory.weapon_slots[0] = item inventory.ammunition = 300 inventory.inventory_changed.emit() var targets: Array[Node2D] = [] for point in [Vector2(-260,-160),Vector2(260,-160)]: var enemy := preload("res://scenes/game/enemy_ship.tscn").instantiate() enemy.position = ship.position+point game.add_child(enemy) enemy.set_physics_process(false) enemy._player = ship enemy.max_hull = 10000.0 enemy.hull = 10000.0 targets.append(enemy) for point in [Vector2(-120,-70),Vector2(0,-120),Vector2(120,-70)]: var turret := Node2D.new() turret.set_script(preload("res://scripts/game/deployed_turret.gd")) turret.mother = ship turret.weapon = item turret.position = ship.position+point game.add_child(turret) turret.set_physics_process(false) turret._age = 1.0 turret._fire_timer = 0.0 turret._physics_process(0.1) var layer := CanvasLayer.new() layer.layer = 100 add_child(layer) var panel := PanelContainer.new() panel.position = Vector2(340,80) var style := StyleBoxFlat.new() style.bg_color = Color("07121ee8") style.border_color = Color("619ab9") style.set_border_width_all(1) style.set_corner_radius_all(8) style.set_content_margin_all(14) panel.add_theme_stylebox_override("panel",style) layer.add_child(panel) var row := HBoxContainer.new() row.add_theme_constant_override("separation",14) panel.add_child(row) var icon := TextureRect.new() icon.texture = DEFINITION.icon icon.custom_minimum_size = Vector2(72,72) icon.expand_mode = TextureRect.EXPAND_IGNORE_SIZE icon.stretch_mode = TextureRect.STRETCH_KEEP_ASPECT_CENTERED row.add_child(icon) var text := Label.new() text.text = "DZIAŁKA ZEWNĘTRZNE\n50 amunicji → 1 działko • 50 pocisków\nPołowa obrażeń działka maszynowego • Zasięg 550" text.add_theme_font_size_override("font_size",15) row.add_child(text) for frame in 12: await get_tree().process_frame for turret in get_tree().get_nodes_in_group("player_external_turrets"): turret.rotation = (targets[0].position-turret.position).angle()+PI*0.5 turret._fire(targets[0]) for child in game.get_children(): if child.get_script() == preload("res://scripts/game/weapon_projectile.gd"): child.set_physics_process(false) child.position += child.direction*55.0 turret.queue_redraw() await get_tree().process_frame await RenderingServer.frame_post_draw assert(get_viewport().get_texture().get_image().save_png("res://artifacts/external_turret_preview.png") == OK) print("EXTERNAL_TURRET_PREVIEW: PASS") get_tree().quit()