progress on new options screen

This commit is contained in:
Haze Weathers 2023-11-05 21:09:44 -05:00
parent 6ed5743144
commit 69d6a4b4f7
12 changed files with 1000 additions and 39 deletions

View file

@ -15,4 +15,4 @@ expand = true
stretch_mode = 7
script = ExtResource( 1 )
borders = [ ExtResource( 3 ), ExtResource( 4 ), ExtResource( 2 ), ExtResource( 6 ), ExtResource( 5 ) ]
names = [ "Trans Rights", "Got Shards?", "Infiltration", "Here's To The Gays", "Fuck The Binary" ]
names = [ "Trans Rights", "Got Shards?", "Infiltration", "Here Come The Gays", "Fuck The Binary" ]

View file

@ -2,13 +2,13 @@ extends CanvasLayer
signal fade_finished
func fade_in(time, reverse: bool = false, color: Color = Color.black) -> void:
func fade_in(time: float = NAN, reverse: bool = false, color: Color = Color.black) -> void:
var rect = $TextureRect
rect.material.set_shader_param("color", color)
rect.material.set_shader_param("reverse", reverse)
$AnimationPlayer.play("FadeIn", -1, 1.0 / time)
func fade_out(time, reverse: bool = false, color: Color = Color.black) -> void:
func fade_out(time: float = NAN, reverse: bool = false, color: Color = Color.black) -> void:
var rect = $TextureRect
rect.material.set_shader_param("color", color)
rect.material.set_shader_param("reverse", reverse)

View file

@ -1,57 +1,97 @@
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]
enum ScalingMode {INTEGER, ASPECT, STRETCH}
enum Filter {NONE, CRT, LCD, BILINEAR}
enum RumbleMode {NONE, DEATHS, FULL}
enum TransSpeed {SLOW, NORMAL, FAST, INSTANT}
enum ScanlineType {NONE, LCD, CRT}
enum Gore {NONE, NO_STAINS, FULL}
enum Section {GAME, VIDEO, AUDIO, ALL}
#Constants
const TRANS_SPEEDS := [0.8, 0.4, 0.2, 0.0000001]
#Game
var rumble = RumbleMode.NONE
var rumble: int = RumbleMode.FULL
var gore: int = Gore.FULL
#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 fullscreen: bool = false setget _set_fullscreen
var window_size: float = 2.0 setget _set_window_size
var scaling_mode: int = ScalingMode.INTEGER setget _set_scaling_mode
var transition_speed: int = TransSpeed.NORMAL setget _set_transition_speed
var transition_speed_secs setget , _get_transition_speed_sex
var border: int = 0 setget _set_border
var scanlines: int = ScanlineType.NONE setget _set_scanlines
#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
var master_volume: float = 1.0 setget _set_master_volume
var music_volume: float = 1.0 setget _set_music_volume
var sound_volume: float = 1.0 setget _set_sound_volume
var landing_sound: bool = true setget _set_landing_sound
# last played file
var last_file: int = 0
# default values
var defaults = null
func _ready():
func _ready() -> void:
pause_mode = PAUSE_MODE_PROCESS
# clone self into defaults before loading stored values
if defaults == null:
defaults = duplicate()
load_options()
func _unhandled_input(event):
func _unhandled_input(event: InputEvent) -> void:
if Debug.entry == false:
if event.is_action_pressed("fullscreen"):
_set_fullscreen(!fullscreen)
func load_options():
func load_options() -> void:
var file = ConfigFile.new()
file.load("user://options.pr")
# game
rumble = file.get_value("game", "rumble", RumbleMode.NONE)
rumble = file.get_value("game", "rumble", defaults.rumble)
gore = file.get_value("game", "gore", defaults.gore)
# 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))
_set_fullscreen(file.get_value("video", "fullscreen", defaults.fullscreen))
_set_window_size(file.get_value("video", "window_size", defaults.window_size))
_set_scaling_mode(file.get_value("video", "scaling_mode", defaults.scaling_mode))
_set_transition_speed(file.get_value("video", "transition_speed", defaults.transition_speed))
_set_border(file.get_value("video", "border", defaults.border))
_set_scanlines(file.get_value("video", "scanlines", defaults.scanlines))
# 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))
_set_landing_sound(file.get_value("audio", "landing_sound", defaults.landing_sound))
# last played file
last_file = file.get_value("save", "last_file", 0)
func save_options():
func load_defaults(section: int = Section.ALL) -> void:
match section:
Section.GAME, Section.ALL:
rumble = defaults.rumble
gore = defaults.gore
Section.VIDEO, Section.ALL:
fullscreen = defaults.fullscreen
window_size = defaults.window_size
scaling_mode = defaults.scaling_mode
transition_speed = defaults.transition_speed
border = defaults.border
scanlines = defaults.scanlines
Section.AUDIO, Section.ALL:
master_volume = defaults.master_volume
music_volume = defaults.music_volume
sound_volume = defaults.sound_volume
landing_sound = defaults.landing_sound
func save_options() -> void:
var file = ConfigFile.new()
#Game
file.set_value("game","rumble",rumble)
@ -71,33 +111,49 @@ func save_options():
# Setters
# video setters
func _set_fullscreen(value):
func _set_fullscreen(value: bool) -> void:
fullscreen = value
OS.set_window_fullscreen(value)
OS.window_fullscreen = fullscreen
func _set_scaling_mode(value):
func _set_window_size(value: float) -> void:
pass
func _set_scaling_mode(value: int) -> void:
scaling_mode = value
SceneManager.scaling_mode = scaling_mode
get_tree().emit_signal("screen_resized") # force screen size update
func _set_transition_speed(value):
func _set_transition_speed(value: int) -> void:
transition_speed = value
func _get_transition_speed_sex():
func _get_transition_speed_sex() -> float:
return TRANS_SPEEDS[transition_speed]
func _set_border(value: int) -> void:
border = value
Border.current_border = border
func _set_scanlines(value: int) -> void:
pass
# audio setters
func _set_master_volume(value):
func _set_master_volume(value: float) -> void:
master_volume = value
AudioServer.set_bus_volume_db(0, linear2db(value))
func _set_music_volume(value):
func _set_music_volume(value: float) -> void:
music_volume = value
var idx = AudioServer.get_bus_index("music")
AudioServer.set_bus_volume_db(idx, linear2db(value))
func _set_sound_volume(value):
func _set_sound_volume(value: float) -> void:
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))
func _set_landing_sound(value: bool) -> void:
landing_sound = value
Audio.ac_land.volume_db = -15.0 if landing_sound else -INF