extends Node2D class DemoLaser extends "res://scripts/game/weapon_controller.gd": func _aim_direction_from(_origin: Vector2) -> Vector2: return Vector2.RIGHT var _ship: CharacterBody2D var _controller: Node var _item: ItemInstance var _automatic := true var _status: Label var _delay := 0.0 func _ready() -> void: GameState.start_new_run() var game := preload("res://scenes/game/game.tscn").instantiate() add_child(game) game.set_physics_process(false) _ship = 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() _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() _controller = DemoLaser.new() _ship.add_child(_controller) _controller.set_physics_process(false) var target := preload("res://scenes/game/weapon_test_target.tscn").instantiate() target.position = _ship.position+Vector2(450,0) game.add_child(target) target.get_node("Sprite2D").rotation = -PI*0.5 var overlay := CanvasLayer.new() overlay.layer = 100 add_child(overlay) var panel := PanelContainer.new() panel.position = Vector2(350,90) var style := StyleBoxFlat.new() style.bg_color = Color("130913ec") style.border_color = Color("d75f6c") style.set_border_width_all(1) style.set_content_margin_all(14) panel.add_theme_stylebox_override("panel",style) overlay.add_child(panel) _status = Label.new() _status.add_theme_font_size_override("font_size",16) panel.add_child(_status) _update_status() print("PULSE_LASER_LIVE_DEMO: running — SPACE toggles fire, ESC closes demo") func _physics_process(delta: float) -> void: if not is_instance_valid(_controller): return _controller._shot_timers[0] = maxf(0.0,_controller._shot_timers[0]-delta) _delay += delta if _automatic and _delay >= 1.0: _ship.energy = _ship.max_energy _controller._fire_laser(0,_item) func _unhandled_key_input(event: InputEvent) -> void: if event is InputEventKey and event.pressed and not event.echo: if event.keycode == KEY_SPACE: _automatic = not _automatic _update_status() get_viewport().set_input_as_handled() elif event.keycode == KEY_ESCAPE: get_tree().quit() func _update_status() -> void: _status.text = "LASER PULSACYJNY · %s\nPojedyncze czerwone impulsy lecą do celu · 1500 px/s\nSPACJA: włącz/wyłącz strzelanie · ESC: zamknij pokaz" % ("STRZELA" if _automatic else "WSTRZYMANY")