Unified settings management and sound fixes

- fix: speech was not paused during pause menu
- fix: allow sound levels to reach min value 0.0 (=muted)
- fix: crash was happening when switch language during the game
This commit is contained in:
Julian Murgia
2022-08-11 22:59:21 +02:00
committed by Duncan Brown
parent 4ef86c6cc3
commit 04348147b9
18 changed files with 286 additions and 95 deletions

View File

@@ -66,6 +66,9 @@ var globals_manager: ESCGlobalsManager
# ESC command registry instance
var command_registry: ESCCommandRegistry
# Manager of game settings (resolution, sound, etc)
var settings_manager: ESCSettingsManager
# Resource cache handler
var resource_cache: ESCResourceCache
@@ -75,9 +78,6 @@ var dialog_player: ESCDialogPlayer
# Inventory scene
var inventory
# These are settings that the player can affect and save/load later
var settings: ESCSaveSettings
# The main scene
var main
@@ -149,40 +149,6 @@ func set_game_paused(p_paused: bool):
scene_tree.paused = p_paused
# Apply the loaded settings
#
# #### Parameters
#
# * p_settings: Loaded settings
func apply_settings(p_settings: ESCSaveSettings) -> void:
if not Engine.is_editor_hint():
escoria.logger.info(self, "******* settings loaded")
if p_settings != null:
settings = p_settings
else:
settings = ESCSaveSettings.new()
AudioServer.set_bus_volume_db(
AudioServer.get_bus_index(BUS_MASTER),
linear2db(settings.master_volume)
)
AudioServer.set_bus_volume_db(
AudioServer.get_bus_index(BUS_SFX),
linear2db(settings.sfx_volume)
)
AudioServer.set_bus_volume_db(
AudioServer.get_bus_index(BUS_MUSIC),
linear2db(settings.music_volume)
)
AudioServer.set_bus_volume_db(
AudioServer.get_bus_index(BUS_SPEECH),
linear2db(settings.speech_volume)
)
TranslationServer.set_locale(settings.text_lang)
game_scene.apply_custom_settings(settings.custom_settings)
# Called from main menu's "new game" button
func new_game():
get_escoria().new_game()