GodotSteamTemplate/steam-template/assets/scripts/globals/settings.gd

74 lines
1.7 KiB
GDScript3
Raw Normal View History

2025-01-12 03:56:01 +00:00
extends Node
var fps := 0
var vsync := 1
var music := AudioServer.get_bus_index("Music")
var sfx := AudioServer.get_bus_index("SFX")
var music_vol := 1.0
var sfx_vol := 1.0
var mouse_sensitivity := 0.5
var fullscreen := true
var vsync_modes : Dictionary = {
0 : "DISABLED",
1 : "ENABLED",
2 : "ADAPTIVE",
3 : "MAILBOX"
}
var fps_options : Array = [
0,
30,
60,
90,
120,
240
]
var fps_index := 0
func _ready() -> void:
if ResourceLoader.exists("user://data.res"):
var data : SaveData = ResourceLoader.load("user://data.res")
fps_index = data.fps_index
fullscreen = data.fullscreen
vsync = data.vsync
music_vol = data.music_vol
sfx_vol = data.sfx_vol
mouse_sensitivity = data.mouse_sensitivity
fps = fps_options[fps_index]
change_settings()
else:
var data := SaveData.new()
fps_index = data.fps_index
fullscreen = data.fullscreen
vsync = data.vsync
music_vol = data.music_vol
sfx_vol = data.sfx_vol
mouse_sensitivity = data.mouse_sensitivity
fps = fps_options[fps_index]
change_settings()
func iterate_fps():
fps_index += 1
if fps_index >= len(fps_options):
fps_index = 0
fps = fps_options[fps_index]
func change_settings():
SignalBus.change_settings.emit()
Engine.set_max_fps(fps)
DisplayServer.window_set_vsync_mode(vsync)
AudioServer.set_bus_volume_db(music, linear_to_db(music_vol))
AudioServer.set_bus_volume_db(sfx, linear_to_db(sfx_vol))
DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_EXCLUSIVE_FULLSCREEN if fullscreen else DisplayServer.WINDOW_MODE_MAXIMIZED)
_save_game()
func _save_game():
var data = SaveData.new()
data.fps_index = fps_index
data.fullscreen = fullscreen
data.vsync = vsync
data.music_vol = music_vol
data.sfx_vol = sfx_vol
ResourceSaver.save(data, "user://data.res")