extends AnimationPlayer # This scene player now responds to scene signals to handle music and animations. # The actual story playback is managed by CollectableUi directly. func _ready() -> void: Scenes.scene_starting.connect(_on_scene_starting) Scenes.scene_finished.connect(_on_scene_finished) func start_soundtrack(): $Moving.play(70) $Childhood.play(70) $VoiceTraining.play(70) func _on_scene_starting(scene_id: Scenes.id, _repeat: bool) -> void: print_debug("YouthRoomScenePlayer._on_scene_starting(%s)" % Scenes.id.keys()[scene_id]) # Handle scene-specific setup (music, chest animation, etc.) match scene_id: Scenes.id.YOUTH_CHILDHOOD: play("childhood_music") Scenes.id.YOUTH_VOICE_TRAINING: play("voice_music") _play_chest_animation() Scenes.id.YOUTH_JUI_JUTSU: play("jui_jutsu_music") Scenes.id.YOUTH_DRAVEN: play("draven") func _on_scene_finished(scene_id: Scenes.id, _repeat: bool) -> void: print_debug("YouthRoomScenePlayer._on_scene_finished(%s)" % Scenes.id.keys()[scene_id]) match scene_id: Scenes.id.YOUTH_CHILDHOOD: play_backwards("childhood_music") Scenes.id.YOUTH_VOICE_TRAINING: play_backwards("voice_music") queue("RESET") func _play_chest_animation() -> void: # Navigate up to youth_room to trigger chest reveal animation var room = get_parent().get_parent() if room and room.has_method("play_chest_reveal"): room.play_chest_reveal() func try_intro(): # Called from StoryPlayable for draven intro play("intro") func play(anim_name: StringName = "", a: float = -1, b: float = 1, c: bool = false) -> void: print_debug("YouthRoomScenePlayer.play(%s)" % anim_name) super.play(anim_name, a, b, c)