System itself →
class_name SaveSystemClass
extends Node
const SETTINGS_PATH := "user://settings.cfg"
var config = ConfigFile.new()
func _ready() -> void:
load_data()
func save_data() -> void:
var err = config.save(SETTINGS_PATH)
if err != OK:
push_warning("Failed to save: %s" % err)
func load_data() -> void:
var err = config.load(SETTINGS_PATH)
if err != OK:
return
func set_setting(section: String, key: String, value: Variant) -> void:
config.set_value(section, key, value)
save_data()
func get_setting(section: String, key: String, value: Variant) -> Variant:
return config.get_value(section, key, value)
Mouse →
extends MarginContainer
signal exit()
@export_category("Mouse Sensitivity")
@export var very_low_sens: float = 0.00025
@export var low_sens: float = 0.0005
@export var medium_sens: float = 0.00075
@export var high_sens: float = 0.001
@export var very_high_sens: float = 0.00125
var _sensitivity_values: Array[float]
func focus() -> void:
button.grab_focus()
func _ready() -> void:
_sensitivity_values = [very_low_sens, low_sens, medium_sens, high_sens, very_high_sens]
var saved_sens_index: int = SavingSytem.get_setting("mouse", "sensitivity_index", 2)
sensitivity_dropdown.select(saved_sens_index)
_apply_sensitivity(saved_sens_index)
#signal part
func _on_option_button_item_selected(index: int) -> void:
_apply_sensitivity(index)
SavingSytem.set_setting("mouse", "sensitivity_index", index)
# function to apply sensitivity for index
func _apply_sensitivity(index: int) -> void:
if _player:
_player.mouse_sensitivity = _sensitivity_values[index]
# when return back to level it will be applied already to player
func update_player(player_in: Player) -> void:
_player = player_in
_apply_sensitivity(sensitivity_dropdown.selected)