extends Control ## Intro: Tisch, Konsole, Sprecher, Explosion — Platzhalter unter assets/sprites/placeholders/. const TEX_CONSOLE := preload("res://assets/sprites/placeholders/console.png") const TEX_CONSOLE_BOOM := preload("res://assets/sprites/placeholders/console_exploded.png") @onready var label: Label = $Label @onready var console: TextureRect = $Console @onready var boom_flash: TextureRect = $BoomFlash @onready var speaker: TextureRect = $Speaker var _step: int = 0 func _ready() -> void: GameState.current_scene_id = "intro_cutscene" Input.mouse_mode = Input.MOUSE_MODE_VISIBLE AudioDirector.stop_music() # Decorative full-screen nodes must not eat clicks meant to advance. mouse_filter = Control.MOUSE_FILTER_STOP for child_name in ["Bg", "Desk", "Console", "Speaker", "BoomFlash", "Label", "Hint"]: var n := get_node_or_null(child_name) as Control if n: n.mouse_filter = Control.MOUSE_FILTER_IGNORE console.texture = TEX_CONSOLE boom_flash.visible = false _show_step() func _gui_input(event: InputEvent) -> void: if event is InputEventMouseButton and event.pressed and event.button_index == MOUSE_BUTTON_LEFT: _advance() accept_event() func _unhandled_input(event: InputEvent) -> void: if event.is_action_pressed("skip_cutscene") \ or event.is_action_pressed("dialog_advance") \ or event.is_action_pressed("ui_accept") \ or event.is_action_pressed("interact") \ or event.is_action_pressed("attack"): _advance() get_viewport().set_input_as_handled() func _show_step() -> void: match _step: 0: # Sprecher + intakte Konsole auf dem Tisch speaker.visible = true boom_flash.visible = false console.texture = TEX_CONSOLE console.modulate = Color.WHITE label.text = Locale.tr_key("dialog_intro_1") AudioDirector.play_dialog_line("dialog_intro_1") 1: # Explosion AudioDirector.play_explosion() speaker.visible = false boom_flash.visible = true console.texture = TEX_CONSOLE_BOOM console.modulate = Color(1.2, 0.7, 0.4, 1) label.text = "BOOM" 2: # Nachspiel: Trümmer — same confirm keys as VN (Enter/C) + intro keys boom_flash.visible = false console.texture = TEX_CONSOLE_BOOM console.modulate = Color(0.7, 0.55, 0.45, 1) label.text = Locale.tr_key("dialog_intro_2") AudioDirector.play_dialog_line("dialog_intro_2") _: AudioDirector.stop_voice() GameState.goto_scene("village") func _advance() -> void: _step += 1 _show_step() func _on_skip_pressed() -> void: _advance()