66 lines
2.6 KiB
GDScript
66 lines
2.6 KiB
GDScript
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()
|