generated from krampus/template-godot4
All checks were successful
linting & formatting / build (push) Successful in 12s
itch.io publish action / build (linux64, x86_64) (push) Successful in 2m35s
itch.io publish action / build (osx, app) (push) Successful in 2m37s
itch.io publish action / build (win64, exe) (push) Successful in 2m40s
54 lines
1.8 KiB
GDScript
54 lines
1.8 KiB
GDScript
class_name GameSettingsType extends Node
|
|
## Autoloaded container for project settings, for quick runtime access.
|
|
|
|
var version: String
|
|
|
|
var settings_file: String
|
|
var audio_bus_file: String
|
|
|
|
var mouse_sensitivity_x: float
|
|
var mouse_sensitivity_y: float
|
|
var mouse_acceleration: float
|
|
var invert_pitch: bool
|
|
|
|
var enable_screen_shake: bool
|
|
var enable_head_bob: bool
|
|
|
|
|
|
func _init() -> void:
|
|
ProjectSettings.settings_changed.connect(_read_settings)
|
|
_read_settings()
|
|
_load_audio_bus_override()
|
|
|
|
|
|
func _read_settings() -> void:
|
|
version = ProjectSettings.get_setting("application/config/version")
|
|
|
|
settings_file = ProjectSettings.get_setting("application/config/project_settings_override")
|
|
audio_bus_file = ProjectSettings.get_setting("game/audio/buses/override_bus_layout")
|
|
|
|
mouse_sensitivity_x = ProjectSettings.get_setting("game/config/input/mouse_sensitivity_x")
|
|
mouse_sensitivity_y = ProjectSettings.get_setting("game/config/input/mouse_sensitivity_y")
|
|
mouse_acceleration = ProjectSettings.get_setting("game/config/input/mouse_acceleration")
|
|
invert_pitch = ProjectSettings.get_setting("game/config/input/invert_pitch")
|
|
|
|
enable_screen_shake = ProjectSettings.get_setting(
|
|
"game/config/accessibility/enable_screen_shake"
|
|
)
|
|
enable_head_bob = ProjectSettings.get_setting("game/config/accessibility/enable_head_bob")
|
|
|
|
|
|
func _load_audio_bus_override() -> void:
|
|
# Load override audio bus file
|
|
if FileAccess.file_exists(audio_bus_file):
|
|
print_debug("Loading audio bus override from ", audio_bus_file)
|
|
var bus_layout: AudioBusLayout = load(audio_bus_file)
|
|
AudioServer.set_bus_layout(bus_layout)
|
|
|
|
|
|
func write() -> void:
|
|
print_debug("Writing settings to ", settings_file)
|
|
ProjectSettings.save_custom(settings_file)
|
|
print_debug("Writing audio bus levels to ", audio_bus_file)
|
|
ResourceSaver.save(AudioServer.generate_bus_layout(), audio_bus_file)
|