This repository has been archived on 2024-07-02. You can view files and clone it, but cannot push or open issues or pull requests.
HoppyEaster/Scripts/SaveSystem/GlobalSettings.gd

74 lines
2.6 KiB
GDScript

extends Node
@export var master_bus_index : int = 0
@export var music_bus_index : int = 1
@export var sfx_bus_index : int = 2
@export var remappable_input_actions = ["move_up", "move_down", "move_left", "move_right"]
const resolutions_dictionary : Dictionary = {
"800x600" : Vector2(800, 600),
"1024x546" : Vector2(1024, 546),
"1152x648" : Vector2(1152, 648),
"1600x900" : Vector2(1600, 900),
"1366x768" : Vector2(1366, 768),
"1920x1080" : Vector2(1920, 1080),
"1920x1200" : Vector2(1920, 1200),
"2560x1440" : Vector2(2560, 1440),
"3840x2160" : Vector2(3840, 2160),
}
# Video Global Settings
func set_display_mode(value: int) -> void:
Save.game_data.display_mode = value
Save.save_data()
if value == 0: DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_FULLSCREEN)
elif value == 1: DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_WINDOWED)
elif value == 2: DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_MAXIMIZED)
elif value == 3: DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_MINIMIZED)
elif value == 4: DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_EXCLUSIVE_FULLSCREEN)
else: DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_FULLSCREEN)
pass
func toggle_vsync(value : bool) -> void:
Save.game_data.vsync_on = value
Save.save_data()
if value: DisplayServer.window_set_vsync_mode(DisplayServer.VSYNC_ENABLED)
else: DisplayServer.window_set_vsync_mode(DisplayServer.VSYNC_DISABLED)
pass
func set_resolution(index):
Save.game_data.current_resolution_index = index
Save.save_data()
for i in resolutions_dictionary.keys().size():
if i == index: DisplayServer.window_set_size(resolutions_dictionary.values()[i])
# Audio Global Settings
func update_master_volume(vol : int) -> void:
Save.game_data.master_volume = vol
Save.save_data()
AudioServer.set_bus_volume_db(master_bus_index, vol)
pass
func update_music_volume(vol : int) -> void:
Save.game_data.music_volume = vol
Save.save_data()
AudioServer.set_bus_volume_db(music_bus_index, vol)
pass
func update_sfx_volume(vol : int) -> void:
Save.game_data.sfx_volume = vol
Save.save_data()
AudioServer.set_bus_volume_db(sfx_bus_index, vol)
pass
# Controls
func set_controls_from_save_file() -> void:
for remappable_input_action in remappable_input_actions:
for i in Save.game_data.keys().size():
if Save.game_data.keys()[i] == remappable_input_action:
for key in InputMap.action_get_events(remappable_input_action):
InputMap.action_erase_event(remappable_input_action, key)
var control_key = InputEventKey.new()
control_key.set_keycode(Save.game_data.values()[i])
InputMap.action_add_event(remappable_input_action, control_key)