Randoloot/tests/previews/pulse_laser_preview.gd
2026-10-26 19:33:45 +01:00

66 lines
2.6 KiB
GDScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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()