Implemented spawn points correctly. Added saving & loading (currently only implemented with the spawn_index). You can now set spawn indicies in the DynamicAreaLoader to automatically load when the game is set to that value (on ready). Added configuration warnings to DynamicAreaLoader & PlayerSpawnPoint Added some generic translation (pot) files. Added AudioManager autoload to play, stop, fade audio streams (and set the bus directly). Added SceneFader autoload. Added SaveManager autoload. Added OptionsMenu with currently only volume sliders and a fullscreen toggle button. Added PauseMenu
52 lines
1.9 KiB
GDScript
52 lines
1.9 KiB
GDScript
class_name VolumeSlider
|
|
extends HSlider
|
|
|
|
|
|
## A normal slider that automatically changes the volume of the given [param bus] in
|
|
## the given [param bus_layout].
|
|
## This slider will automatically load and save it's value when it enters the tree
|
|
## or changes it's value.[br]
|
|
## INFO: You don't need to change [param min_value] and [param max_value], the calculations
|
|
## towards [param volume_db] are automatically being done.
|
|
|
|
## The bus that get's it's volume changed.
|
|
@export var bus: StringName = &"Master"
|
|
@export var auto_set_muted: bool = false
|
|
@export var min_volume: float = 0.0
|
|
@export var max_volume: float = 1.0
|
|
@export var default_volume: float = 1.0
|
|
## The audio bus layout that get's affected.
|
|
#@export var bus_layout: AudioBusLayout = preload("res://resources/default_bus_layout.tres")
|
|
|
|
|
|
func _ready() -> void:
|
|
value_changed.connect(func(_value_changed: bool) -> void:
|
|
SettingsManager.set_setting(&"audio", bus, remap(value, min_value, max_value, 0.0, 1.0), true)
|
|
)
|
|
|
|
if not value_changed.is_connected(set_volume):
|
|
value_changed.connect(set_volume)
|
|
|
|
var err: float = SettingsManager.get_setting(&"audio", bus)
|
|
|
|
var new_value: float = remap(err, 0.0, 1.0, min_value, max_value)
|
|
set_value_no_signal(new_value)
|
|
set_volume(new_value)
|
|
value_changed.emit(value)
|
|
|
|
|
|
## Set's the volume on the audio bus given by [param bus] to the volume_range (Range from 0 to 100).[br]
|
|
## Note that this won't change [param value].
|
|
func set_volume(volume_range: float) -> void:
|
|
volume_range = remap(volume_range, min_value, max_value, min_volume, max_volume)
|
|
var new_volume: float = linear_to_db(volume_range)
|
|
var bus_idx: int = AudioServer.get_bus_index(bus)
|
|
|
|
AudioServer.set_bus_volume_db(bus_idx, new_volume)
|
|
if auto_set_muted:
|
|
AudioServer.set_bus_mute(bus_idx, is_zero_approx(volume_range))
|
|
|
|
|
|
#func save_volume(volume_range: float) -> void:
|
|
#OptionSaver.save_option("audio", bus, (volume_range / max_value))
|