forked from team-sg/hero-mark-2
93 lines
2.8 KiB
GDScript
93 lines
2.8 KiB
GDScript
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():
|
|
# clone self into defaults before loading stored values
|
|
if defaults == null:
|
|
defaults = duplicate()
|
|
load_options()
|
|
|
|
func _unhandled_input(event):
|
|
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
|
|
|
|
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))
|