extends Node2D class StraightLaser extends "res://scripts/game/weapon_controller.gd": func _aim_direction_from(_origin: Vector2) -> Vector2: return Vector2.RIGHT 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 = PI*0.5 ship.get_node("Camera2D").reset_smoothing() var item := ItemInstance.new() item.definition = preload("res://resources/items/pulse_laser.tres") var inventory: ShipInventory = ship.get_node("ShipInventory") inventory.weapon_slots[0] = item inventory.inventory_changed.emit() var controller := StraightLaser.new() ship.add_child(controller) controller.set_physics_process(false) 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("130913ec") style.border_color = Color("c55965") 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 = item.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 = "LASER PULSACYJNY\n50% impulsów omija tarcze\n−30% obrażeń • +30% zużycia energii" text.add_theme_font_size_override("font_size",15) row.add_child(text) for frame in 12: await get_tree().process_frame for distance in [120.0,420.0]: controller._shot_timers[0] = 0.0 controller._fire_laser(0,item) for bolt in game.get_children(): if bolt.get_script() == preload("res://scripts/game/weapon_projectile.gd") and bolt.is_physics_processing(): bolt.set_physics_process(false) bolt._physics_process(distance/item.definition.projectile_speed) await get_tree().process_frame await RenderingServer.frame_post_draw assert(get_viewport().get_texture().get_image().save_png("res://artifacts/pulse_laser_flying_preview.png") == OK) print("PULSE_LASER_PREVIEW: PASS") get_tree().quit()