class_name SFXPlayer3D
extends AudioStreamPlayer3D

@export var sfx_set: SFXSet
@onready var _free_on_finish: bool = true


func _ready() -> void:
	finished.connect(_on_finished)


func play_sfx_set(free_on_finish: bool) -> bool:
	_free_on_finish = free_on_finish
	if !sfx_set:
		return false
	if (!sfx_set.can_play()):
		_on_finished()
		return false
	sfx_set.apply(self)
	sfx_set.mark_played()
	play()
	return true


func _on_finished() -> void:
	if !sfx_set:
		return
	if _free_on_finish:
		queue_free()
