2026-03-15 03:57:31 +00:00
|
|
|
#@tool
|
|
|
|
|
#@icon(icon_path: String)
|
|
|
|
|
class_name Level
|
|
|
|
|
extends Node2D
|
|
|
|
|
## Documentation comments
|
|
|
|
|
|
|
|
|
|
#signal
|
|
|
|
|
#enum
|
|
|
|
|
#const
|
2026-03-16 04:25:37 +00:00
|
|
|
const EINE_KLEINE_BLANK = preload("uid://diaivgv13xa8k")
|
|
|
|
|
const OUTRO = preload("uid://c7eypje2fjbyx")
|
2026-03-15 03:57:31 +00:00
|
|
|
|
|
|
|
|
@export var level_number: int = 0
|
2026-03-16 04:25:37 +00:00
|
|
|
@export var instruction_strings: Array[String]
|
2026-03-15 03:57:31 +00:00
|
|
|
|
2026-03-16 04:25:37 +00:00
|
|
|
#var musicians: Array[Musician]
|
|
|
|
|
var next_instruction: String
|
|
|
|
|
|
|
|
|
|
@onready var ok_button: Button = %OKButton
|
|
|
|
|
@onready var instructions: Label = %Instructions
|
|
|
|
|
@onready var tilemaps: Tilemaps = $Tilemaps
|
|
|
|
|
## Musicians
|
2026-03-15 03:57:31 +00:00
|
|
|
@onready var conductor: Musician = %Conductor
|
|
|
|
|
@onready var bassist: Musician = %Bassist
|
2026-03-16 04:25:37 +00:00
|
|
|
@onready var cellist: Musician = %Cellist
|
|
|
|
|
@onready var violinist: Musician = %Violinist
|
2026-03-15 03:57:31 +00:00
|
|
|
|
|
|
|
|
## OVERRIDES
|
|
|
|
|
|
|
|
|
|
func _ready() -> void:
|
2026-03-16 04:25:37 +00:00
|
|
|
_connect_signals()
|
2026-03-15 03:57:31 +00:00
|
|
|
tilemaps.canvas_modulate.visible = true
|
2026-03-16 04:25:37 +00:00
|
|
|
#if instruction_strings:
|
|
|
|
|
#next_instruction = instruction_strings.pop_front()
|
|
|
|
|
#SceneManager.load_level(level_number)
|
|
|
|
|
if level_number < 3:
|
|
|
|
|
violinist.queue_free()
|
|
|
|
|
if level_number < 2:
|
|
|
|
|
cellist.queue_free()
|
|
|
|
|
if level_number < 1:
|
|
|
|
|
bassist.queue_free()
|
|
|
|
|
else:
|
|
|
|
|
conductor.audio.stream = EINE_KLEINE_BLANK
|
|
|
|
|
conductor.input_prompt.visible = false
|
|
|
|
|
#musicians = [
|
|
|
|
|
#conductor,
|
|
|
|
|
#bassist,
|
|
|
|
|
#cellist,
|
|
|
|
|
#violinist
|
|
|
|
|
#]
|
2026-03-15 03:57:31 +00:00
|
|
|
#func _process(_delta: float) -> void:
|
|
|
|
|
#pass
|
|
|
|
|
#
|
|
|
|
|
#func _physics_process(_delta: float) -> void:
|
|
|
|
|
#pass
|
|
|
|
|
|
|
|
|
|
## CORE
|
2026-03-16 04:25:37 +00:00
|
|
|
func ui_continue() -> void:
|
|
|
|
|
if instruction_strings.size() > 0:
|
|
|
|
|
instructions.text = instruction_strings.pop_front()
|
|
|
|
|
else:
|
|
|
|
|
level_number += 1
|
|
|
|
|
if level_number <= 3:
|
|
|
|
|
SceneManager.load_level(level_number)
|
|
|
|
|
else:
|
|
|
|
|
get_tree().change_scene_to_packed(OUTRO)
|
2026-03-15 03:57:31 +00:00
|
|
|
|
|
|
|
|
## PRIVATE/HELPER
|
2026-03-16 04:25:37 +00:00
|
|
|
|
|
|
|
|
func _connect_signals() -> void:
|
|
|
|
|
ok_button.connect("pressed", on_ok_button_pressed)
|
|
|
|
|
|
2026-03-15 03:57:31 +00:00
|
|
|
## RECEIVERS
|
2026-03-16 04:25:37 +00:00
|
|
|
func on_ok_button_pressed() -> void:
|
|
|
|
|
ui_continue()
|
2026-03-15 03:57:31 +00:00
|
|
|
|
|
|
|
|
## SETTERS/GETTERS
|