Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
class_name SongResource extends Resource

@export_group("Meta Data")
@export var song_name: String
@export var interpret: String

@export_group("Song Data")
@export var song_data: AudioStream
@export var db_volume_change: float = 0


func is_valid() -> bool:
return song_name != "" and interpret != "" and song_data != null
Expand Down
16 changes: 11 additions & 5 deletions shared/global_entities/music_manager/scripts/MusicManager.gd
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,11 @@ extends Node2D

signal song_changed(song: SongResource)

@export var audio_bus_name: String

@export_group("Audio Setup")
@export var audio_bus_name: StringName
@export var tracks_to_skip: int = 0
@export var tracks: Array[SongResource] = []
@export_group("Fading")
@export var initial_song_fade_duration: float = 1;
@export var song_fade_duration: int = 2
@export_range(-100, 20) var disabled_db_value: float = -80
Expand Down Expand Up @@ -80,6 +81,8 @@ func get_valid_tracks() -> Array[SongResource]:
return valid_tracks

func play_new_song(song: SongResource) -> void:
if song == null:
return
last_tracks.append(song)

for active_audio_stream: AudioStreamPlayer2D in _get_active_audio_nodes():
Expand All @@ -90,7 +93,7 @@ func play_new_song(song: SongResource) -> void:

var new_audio_manager: AudioStreamPlayer2D = _get_unused_audio_node()
new_audio_manager.stream = song.song_data
new_audio_manager.volume_db = disabled_db_value
new_audio_manager.volume_db = disabled_db_value + song.db_volume_change
new_audio_manager.play()

var tween_new_song_stream: Tween = create_tween()
Expand Down Expand Up @@ -124,8 +127,11 @@ func switch_song() -> void:
play_new_song(new_track)

func get_next_track() -> SongResource:
return get_valid_tracks().pick_random()
var valid_tracks: Array[SongResource] = get_valid_tracks()
if valid_tracks.is_empty():
return null
return valid_tracks.pick_random()

func skip_song() -> void:
track_change_time.stop()
switch_song()
switch_song()
Loading