170 lines
4.3 KiB
GDScript
170 lines
4.3 KiB
GDScript
extends Resource
|
|
class_name SettingsData
|
|
|
|
const MASTER_BUS_ID = 0
|
|
const MUSIC_BUS_ID = 1
|
|
const SFX_BUS_ID = 2
|
|
const AMBIANCE_BUS_ID = 3
|
|
|
|
const DEFAULT_MASTER_VOLUME := 1.0
|
|
const DEFAULT_MUSIC_VOLUME := 0.7
|
|
const DEFAULT_AMBIANCE_VOLUME := 0.7
|
|
const DEFAULT_SFX_VOLUME := 0.5
|
|
const DEFAULT_WINDOW_MODE := DisplayServer.WINDOW_MODE_FULLSCREEN
|
|
const DEFAULT_UI_SIZE := 1.0
|
|
const DEFAULT_FOV := 75.0
|
|
const DEFAULT_DIFFICULTY := 1
|
|
const DEFAULT_AUTO_PICKUP := true
|
|
const DEFAULT_MOUSE_SENSIVITY := 0.2
|
|
const DEFAULT_ZOOM := 1.0
|
|
|
|
signal language_changed(settings : SettingsData)
|
|
signal sound_changed(settings : SettingsData)
|
|
signal video_changed(settings : SettingsData)
|
|
signal game_changed(settings : SettingsData)
|
|
signal fov_changed(value : float)
|
|
signal twitch_changed(settings : SettingsData)
|
|
|
|
func reset_settings() -> void:
|
|
language = OS.get_locale_language()
|
|
master_volume = DEFAULT_MASTER_VOLUME
|
|
music_volume = DEFAULT_MUSIC_VOLUME
|
|
ambiance_volume = DEFAULT_AMBIANCE_VOLUME
|
|
sfx_volume = DEFAULT_SFX_VOLUME
|
|
window_mode = DEFAULT_WINDOW_MODE
|
|
ui_size = DEFAULT_UI_SIZE
|
|
fov = DEFAULT_FOV
|
|
story_mode_difficulty = DEFAULT_DIFFICULTY
|
|
auto_pickup = DEFAULT_AUTO_PICKUP
|
|
mouse_sensivity = DEFAULT_MOUSE_SENSIVITY
|
|
zoom = DEFAULT_ZOOM
|
|
closed_help_containers = []
|
|
activate_twitch_integration = false
|
|
|
|
func reset_controls() -> void:
|
|
action_remapped = []
|
|
input_remapped = []
|
|
|
|
#region ------------------ Language ------------------
|
|
|
|
const AVAILABLE_LANGUAGES = [
|
|
"en",
|
|
"fr",
|
|
]
|
|
const AVAILABLE_LANGUAGES_LABEL = [
|
|
"English",
|
|
"Français",
|
|
]
|
|
|
|
@export var language : String = OS.get_locale_language() :
|
|
set(v):
|
|
language = v
|
|
language_changed.emit(self)
|
|
|
|
#region ------------------ Sound ------------------
|
|
|
|
@export var master_volume := DEFAULT_MASTER_VOLUME :
|
|
set(v):
|
|
master_volume = v
|
|
sound_changed.emit(self)
|
|
|
|
@export var music_volume := DEFAULT_MUSIC_VOLUME :
|
|
set(v):
|
|
music_volume = v
|
|
sound_changed.emit(self)
|
|
|
|
@export var ambiance_volume := DEFAULT_AMBIANCE_VOLUME :
|
|
set(v):
|
|
ambiance_volume = v
|
|
sound_changed.emit(self)
|
|
|
|
@export var sfx_volume := DEFAULT_SFX_VOLUME :
|
|
set(v):
|
|
sfx_volume = v
|
|
sound_changed.emit(self)
|
|
|
|
#region ------------------ Video ------------------
|
|
|
|
@export var window_mode := DEFAULT_WINDOW_MODE :
|
|
set(v):
|
|
window_mode = v
|
|
video_changed.emit(self)
|
|
|
|
@export var window_size := Vector2i(800, 450):
|
|
set(v):
|
|
window_size = v
|
|
video_changed.emit(self)
|
|
|
|
@export var window_pos := Vector2i(50, 50):
|
|
set(v):
|
|
window_pos = v
|
|
video_changed.emit(self)
|
|
|
|
@export var ui_size := DEFAULT_UI_SIZE :
|
|
set(v):
|
|
ui_size = v
|
|
video_changed.emit(self)
|
|
|
|
#region ------------------ Controls ------------------
|
|
|
|
|
|
|
|
@export var action_remapped : Array[String] = []
|
|
@export var input_remapped : Array[InputEvent] = []
|
|
|
|
@export var fov := DEFAULT_FOV :
|
|
set(v):
|
|
fov = v
|
|
fov_changed.emit(fov)
|
|
|
|
|
|
#region ------------------ Game ------------------
|
|
|
|
const AVAILABLE_DIFFICULTY = [
|
|
"COSY_MODE",
|
|
"ADVENTURE_MODE",
|
|
"CHALLENGE_MODE"
|
|
]
|
|
|
|
@export var story_mode_difficulty := DEFAULT_DIFFICULTY # Voir AVAILABLE_DIFFICULTY
|
|
|
|
@export var auto_pickup := DEFAULT_AUTO_PICKUP
|
|
|
|
@export var mouse_sensivity := DEFAULT_MOUSE_SENSIVITY
|
|
|
|
const MAX_ZOOM = 2.
|
|
const MIN_ZOOM = 0.5
|
|
|
|
# Not in settings pannel
|
|
@export var zoom := DEFAULT_ZOOM :
|
|
set(v):
|
|
zoom = min(MAX_ZOOM,max(MIN_ZOOM,v))
|
|
game_changed.emit(self)
|
|
|
|
@export var closed_help_containers = []
|
|
|
|
func is_help_container_closed(help_container_name : String) -> bool:
|
|
return help_container_name in closed_help_containers
|
|
|
|
func close_help_container(help_container_name : String):
|
|
if not help_container_name in closed_help_containers:
|
|
closed_help_containers.append(help_container_name)
|
|
game_changed.emit(self)
|
|
|
|
func open_help_container(help_container_name : String):
|
|
if help_container_name in closed_help_containers:
|
|
closed_help_containers.erase(help_container_name)
|
|
game_changed.emit(self)
|
|
|
|
#region ------------------ Twitch ------------------
|
|
|
|
@export var activate_twitch_integration := false :
|
|
set(v):
|
|
activate_twitch_integration = v
|
|
twitch_changed.emit(self)
|
|
|
|
@export var twitch_channel := "" :
|
|
set(v):
|
|
twitch_channel = v
|
|
twitch_changed.emit(self)
|