feat: added audio settings
This commit is contained in:
@@ -32,6 +32,12 @@ var resolution_index: int = 2 # Default to 1920x1080
|
||||
var fps_cap: int = 0
|
||||
var show_fps: bool = false
|
||||
|
||||
# Audio Settings
|
||||
var vol_master: float = 100.0
|
||||
var vol_sfx: float = 100.0
|
||||
var vol_music: float = 100.0
|
||||
var vol_wind: float = 100.0
|
||||
|
||||
var resolutions = [
|
||||
Vector2i(640, 480), # 480p
|
||||
Vector2i(1280, 720), # 720p
|
||||
@@ -54,6 +60,31 @@ func _ready() -> void:
|
||||
|
||||
# Apply Video Settings
|
||||
apply_video_settings()
|
||||
|
||||
# Setup & Apply Audio Settings
|
||||
_setup_audio_buses()
|
||||
apply_audio_settings()
|
||||
|
||||
func _setup_audio_buses() -> void:
|
||||
if AudioServer.bus_count < 4:
|
||||
# Assuming bus 0 is Master
|
||||
if AudioServer.get_bus_name(0) != "Master":
|
||||
AudioServer.set_bus_name(0, "Master")
|
||||
|
||||
# SFX
|
||||
if AudioServer.bus_count <= 1:
|
||||
AudioServer.add_bus(1)
|
||||
AudioServer.set_bus_name(1, "SFX")
|
||||
|
||||
# Music
|
||||
if AudioServer.bus_count <= 2:
|
||||
AudioServer.add_bus(2)
|
||||
AudioServer.set_bus_name(2, "Music")
|
||||
|
||||
# Wind
|
||||
if AudioServer.bus_count <= 3:
|
||||
AudioServer.add_bus(3)
|
||||
AudioServer.set_bus_name(3, "Wind")
|
||||
|
||||
func _apply_all_bindings() -> void:
|
||||
for action in current_bindings:
|
||||
@@ -101,7 +132,11 @@ func _save_settings() -> void:
|
||||
"display_mode": display_mode,
|
||||
"resolution_index": resolution_index,
|
||||
"fps_cap": fps_cap,
|
||||
"show_fps": show_fps
|
||||
"show_fps": show_fps,
|
||||
"vol_master": vol_master,
|
||||
"vol_sfx": vol_sfx,
|
||||
"vol_music": vol_music,
|
||||
"vol_wind": vol_wind
|
||||
}
|
||||
var json_string = JSON.stringify(save_data)
|
||||
var file = FileAccess.open(SAVE_PATH, FileAccess.WRITE)
|
||||
@@ -134,6 +169,26 @@ func _load_settings() -> void:
|
||||
if data.has("resolution_index"): resolution_index = data["resolution_index"]
|
||||
if data.has("fps_cap"): fps_cap = data["fps_cap"]
|
||||
if data.has("show_fps"): show_fps = data["show_fps"]
|
||||
if data.has("vol_master"): vol_master = data["vol_master"]
|
||||
if data.has("vol_sfx"): vol_sfx = data["vol_sfx"]
|
||||
if data.has("vol_music"): vol_music = data["vol_music"]
|
||||
if data.has("vol_wind"): vol_wind = data["vol_wind"]
|
||||
|
||||
func apply_audio_settings() -> void:
|
||||
_set_bus_volume("Master", vol_master)
|
||||
_set_bus_volume("SFX", vol_sfx)
|
||||
_set_bus_volume("Music", vol_music)
|
||||
_set_bus_volume("Wind", vol_wind)
|
||||
|
||||
func _set_bus_volume(bus_name: String, vol_100: float) -> void:
|
||||
var bus_idx = AudioServer.get_bus_index(bus_name)
|
||||
if bus_idx >= 0:
|
||||
var linear = clampf(vol_100 / 100.0, 0.0001, 1.0)
|
||||
if vol_100 <= 0.1:
|
||||
AudioServer.set_bus_mute(bus_idx, true)
|
||||
else:
|
||||
AudioServer.set_bus_mute(bus_idx, false)
|
||||
AudioServer.set_bus_volume_db(bus_idx, linear_to_db(linear))
|
||||
|
||||
func apply_video_settings() -> void:
|
||||
if display_mode == DisplayServer.WINDOW_MODE_EXCLUSIVE_FULLSCREEN:
|
||||
|
||||
Reference in New Issue
Block a user