autoloads / bgm / bgm.tscn

Diagram

Diagram

Overridden virtual functions

_ready

func _ready() -> void:
	load_preference()

Instantiators

Caution
No other scene instantiate this scene.

Scene Tree

  • BGM Node

    • FirstSteps AudioStreamPlayer

Signal Connections

Note
No signal connections.

Properties

Table 1. Root properties
Name Value

script

Table 2. $FirstSteps properties
Name Value

stream

res://assets/audio/bgm/First_Steps_imitation_1bd.mp3

parameters/looping

true

bgm.gd

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')