conductor/main.gd

64 lines
1.6 KiB
GDScript3
Raw Normal View History

2026-03-13 01:20:57 +00:00
#@tool
#@icon(icon_path: String)
#class_name MyNode
extends Node
## Documentation comments
## signal
## enum
## const
## @export var
var musicians: Array[Node]
var musician_lights: Array[Node]
@onready var rhythm_manager: RhythmManager = %RhythmManager
@onready var conductor: AnimatedSprite2D = $Conductor
@onready var conductor_light: PointLight2D = %ConductorLight
@onready var click_track: AudioStreamPlayer2D = %ClickTrack
## OVERRIDES
func _ready() -> void:
musicians = get_tree().get_nodes_in_group("musicians")
print("Musicians: " + str(musicians))
2026-03-13 01:20:57 +00:00
musician_lights = get_tree().get_nodes_in_group("musician_lights")
rhythm_manager.connect("song_started", on_song_started)
#func _process(delta: float) -> void:
#pass
#
#func _physics_process(delta: float) -> void:
#pass
func _unhandled_input(event: InputEvent) -> void:
if event.is_action_pressed("ready"):
conductor.play("default")
conductor_light.visible = true
click_track.play()
if event.is_action_pressed("viol"):
enter_instrument(musicians[0])
if event.is_action_pressed("cello"):
enter_instrument(musicians[1])
if event.is_action_pressed("bass"):
enter_instrument(musicians[2])
2026-03-13 01:20:57 +00:00
## CORE
func enter_instrument(instrument: Node) -> void:
print("Now playing " + instrument.name)
var instrument_audio: AudioStreamPlayer2D = instrument.get_child(0)
var instrument_light: PointLight2D = instrument.get_child(1)
instrument.play("default")
instrument_audio.play()
instrument_light.visible = true
2026-03-13 01:20:57 +00:00
## PRIVATE/HELPER
## RECEIVERS
func on_song_started() -> void:
for musician in musicians:
musician.play("default")
for light in musician_lights:
light.visible = true
## SETTERS/GETTERS