extends Node #Enums enum ScalingMode {INTEGER,ASPECT,STRETCH} enum Filter {NONE,CRT,LCD,BILINEAR} enum RumbleMode {NONE,NORMAL,BPM} enum TransSpeed {NONE = 0,SLOW = 1,NORMAL = 2,FAST = 3} var TRANS_SPEEDS = [0.0000001, 0.8, 0.4, 0.2] #Game var rumble = RumbleMode.NONE #Video var fullscreen = false setget _set_fullscreen var scaling_mode = ScalingMode.INTEGER setget _set_scaling_mode var transition_speed = TransSpeed.NORMAL setget _set_transition_speed var transition_speed_secs setget , _get_transition_speed_sex #Audio var master_volume = 1.0 setget _set_master_volume var music_volume = 1.0 setget _set_music_volume var sound_volume = 1.0 setget _set_sound_volume # default values var defaults = null func _ready(): pause_mode = PAUSE_MODE_PROCESS # clone self into defaults before loading stored values if defaults == null: defaults = duplicate() load_options() func _unhandled_input(event): if Debug.entry == false: if event.is_action_pressed("fullscreen"): _set_fullscreen(!fullscreen) func load_options(): var file = ConfigFile.new() file.load("user://options.pr") # game rumble = file.get_value("game", "rumble", RumbleMode.NONE) # video _set_fullscreen(file.get_value("video", "fullscreen", false)) _set_scaling_mode(file.get_value("video", "scaling_mode", ScalingMode.INTEGER)) _set_transition_speed(file.get_value("video", "transition_speed", TransSpeed.NORMAL)) # audio _set_master_volume(file.get_value("audio", "master_volume", 1.0)) _set_music_volume(file.get_value("audio", "music_volume", 1.0)) _set_sound_volume(file.get_value("audio", "sound_volume", 1.0)) func save_options(): var file = ConfigFile.new() #Game file.set_value("game","rumble",rumble) #Video file.set_value("video","fullscreen",fullscreen) file.set_value("video","scaling_mode",scaling_mode) file.set_value("video","transition_speed",transition_speed) #Audio file.set_value("audio","master_volume",master_volume) file.set_value("audio","music_volume",music_volume) file.set_value("audio","sound_volume",sound_volume) file.save("user://options.pr") # Setters # video setters func _set_fullscreen(value): fullscreen = value OS.set_window_fullscreen(value) func _set_scaling_mode(value): scaling_mode = value get_tree().emit_signal("screen_resized") # force screen size update func _set_transition_speed(value): transition_speed = value func _get_transition_speed_sex(): return TRANS_SPEEDS[transition_speed] # audio setters func _set_master_volume(value): master_volume = value AudioServer.set_bus_volume_db(0, linear2db(value)) func _set_music_volume(value): music_volume = value var idx = AudioServer.get_bus_index("music") AudioServer.set_bus_volume_db(idx, linear2db(value)) func _set_sound_volume(value): sound_volume = value var idx = AudioServer.get_bus_index("sound") AudioServer.set_bus_volume_db(idx, linear2db(value)) idx = AudioServer.get_bus_index("shard") AudioServer.set_bus_volume_db(idx, linear2db(value))