Table of Contents
autoloads / bgm / bgm.gd
Attached Scenes
Code
extends Node
#class_name BGM
@export_node_path("AudioStreamPlayer")
var current : NodePath
const VOLUME_RANGE = [-20, 10]
func _ready() -> void:
load_preference()
func load_preference() -> void:
set_volume(Preference.bgm_volume())
func play() -> void:
if not current: return
current_node().play()
func mute(value: bool = true) -> void:
AudioServer.set_bus_mute(0, value)
func set_volume(_volume: int) -> void:
var volume = clamp(_volume, 0, 100) * 0.01
if volume:
var _min = VOLUME_RANGE[0]
var _max = VOLUME_RANGE[1]
AudioServer.set_bus_volume_db(0, _min + volume * (_max - _min))
mute(false)
else: mute(true)
func stop() -> void:
if not current: return
current_node().stop()
func current_node() -> Node:
return get_node(current)
func change(path: NodePath) -> void:
if current != path:
stop()
current = path
play()
func first_steps() -> void:
change(^'FirstSteps')