Music to my ears.
This commit is contained in:
parent
884f49fed3
commit
1570f6986f
15 changed files with 168 additions and 25 deletions
|
@ -14,7 +14,6 @@ sounds = {
|
|||
[node name="SoggyAmbience" type="AudioStreamPlayer" parent="."]
|
||||
stream = ExtResource("2_3njyb")
|
||||
volume_db = -10.0
|
||||
autoplay = true
|
||||
bus = &"Background Sound"
|
||||
|
||||
[node name="WinSound" type="AudioStreamPlayer" parent="."]
|
||||
|
|
53
autoloads/music.gd
Normal file
53
autoloads/music.gd
Normal file
|
@ -0,0 +1,53 @@
|
|||
@tool
|
||||
extends Node
|
||||
|
||||
|
||||
@export_dir var songs_dir: String
|
||||
@export_tool_button("Update Songs") var _update_songs_action = _update_songs
|
||||
@export var songs: Dictionary[StringName, AudioStream]
|
||||
|
||||
@export var player_a: AudioStreamPlayer
|
||||
@export var player_b: AudioStreamPlayer
|
||||
|
||||
|
||||
@onready var _active_player: AudioStreamPlayer = player_a
|
||||
@onready var _tween: Tween = null
|
||||
|
||||
|
||||
func play_song(id: StringName, crossfade_time: float = 0.0, restart: bool = false) -> void:
|
||||
var new_stream = songs.get(id) as AudioStream
|
||||
if new_stream:
|
||||
if not restart and _active_player.stream == new_stream:
|
||||
return
|
||||
var new_player = player_b if _active_player == player_a else player_a
|
||||
new_player.stream = new_stream
|
||||
new_player.play()
|
||||
|
||||
if crossfade_time > 0.0:
|
||||
new_player.volume_linear = 0.0
|
||||
if _tween:
|
||||
_tween.kill()
|
||||
_tween = create_tween().set_parallel()
|
||||
_tween.tween_property(new_player, ^"volume_linear", 1.0, crossfade_time)
|
||||
_tween.tween_property(_active_player, ^"volume_linear", 0.0, crossfade_time)
|
||||
_tween.chain().tween_callback(_active_player.stop)
|
||||
else:
|
||||
new_player.volume_linear = 1.0
|
||||
_active_player.stop()
|
||||
|
||||
_active_player = new_player
|
||||
|
||||
|
||||
func _update_songs() -> void:
|
||||
songs.clear()
|
||||
var dir = DirAccess.open(songs_dir)
|
||||
if dir:
|
||||
dir.list_dir_begin()
|
||||
var file = dir.get_next()
|
||||
while file != "":
|
||||
if not dir.current_is_dir() and not file.ends_with(".import"):
|
||||
var stream := load(songs_dir + "/" + file) as AudioStream
|
||||
if stream:
|
||||
songs[file.get_basename()] = stream
|
||||
file = dir.get_next()
|
||||
notify_property_list_changed()
|
1
autoloads/music.gd.uid
Normal file
1
autoloads/music.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://dgi1v18r8dx4q
|
19
autoloads/music.tscn
Normal file
19
autoloads/music.tscn
Normal file
|
@ -0,0 +1,19 @@
|
|||
[gd_scene load_steps=3 format=3 uid="uid://cxrhw5ic2vunh"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dgi1v18r8dx4q" path="res://autoloads/music.gd" id="1_16wm1"]
|
||||
[ext_resource type="AudioStream" uid="uid://dmctaba7v1rgu" path="res://assets/music/bug_music.ogg" id="2_kl0u4"]
|
||||
|
||||
[node name="Music" type="Node" node_paths=PackedStringArray("player_a", "player_b")]
|
||||
script = ExtResource("1_16wm1")
|
||||
songs_dir = "res://assets/music"
|
||||
songs = Dictionary[StringName, AudioStream]({
|
||||
&"bug_music": ExtResource("2_kl0u4")
|
||||
})
|
||||
player_a = NodePath("MusicPlayerA")
|
||||
player_b = NodePath("MusicPlayerB")
|
||||
|
||||
[node name="MusicPlayerA" type="AudioStreamPlayer" parent="."]
|
||||
bus = &"Music"
|
||||
|
||||
[node name="MusicPlayerB" type="AudioStreamPlayer" parent="."]
|
||||
bus = &"Music"
|
|
@ -1,8 +1,6 @@
|
|||
[gd_scene load_steps=4 format=3 uid="uid://ckgsfhfpg00ys"]
|
||||
[gd_scene load_steps=2 format=3 uid="uid://ckgsfhfpg00ys"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://crlo6ow7fo6ca" path="res://autoloads/scene_manager.gd" id="1_1hxm1"]
|
||||
[ext_resource type="AudioStream" uid="uid://sci5aqar0oyx" path="res://assets/audio/bgs/amb_sog.wav" id="2_dr7pa"]
|
||||
[ext_resource type="AudioStream" uid="uid://flc817bekeh6" path="res://assets/audio/sfx/level_win.ogg" id="3_8ri5f"]
|
||||
|
||||
[node name="SceneManager" type="Node" node_paths=PackedStringArray("viewport", "viewport_holder")]
|
||||
script = ExtResource("1_1hxm1")
|
||||
|
@ -49,14 +47,3 @@ handle_input_locally = false
|
|||
canvas_item_default_texture_filter = 0
|
||||
size = Vector2i(288, 216)
|
||||
render_target_update_mode = 4
|
||||
|
||||
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
|
||||
stream = ExtResource("2_dr7pa")
|
||||
volume_db = -10.0
|
||||
autoplay = true
|
||||
bus = &"Background Sound"
|
||||
|
||||
[node name="WinSound" type="AudioStreamPlayer" parent="."]
|
||||
stream = ExtResource("3_8ri5f")
|
||||
volume_db = -6.558
|
||||
bus = &"Sound Effects"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue