You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.5 KiB
53 lines
1.5 KiB
6 months ago
|
class_name DialogicNode_ButtonSound
|
||
|
extends AudioStreamPlayer
|
||
|
|
||
|
## Node that is used for playing sound effects on hover/focus/press of sibling DialogicNode_ChoiceButtons.
|
||
|
|
||
|
## Sound to be played if one of the sibling ChoiceButtons is pressed.
|
||
|
## If sibling ChoiceButton has a sound_pressed set, that is prioritized.
|
||
|
@export var sound_pressed:AudioStream
|
||
|
## Sound to be played on hover. See [sound_pressed] for more.
|
||
|
@export var sound_hover:AudioStream
|
||
|
## Sound to be played on focus. See [sound_pressed] for more.
|
||
|
@export var sound_focus:AudioStream
|
||
|
|
||
|
func _ready():
|
||
|
add_to_group('dialogic_button_sound')
|
||
|
_connect_all_buttons()
|
||
|
|
||
|
#basic play sound
|
||
|
func play_sound(sound) -> void:
|
||
|
if sound != null:
|
||
|
stream = sound
|
||
|
play()
|
||
|
|
||
|
func _connect_all_buttons():
|
||
|
for child in get_parent().get_children():
|
||
|
if child is DialogicNode_ChoiceButton:
|
||
|
child.button_up.connect(_on_pressed.bind(child.sound_pressed))
|
||
|
child.mouse_entered.connect(_on_hover.bind(child.sound_hover))
|
||
|
child.focus_entered.connect(_on_focus.bind(child.sound_focus))
|
||
|
|
||
|
|
||
|
#the custom_sound argument comes from the specifec button and get used
|
||
|
#if none are found, it uses the above sounds
|
||
|
|
||
|
func _on_pressed(custom_sound) -> void:
|
||
|
if custom_sound != null:
|
||
|
play_sound(custom_sound)
|
||
|
else:
|
||
|
play_sound(sound_pressed)
|
||
|
|
||
|
func _on_hover(custom_sound) -> void:
|
||
|
if custom_sound != null:
|
||
|
play_sound(custom_sound)
|
||
|
else:
|
||
|
play_sound(sound_hover)
|
||
|
|
||
|
func _on_focus(custom_sound) -> void:
|
||
|
if custom_sound != null:
|
||
|
play_sound(custom_sound)
|
||
|
else:
|
||
|
play_sound(sound_focus)
|
||
|
|