sokoban
Diffstat (limited to 'Music.gd')
| -rw-r--r-- | Music.gd | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/Music.gd b/Music.gd new file mode 100644 index 0000000..064a2b7 --- /dev/null +++ b/Music.gd @@ -0,0 +1,82 @@ +extends Node + +export(Array, AudioStream) var music_list = [] + +var music_index = 0 +var lowering_sound = false +const min_vol_db = -17 + +onready var musicPlayer = $AudioStreamPlayer +onready var tween = $Tween + + +func _ready(): + music_list.shuffle() + list_play() + + +func list_play(): + assert(music_list.size() > 0) + musicPlayer.stream = music_list[music_index] + musicPlayer.play() + music_index += 1 + if music_index == music_list.size(): + music_index = 0 + + tween.interpolate_property( + musicPlayer, + "volume_db", + musicPlayer.volume_db, + min_vol_db, + 40, + Tween.TRANS_LINEAR, + Tween.EASE_IN_OUT + ) + + +func lower_sound(): + lowering_sound = true + var new_vol = musicPlayer.volume_db + new_vol -= 10 + tween.interpolate_property( + musicPlayer, + "volume_db", + musicPlayer.volume_db, + new_vol, + .5, + tween.TRANS_LINEAR, + tween.EASE_IN_OUT + ) + tween.start() + + +func continue_playback(): + lowering_sound = false + _on_Timer_timeout() + + +func list_stop(): + musicPlayer.stop() + + +func _on_AudioStreamPlayer_finished(): + music_list.shuffle() + list_play() + + +func _on_Timer_timeout(): + var new_pitch = rand_range(.9, 1.1) + tween.interpolate_property( + musicPlayer, + "pitch_scale", + musicPlayer.pitch_scale, + new_pitch, + 1, + tween.TRANS_LINEAR, + tween.EASE_IN_OUT + ) + tween.start() +# if not lowering_sound: +# var new_vol = rand_range(-8, -12) +# tween.interpolate_property(musicPlayer, "volume_db", musicPlayer.volume_db, new_vol, .5, tween.TRANS_LINEAR, tween.EASE_IN_OUT) +# tween.start() |