diff --git a/addons/escoria-core/game/core-scripts/esc/esc_action_manager.gd b/addons/escoria-core/game/core-scripts/esc/esc_action_manager.gd index 750509f3..78bc1b40 100644 --- a/addons/escoria-core/game/core-scripts/esc/esc_action_manager.gd +++ b/addons/escoria-core/game/core-scripts/esc/esc_action_manager.gd @@ -564,6 +564,8 @@ func perform_inputevent_on_object( # Manage exits if obj.node.is_exit and current_action in ["", ACTION_WALK]: + escoria.event_manager.interrupt_running_event() + escoria.event_manager.clear_event_queue() _activate(ACTION_EXIT_SCENE, obj) else: # Manage movements towards object before activating it diff --git a/addons/escoria-core/game/core-scripts/esc_game.gd b/addons/escoria-core/game/core-scripts/esc_game.gd index ede89827..b9074a50 100644 --- a/addons/escoria-core/game/core-scripts/esc_game.gd +++ b/addons/escoria-core/game/core-scripts/esc_game.gd @@ -89,7 +89,7 @@ func _exit_tree(): # Ready function func _ready(): - escoria.apply_settings(escoria.settings) + escoria.settings_manager.apply_settings() connect("crash_popup_confirmed", escoria, "quit", [], CONNECT_ONESHOT) diff --git a/addons/escoria-core/game/core-scripts/save_data/esc_savesettings.gd b/addons/escoria-core/game/core-scripts/save_data/esc_savesettings.gd index 723f0736..ef781be1 100644 --- a/addons/escoria-core/game/core-scripts/save_data/esc_savesettings.gd +++ b/addons/escoria-core/game/core-scripts/save_data/esc_savesettings.gd @@ -42,7 +42,7 @@ export var speech_volume: float = ProjectSettings.get_setting( export var fullscreen: bool = false # True if skipping dialogs is allowed -export var skip_dialog: bool = true +export var skip_dialogs: bool = true # Dictionary containing all user-defined settings. export var custom_settings: Dictionary diff --git a/addons/escoria-core/game/core-scripts/save_data/esc_settings_manager.gd b/addons/escoria-core/game/core-scripts/save_data/esc_settings_manager.gd new file mode 100644 index 00000000..dac0ad96 --- /dev/null +++ b/addons/escoria-core/game/core-scripts/save_data/esc_settings_manager.gd @@ -0,0 +1,181 @@ +# Manages settings +class_name ESCSettingsManager + + +# Template for settings filename +const SETTINGS_TEMPLATE: String = "settings.tres" + +# Variable containing the settings folder obtained from Project Settings +var settings_folder: String + +# Dictionary containing specific settings that gamedev wants to save in settings +# This variable is access-free. Getting its content is gamedev's duty. +# It is saved with other Escoria settings data when save_settings() is called. +var custom_settings: Dictionary + + +# Constructor of ESCSaveManager object. +func _init(): + # We leave the calls to ProjectSettings as-is since this constructor can be + # called from escoria.gd's own. + settings_folder = ProjectSettings.get_setting("escoria/main/settings_path") + + +# Apply the loaded settings +func apply_settings() -> void: + if not Engine.is_editor_hint(): + escoria.logger.info( + self, + "******* settings loaded" + ) + + AudioServer.set_bus_volume_db( + AudioServer.get_bus_index(escoria.BUS_MASTER), + linear2db( + ESCProjectSettingsManager.get_setting( + ESCProjectSettingsManager.MASTER_VOLUME + ) + ) + ) + AudioServer.set_bus_volume_db( + AudioServer.get_bus_index(escoria.BUS_SFX), + linear2db( + ESCProjectSettingsManager.get_setting( + ESCProjectSettingsManager.SFX_VOLUME + ) + ) + ) + AudioServer.set_bus_volume_db( + AudioServer.get_bus_index(escoria.BUS_MUSIC), + linear2db( + ESCProjectSettingsManager.get_setting( + ESCProjectSettingsManager.MUSIC_VOLUME + ) + ) + ) + AudioServer.set_bus_volume_db( + AudioServer.get_bus_index(escoria.BUS_SPEECH), + linear2db( + ESCProjectSettingsManager.get_setting( + ESCProjectSettingsManager.SPEECH_VOLUME + ) + ) + ) + TranslationServer.set_locale( + ESCProjectSettingsManager.get_setting( + ESCProjectSettingsManager.TEXT_LANG + ) + ) + + escoria.game_scene.apply_custom_settings(custom_settings) + + +func save_settings_resource_to_project_settings(settings: ESCSaveSettings): + ESCProjectSettingsManager.set_setting( + ESCProjectSettingsManager.TEXT_LANG, + settings.text_lang + ) + ESCProjectSettingsManager.set_setting( + ESCProjectSettingsManager.VOICE_LANG, + settings.voice_lang + ) + ESCProjectSettingsManager.set_setting( + ESCProjectSettingsManager.SPEECH_ENABLED, + settings.speech_enabled + ) + ESCProjectSettingsManager.set_setting( + ESCProjectSettingsManager.MASTER_VOLUME, + settings.master_volume + ) + ESCProjectSettingsManager.set_setting( + ESCProjectSettingsManager.MUSIC_VOLUME, + settings.music_volume + ) + ESCProjectSettingsManager.set_setting( + ESCProjectSettingsManager.SFX_VOLUME, + settings.sfx_volume + ) + ESCProjectSettingsManager.set_setting( + ESCProjectSettingsManager.SPEECH_VOLUME, + settings.speech_volume + ) + ESCProjectSettingsManager.set_setting( + ESCProjectSettingsManager.FULLSCREEN, + settings.fullscreen + ) + ESCProjectSettingsManager.set_setting( + ESCProjectSettingsManager.SKIP_DIALOGS, + settings.skip_dialogs + ) + custom_settings = settings.custom_settings + + +# Load the game settings from the settings file +func load_settings(): + var save_settings_path: String = \ + settings_folder.plus_file(SETTINGS_TEMPLATE) + var file: File = File.new() + if not file.file_exists(save_settings_path): + escoria.logger.warn( + self, + "Settings file %s doesn't exist" % save_settings_path + + "Setting default settings." + ) + save_settings() + + var settings: ESCSaveSettings = load(save_settings_path) + save_settings_resource_to_project_settings(settings) + + +func get_settings() -> ESCSaveSettings: + var settings: ESCSaveSettings = ESCSaveSettings.new() + var plugin_config = ConfigFile.new() + plugin_config.load("res://addons/escoria-core/plugin.cfg") + settings.escoria_version = plugin_config.get_value("plugin", "version") + + settings.text_lang = ESCProjectSettingsManager.get_setting( + ESCProjectSettingsManager.TEXT_LANG + ) + settings.voice_lang = ESCProjectSettingsManager.get_setting( + ESCProjectSettingsManager.VOICE_LANG + ) + settings.speech_enabled = ESCProjectSettingsManager.get_setting( + ESCProjectSettingsManager.SPEECH_ENABLED + ) + settings.master_volume = ESCProjectSettingsManager.get_setting( + ESCProjectSettingsManager.MASTER_VOLUME + ) + settings.music_volume = ESCProjectSettingsManager.get_setting( + ESCProjectSettingsManager.MUSIC_VOLUME + ) + settings.sfx_volume = ESCProjectSettingsManager.get_setting( + ESCProjectSettingsManager.SFX_VOLUME + ) + settings.speech_volume = ESCProjectSettingsManager.get_setting( + ESCProjectSettingsManager.SPEECH_VOLUME + ) + settings.fullscreen = ESCProjectSettingsManager.get_setting( + ESCProjectSettingsManager.FULLSCREEN + ) + settings.skip_dialogs = ESCProjectSettingsManager.get_setting( + ESCProjectSettingsManager.SKIP_DIALOGS + ) + settings.custom_settings = custom_settings + return settings + + +# Save the game settings in the settings file. +func save_settings(): + var settings = get_settings() + + var directory: Directory = Directory.new() + if not directory.dir_exists(settings_folder): + directory.make_dir_recursive(settings_folder) + + var save_path = settings_folder.plus_file(SETTINGS_TEMPLATE) + var error: int = ResourceSaver.save(save_path, settings) + if error != OK: + escoria.logger.error( + self, + "There was an issue writing settings %s" % save_path + ) diff --git a/addons/escoria-core/game/esc_autoload.gd b/addons/escoria-core/game/esc_autoload.gd index cd29c630..56a07706 100644 --- a/addons/escoria-core/game/esc_autoload.gd +++ b/addons/escoria-core/game/esc_autoload.gd @@ -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() diff --git a/addons/escoria-core/game/esc_project_settings_manager.gd b/addons/escoria-core/game/esc_project_settings_manager.gd index 700d5577..0d332d9f 100644 --- a/addons/escoria-core/game/esc_project_settings_manager.gd +++ b/addons/escoria-core/game/esc_project_settings_manager.gd @@ -16,6 +16,7 @@ const GAME_SCENE = "%s/%s/game_scene" % [_ESCORIA_SETTINGS_ROOT, _UI_ROOT] const INVENTORY_ITEM_SIZE = "%s/%s/inventory_item_size" % [_ESCORIA_SETTINGS_ROOT, _UI_ROOT] const INVENTORY_ITEMS_PATH = "%s/%s/inventory_items_path" % [_ESCORIA_SETTINGS_ROOT, _UI_ROOT] const TRANSITION_PATHS = "%s/%s/transition_paths" % [_ESCORIA_SETTINGS_ROOT, _UI_ROOT] +const SKIP_DIALOGS = "%s/%s/skip_dialogs" % [_ESCORIA_SETTINGS_ROOT, _UI_ROOT] # Main Escoria project settings const _MAIN_ROOT = "main" @@ -67,6 +68,12 @@ const TEXT_SPEED_PER_CHARACTER = "%s/%s/text_speed_per_character" % [_ESCORIA_SE const FAST_TEXT_SPEED_PER_CHARACTER = "%s/%s/fast_text_speed_per_character" % [_ESCORIA_SETTINGS_ROOT, _SIMPLE_DIALOG_ROOT] const MAX_TIME_TO_DISAPPEAR = "%s/%s/max_time_to_disappear" % [_ESCORIA_SETTINGS_ROOT, _SIMPLE_DIALOG_ROOT] +# Godot Windows project settings +const DISPLAY = "display" +const WINDOW = "window" +const SIZE = "size" +const FULLSCREEN = "%s/%s/%s/fullscreen" % [DISPLAY, WINDOW, SIZE] + # Register a new project setting if it hasn't been defined already # diff --git a/addons/escoria-core/game/escoria.gd b/addons/escoria-core/game/escoria.gd index a1ad3244..ba299e00 100644 --- a/addons/escoria-core/game/escoria.gd +++ b/addons/escoria-core/game/escoria.gd @@ -28,7 +28,7 @@ func _init(): escoria.resource_cache.start() escoria.save_manager = ESCSaveManager.new() escoria.inputs_manager = ESCInputsManager.new() - escoria.settings = ESCSaveSettings.new() + escoria.settings_manager = ESCSettingsManager.new() if ESCProjectSettingsManager.get_setting( ESCProjectSettingsManager.GAME_SCENE @@ -47,8 +47,9 @@ func _init(): func _ready(): _handle_direct_scene_run() - escoria.settings = escoria.save_manager.load_settings() - escoria.apply_settings(escoria.settings) + escoria.settings_manager.load_settings() + escoria.settings_manager.apply_settings() + escoria.room_manager.register_reserved_globals() escoria.inputs_manager.register_core() if ESCProjectSettingsManager.get_setting( diff --git a/addons/escoria-core/game/scenes/sound/esc_music_player.gd b/addons/escoria-core/game/scenes/sound/esc_music_player.gd index 66bde54c..b6ab5df8 100644 --- a/addons/escoria-core/game/scenes/sound/esc_music_player.gd +++ b/addons/escoria-core/game/scenes/sound/esc_music_player.gd @@ -44,10 +44,6 @@ func set_state(p_state: String, p_force: bool = false) -> void: resource.loop_end = resource.mix_rate * resource.get_length() elif "loop" in resource: resource.loop = true - if ESCProjectSettingsManager.has_setting(ESCProjectSettingsManager.MUSIC_VOLUME): - stream.volume_db = ESCProjectSettingsManager.get_setting( - ESCProjectSettingsManager.MUSIC_VOLUME - ) stream.play() diff --git a/addons/escoria-core/game/scenes/sound/esc_music_player.tscn b/addons/escoria-core/game/scenes/sound/esc_music_player.tscn index 1b690767..ae4f951c 100644 --- a/addons/escoria-core/game/scenes/sound/esc_music_player.tscn +++ b/addons/escoria-core/game/scenes/sound/esc_music_player.tscn @@ -3,15 +3,13 @@ [ext_resource path="res://addons/escoria-core/game/scenes/sound/esc_music_player.gd" type="Script" id=1] [node name="bg_music" type="Control"] +pause_mode = 2 anchor_right = 1.0 anchor_bottom = 1.0 margin_right = -1680.0 margin_bottom = -1050.0 mouse_filter = 2 script = ExtResource( 1 ) -__meta__ = { -"_edit_use_anchors_": false -} [node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] bus = "Music" diff --git a/addons/escoria-core/game/scenes/sound/esc_sound_player.gd b/addons/escoria-core/game/scenes/sound/esc_sound_player.gd index b95a6cee..9b56e299 100644 --- a/addons/escoria-core/game/scenes/sound/esc_sound_player.gd +++ b/addons/escoria-core/game/scenes/sound/esc_sound_player.gd @@ -43,10 +43,6 @@ func set_state(p_state: String, p_force: bool = false): resource.loop_mode = AudioStreamSample.LOOP_DISABLED elif "loop" in resource: resource.loop = false - if ESCProjectSettingsManager.has_setting(ESCProjectSettingsManager.SFX_VOLUME): - stream.volume_db = ESCProjectSettingsManager.get_setting( - ESCProjectSettingsManager.SFX_VOLUME - ) stream.play() diff --git a/addons/escoria-core/game/scenes/sound/esc_sound_player.tscn b/addons/escoria-core/game/scenes/sound/esc_sound_player.tscn index 2e1a4ce4..00f1762e 100644 --- a/addons/escoria-core/game/scenes/sound/esc_sound_player.tscn +++ b/addons/escoria-core/game/scenes/sound/esc_sound_player.tscn @@ -3,6 +3,7 @@ [ext_resource path="res://addons/escoria-core/game/scenes/sound/esc_sound_player.gd" type="Script" id=1] [node name="bg_sound" type="Control"] +pause_mode = 2 anchor_right = 1.0 anchor_bottom = 1.0 margin_right = -1680.0 diff --git a/addons/escoria-core/game/scenes/sound/esc_speech_player.gd b/addons/escoria-core/game/scenes/sound/esc_speech_player.gd index ff1fc622..8fa4a442 100644 --- a/addons/escoria-core/game/scenes/sound/esc_speech_player.gd +++ b/addons/escoria-core/game/scenes/sound/esc_speech_player.gd @@ -6,6 +6,9 @@ class_name ESCSpeechPlayer # Global id of the background music player export var global_id: String = "_speech" +# Reference to the audio player +onready var stream: AudioStreamPlayer = $AudioStreamPlayer + # Set the state of this player # @@ -15,20 +18,21 @@ export var global_id: String = "_speech" # - p_force: Override the existing state even if the stream is still playing func set_state(p_state: String, p_force: bool = false) -> void: # If speech is disabled, return - if not escoria.settings.speech_enabled: + if not ESCProjectSettingsManager.get_setting( + ESCProjectSettingsManager.SPEECH_ENABLED + ): return # If state is "off"/"default", turn off speech if p_state in ["off", "default"]: - $AudioStreamPlayer.stream = null + stream.stream = null return var resource = load(p_state) + stream.stream = resource - $AudioStreamPlayer.stream = resource - - if $AudioStreamPlayer.stream: - resource.set_loop(false) + if stream.stream: + stream.stream.set_loop(false) $AudioStreamPlayer.play() @@ -42,5 +46,16 @@ func _ready(): ) +# Callback called when the audio stream player finished playing. func _on_AudioStreamPlayer_finished() -> void: set_state("off") + + +# Pause the speech player +func pause(): + stream.stream_paused = true + + +# Unpause the speech player +func resume(): + stream.stream_paused = false diff --git a/addons/escoria-core/game/scenes/sound/esc_speech_player.tscn b/addons/escoria-core/game/scenes/sound/esc_speech_player.tscn index c0ff6cf9..6c4a7d97 100644 --- a/addons/escoria-core/game/scenes/sound/esc_speech_player.tscn +++ b/addons/escoria-core/game/scenes/sound/esc_speech_player.tscn @@ -3,6 +3,7 @@ [ext_resource path="res://addons/escoria-core/game/scenes/sound/esc_speech_player.gd" type="Script" id=1] [node name="Control" type="Control"] +pause_mode = 2 anchor_right = 1.0 anchor_bottom = 1.0 mouse_filter = 2 diff --git a/addons/escoria-core/ui_library/menus/options/options.gd b/addons/escoria-core/ui_library/menus/options/options.gd index 74788f6a..33301939 100644 --- a/addons/escoria-core/ui_library/menus/options/options.gd +++ b/addons/escoria-core/ui_library/menus/options/options.gd @@ -6,6 +6,10 @@ extends Control signal back_button_pressed +# Custom setting key +const CUSTOM_SETTING: String = "a_custom_setting" + + # The current settings var backup_settings @@ -39,10 +43,11 @@ func _ready() -> void: _flags_container.add_child(_lang) _lang.connect("gui_input", self, "_on_language_input", [lang]) + # Show the options func show(): - backup_settings = escoria.settings.duplicate() - initialize_options(escoria.settings) + backup_settings = escoria.settings_manager.get_settings() + initialize_options(backup_settings) visible = true @@ -66,7 +71,10 @@ func initialize_options(p_settings): func _on_language_input(event: InputEvent, language: String): if event.is_pressed(): TranslationServer.set_locale(language) - escoria.settings["text_lang"] = language + ESCProjectSettingsManager.set_setting( + ESCProjectSettingsManager.TEXT_LANG, + language + ) settings_changed = true @@ -75,9 +83,15 @@ func _on_language_input(event: InputEvent, language: String): # #### Parameters # - value: The new volume level func _on_sound_volume_changed(value): - escoria.settings["sfx_volume"] = value - escoria.apply_settings(escoria.settings) - settings_changed = true + if ESCProjectSettingsManager.get_setting( + ESCProjectSettingsManager.SFX_VOLUME + ) != value: + ESCProjectSettingsManager.set_setting( + ESCProjectSettingsManager.SFX_VOLUME, + value + ) + escoria.settings_manager.apply_settings() + settings_changed = true # Music volume was changed @@ -85,9 +99,15 @@ func _on_sound_volume_changed(value): # #### Parameters # - value: The new volume level func _on_music_volume_changed(value): - escoria.settings["music_volume"] = value - escoria.apply_settings(escoria.settings) - settings_changed = true + if ESCProjectSettingsManager.get_setting( + ESCProjectSettingsManager.MUSIC_VOLUME + ) != value: + ESCProjectSettingsManager.set_setting( + ESCProjectSettingsManager.MUSIC_VOLUME, + value + ) + escoria.settings_manager.apply_settings() + settings_changed = true # General volume was changed @@ -95,9 +115,15 @@ func _on_music_volume_changed(value): # #### Parameters # - value: The new volume level func _on_general_volume_changed(value): - escoria.settings["master_volume"] = value - escoria.apply_settings(escoria.settings) - settings_changed = true + if ESCProjectSettingsManager.get_setting( + ESCProjectSettingsManager.MASTER_VOLUME + ) != value: + ESCProjectSettingsManager.set_setting( + ESCProjectSettingsManager.MASTER_VOLUME, + value + ) + escoria.settings_manager.apply_settings() + settings_changed = true # Speech volume was changed @@ -105,21 +131,27 @@ func _on_general_volume_changed(value): # #### Parameters # - value: The new volume level func _on_speech_volume_value_changed(value: float) -> void: - escoria.settings["speech_volume"] = value - escoria.apply_settings(escoria.settings) - settings_changed = true + if ESCProjectSettingsManager.get_setting( + ESCProjectSettingsManager.SPEECH_VOLUME + ) != value: + ESCProjectSettingsManager.set_setting( + ESCProjectSettingsManager.SPEECH_VOLUME, + value + ) + escoria.settings_manager.apply_settings() + settings_changed = true # Save the settings func _on_apply_pressed(): - escoria.settings.custom_settings["a_custom_setting"] = 100 - escoria.save_manager.save_settings() + escoria.settings_manager.custom_settings[CUSTOM_SETTING] = 100 + escoria.settings_manager.save_settings() settings_changed = false emit_signal("back_button_pressed") # The back button was pressed func _on_back_pressed(): - escoria.settings = backup_settings - escoria.apply_settings(escoria.settings) + escoria.settings_manager.save_settings_resource_to_project_settings(backup_settings) + escoria.settings_manager.apply_settings() emit_signal("back_button_pressed") diff --git a/addons/escoria-core/ui_library/menus/options/options.tscn b/addons/escoria-core/ui_library/menus/options/options.tscn index f8529fa1..b6c4c59c 100644 --- a/addons/escoria-core/ui_library/menus/options/options.tscn +++ b/addons/escoria-core/ui_library/menus/options/options.tscn @@ -7,9 +7,6 @@ anchor_right = 1.0 anchor_bottom = 1.0 script = ExtResource( 4 ) -__meta__ = { -"_edit_use_anchors_": false -} [node name="Panel" type="Panel" parent="."] anchor_right = 1.0 @@ -86,10 +83,8 @@ margin_top = 79.0 margin_right = 457.0 margin_bottom = 95.0 size_flags_horizontal = 3 -min_value = 0.001 max_value = 1.0 step = 0.001 -value = 0.001 [node name="label3" type="Label" parent="VBoxContainer/MarginContainer/options"] margin_top = 100.0 @@ -103,10 +98,8 @@ margin_top = 99.0 margin_right = 457.0 margin_bottom = 115.0 size_flags_horizontal = 3 -min_value = 0.001 max_value = 1.0 step = 0.001 -value = 0.001 [node name="label4" type="Label" parent="VBoxContainer/MarginContainer/options"] margin_top = 120.0 @@ -120,10 +113,8 @@ margin_top = 119.0 margin_right = 457.0 margin_bottom = 135.0 size_flags_horizontal = 3 -min_value = 0.001 max_value = 1.0 step = 0.001 -value = 0.001 [node name="label5" type="Label" parent="VBoxContainer/MarginContainer/options"] margin_top = 140.0 @@ -137,10 +128,8 @@ margin_top = 139.0 margin_right = 457.0 margin_bottom = 155.0 size_flags_horizontal = 3 -min_value = 0.001 max_value = 1.0 step = 0.001 -value = 0.001 [node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"] margin_top = 539.0 diff --git a/addons/escoria-ui-9verbs/game.gd b/addons/escoria-ui-9verbs/game.gd index aab2721d..f2777d8f 100644 --- a/addons/escoria-ui-9verbs/game.gd +++ b/addons/escoria-ui-9verbs/game.gd @@ -329,7 +329,8 @@ func show_main_menu(): func unpause_game(): if get_node(pause_menu).visible: get_node(pause_menu).hide() - escoria.object_manager.get_object("_camera").node.current = true + escoria.object_manager.get_object(ESCObjectManager.CAMERA).node.current = true + escoria.object_manager.get_object(ESCObjectManager.SPEECH).node.resume() escoria.main.current_scene.game.show_ui() escoria.main.current_scene.show() escoria.set_game_paused(false) @@ -339,7 +340,8 @@ func pause_game(): get_node(pause_menu).reset() get_node(pause_menu).set_save_enabled(escoria.save_manager.save_enabled) get_node(pause_menu).show() - escoria.object_manager.get_object("_camera").node.current = false + escoria.object_manager.get_object(ESCObjectManager.CAMERA).node.current = false + escoria.object_manager.get_object(ESCObjectManager.SPEECH).node.pause() escoria.main.current_scene.game.hide_ui() escoria.main.current_scene.hide() escoria.set_game_paused(true) diff --git a/addons/escoria-ui-keyboard-9verbs/game.gd b/addons/escoria-ui-keyboard-9verbs/game.gd index 4c540767..69b01861 100644 --- a/addons/escoria-ui-keyboard-9verbs/game.gd +++ b/addons/escoria-ui-keyboard-9verbs/game.gd @@ -372,7 +372,8 @@ func show_main_menu(): func unpause_game(): if get_node(pause_menu).visible: get_node(pause_menu).hide() - escoria.object_manager.get_object("_camera").node.current = true + escoria.object_manager.get_object(ESCObjectManager.CAMERA).node.current = true + escoria.object_manager.get_object(ESCObjectManager.SPEECH).node.resume() escoria.main.current_scene.game.show_ui() escoria.main.current_scene.show() escoria.set_game_paused(false) @@ -382,7 +383,8 @@ func pause_game(): get_node(pause_menu).reset() get_node(pause_menu).set_save_enabled(escoria.save_manager.save_enabled) get_node(pause_menu).show() - escoria.object_manager.get_object("_camera").node.current = false + escoria.object_manager.get_object(ESCObjectManager.CAMERA).node.current = false + escoria.object_manager.get_object(ESCObjectManager.SPEECH).node.pause() escoria.main.current_scene.game.hide_ui() escoria.main.current_scene.hide() escoria.set_game_paused(true) diff --git a/addons/escoria-ui-simplemouse/game.gd b/addons/escoria-ui-simplemouse/game.gd index b6754d7f..0a759baa 100644 --- a/addons/escoria-ui-simplemouse/game.gd +++ b/addons/escoria-ui-simplemouse/game.gd @@ -312,7 +312,8 @@ func show_main_menu(): func unpause_game(): if get_node(pause_menu).visible: get_node(pause_menu).hide() - escoria.object_manager.get_object(escoria.object_manager.CAMERA).node.current = true + escoria.object_manager.get_object(ESCObjectManager.CAMERA).node.current = true + escoria.object_manager.get_object(ESCObjectManager.SPEECH).node.resume() escoria.main.current_scene.game.show_ui() escoria.main.current_scene.show() @@ -324,7 +325,8 @@ func pause_game(): escoria.save_manager.save_enabled ) get_node(pause_menu).show() - escoria.object_manager.get_object(escoria.object_manager.CAMERA).node.current = false + escoria.object_manager.get_object(ESCObjectManager.CAMERA).node.current = false + escoria.object_manager.get_object(ESCObjectManager.SPEECH).node.pause() escoria.main.current_scene.game.hide_ui() escoria.main.current_scene.hide()