From 92bfd3bbc214fdbac45ed53e72f36555966891dc Mon Sep 17 00:00:00 2001 From: oier Date: Thu, 21 Sep 2023 00:38:12 +0200 Subject: [PATCH] added sound library settings & command (#12) ## Changes - Added file base simple sound library - Added base UI settings and sound library settings - Added `play_lib_snd` command ## Notes - The command accepts a namespace so we can leave common sound in the root folder and chapter specific sounds in its own folder ## How to test - Run the game - All the door sounds should play as normal. Reviewed-on: https://git.fosil.eu/gymkhana/gymkhana/pulls/12 Co-authored-by: oier Co-committed-by: oier --- .../esc/commands/play_lib_snd.gd | 57 ++++++++++++++++++ .../escoria-ui-return-monkey-island/plugin.gd | 17 +++++- .../rtmi_ui_settings.gd | 7 +++ .../cocina/esc/puerta_delante.esc | 2 +- .../turno_cocina/cocina/esc/puerta_detras.esc | 2 +- .../cocina_delante/esc/puerta_cocina.esc | 7 +-- .../cocina_delante/esc/puerta_despensa.esc | 4 +- .../cocina_detras/esc/puerta_cocina.esc | 2 +- .../despensa/esc/puerta_exterior.esc | 2 +- ...nte_open.ogg => puerta_cocina_delante.ogg} | Bin ...tras_open.ogg => puerta_cocina_detras.ogg} | Bin ...{despensa_open.ogg => puerta_despensa.ogg} | Bin project.godot | 13 ++++ 13 files changed, 100 insertions(+), 13 deletions(-) create mode 100644 gymkhana/addons/escoria-ui-return-monkey-island/esc/commands/play_lib_snd.gd create mode 100644 gymkhana/addons/escoria-ui-return-monkey-island/rtmi_ui_settings.gd rename gymkhana/sounds/{cocina_delante_open.ogg => puerta_cocina_delante.ogg} (100%) rename gymkhana/sounds/{cocina_detras_open.ogg => puerta_cocina_detras.ogg} (100%) rename gymkhana/sounds/{despensa_open.ogg => puerta_despensa.ogg} (100%) diff --git a/gymkhana/addons/escoria-ui-return-monkey-island/esc/commands/play_lib_snd.gd b/gymkhana/addons/escoria-ui-return-monkey-island/esc/commands/play_lib_snd.gd new file mode 100644 index 00000000..a80ce7ac --- /dev/null +++ b/gymkhana/addons/escoria-ui-return-monkey-island/esc/commands/play_lib_snd.gd @@ -0,0 +1,57 @@ +# `play_lib_snd` +# +# Plays a sound from the library. +# +# **Parameters** +# +# - *file_name*: File name withot extension +# - *namespace*: Subfolder +# +# @ESC +extends ESCBaseCommand +class_name PlayLibSound + + +# Return the descriptor of the arguments of this command +func configure() -> ESCCommandArgumentDescriptor: + return ESCCommandArgumentDescriptor.new( + 1, + [TYPE_STRING,TYPE_STRING], + [null,""] + ) + + +# Validate whether the given arguments match the command descriptor +func validate(arguments: Array): + if not .validate(arguments): + return false + + var subFolder = arguments[1] + if(arguments[1] != ""): + subFolder += "/" + var resourceFile = "res://gymkhana/sounds/" + subFolder + arguments[0] + ".ogg" + if not ResourceLoader.exists(resourceFile): + escoria.logger.error( + self, + "[%s]: invalid parameter. File %s not found." + % [get_command_name(), resourceFile] + ) + return false + + return true + + +# Run the command +func run(command_params: Array) -> int: + var resourceFile = "res://gymkhana/sounds/" + command_params[0] + ".ogg" + escoria.object_manager.get_object("_sound").node.set_state( + resourceFile + ) + return ESCExecution.RC_OK + + +# Function called when the command is interrupted. +func interrupt(): + # Do nothing + pass + diff --git a/gymkhana/addons/escoria-ui-return-monkey-island/plugin.gd b/gymkhana/addons/escoria-ui-return-monkey-island/plugin.gd index a117b176..1f9c0e04 100644 --- a/gymkhana/addons/escoria-ui-return-monkey-island/plugin.gd +++ b/gymkhana/addons/escoria-ui-return-monkey-island/plugin.gd @@ -12,12 +12,25 @@ func get_plugin_name(): func disable_plugin(): print("Disabling plugin Escoria UI Return to Monkey Island.") EscoriaPlugin.deregister_ui("res://gymkhana/addons/escoria-ui-return-monkey-island/game.tscn") + ESCProjectSettingsManager.remove_setting( + RTMIUiSettings.SOUND_LIBRARY_FOLDER + ) + # Register UI with Escoria func enable_plugin(): - print("Enabling plugin Escoria UI Return to Monkey Island.") - if not EscoriaPlugin.register_ui(self, "res://gymkhana/addons/escoria-ui-return-monkey-island/game.tscn"): + print("Enabling plugin Escoria Dialog Simple") + + if EscoriaPlugin.register_ui(self, "res://gymkhana/addons/escoria-ui-return-monkey-island/game.tscn"): + ESCProjectSettingsManager.register_setting( + RTMIUiSettings.SOUND_LIBRARY_FOLDER, + "res://game/sounds", + { + "type": TYPE_STRING + } + ) + else: get_editor_interface().set_plugin_enabled( get_plugin_name(), false diff --git a/gymkhana/addons/escoria-ui-return-monkey-island/rtmi_ui_settings.gd b/gymkhana/addons/escoria-ui-return-monkey-island/rtmi_ui_settings.gd new file mode 100644 index 00000000..942ce512 --- /dev/null +++ b/gymkhana/addons/escoria-ui-return-monkey-island/rtmi_ui_settings.gd @@ -0,0 +1,7 @@ +extends Resource +class_name RTMIUiSettings + +const SETTINGS_ROOT = "escoria/rtmi_ui" + + +const SOUND_LIBRARY_FOLDER = "%s/sound_library_folder" % SETTINGS_ROOT diff --git a/gymkhana/rooms/turno_cocina/cocina/esc/puerta_delante.esc b/gymkhana/rooms/turno_cocina/cocina/esc/puerta_delante.esc index 5c1a37a4..1f136478 100644 --- a/gymkhana/rooms/turno_cocina/cocina/esc/puerta_delante.esc +++ b/gymkhana/rooms/turno_cocina/cocina/esc/puerta_delante.esc @@ -1,3 +1,3 @@ :action1 -play_snd res://gymkhana/sounds/cocina_delante_open.ogg +play_lib_snd puerta_cocina_delante change_scene "res://gymkhana/rooms/turno_cocina/cocina_delante/cocina_delante.tscn" diff --git a/gymkhana/rooms/turno_cocina/cocina/esc/puerta_detras.esc b/gymkhana/rooms/turno_cocina/cocina/esc/puerta_detras.esc index aa647530..4a1e35e1 100644 --- a/gymkhana/rooms/turno_cocina/cocina/esc/puerta_detras.esc +++ b/gymkhana/rooms/turno_cocina/cocina/esc/puerta_detras.esc @@ -1,3 +1,3 @@ :action1 -play_snd res://gymkhana/sounds/cocina_detras_open.ogg +play_lib_snd puerta_cocina_detras change_scene "res://gymkhana/rooms/turno_cocina/cocina_detras/cocina_detras.tscn" diff --git a/gymkhana/rooms/turno_cocina/cocina_delante/esc/puerta_cocina.esc b/gymkhana/rooms/turno_cocina/cocina_delante/esc/puerta_cocina.esc index 84e8d46f..c3a50c2e 100644 --- a/gymkhana/rooms/turno_cocina/cocina_delante/esc/puerta_cocina.esc +++ b/gymkhana/rooms/turno_cocina/cocina_delante/esc/puerta_cocina.esc @@ -1,6 +1,3 @@ :action1 -accept_input SKIP -play_video res://gymkhana/videos/test_video.ogv -accept_input ALL -play_snd res://gymkhana/sounds/cocina_delante_open.ogg -change_scene "res://gymkhana/rooms/turno_cocina/cocina/cocina.tscn" \ No newline at end of file +play_lib_snd puerta_cocina_delante +change_scene "res://gymkhana/rooms/turno_cocina/cocina/cocina.tscn" diff --git a/gymkhana/rooms/turno_cocina/cocina_delante/esc/puerta_despensa.esc b/gymkhana/rooms/turno_cocina/cocina_delante/esc/puerta_despensa.esc index cbbda34c..4d673434 100644 --- a/gymkhana/rooms/turno_cocina/cocina_delante/esc/puerta_despensa.esc +++ b/gymkhana/rooms/turno_cocina/cocina_delante/esc/puerta_despensa.esc @@ -1,3 +1,3 @@ :action1 -play_snd res://gymkhana/sounds/despensa_open.ogg -change_scene "res://gymkhana/rooms/turno_cocina/despensa/despensa.tscn" +play_lib_snd puerta_despensa +change_scene "res://gymkhana/rooms/turno_cocina/despensa/despensa.tscn" \ No newline at end of file diff --git a/gymkhana/rooms/turno_cocina/cocina_detras/esc/puerta_cocina.esc b/gymkhana/rooms/turno_cocina/cocina_detras/esc/puerta_cocina.esc index e6a65b9e..d304a252 100644 --- a/gymkhana/rooms/turno_cocina/cocina_detras/esc/puerta_cocina.esc +++ b/gymkhana/rooms/turno_cocina/cocina_detras/esc/puerta_cocina.esc @@ -1,3 +1,3 @@ :action1 -play_snd res://gymkhana/sounds/cocina_detras_open.ogg +play__lib_snd puerta_cocina_detras change_scene "res://gymkhana/rooms/turno_cocina/cocina/cocina.tscn" diff --git a/gymkhana/rooms/turno_cocina/despensa/esc/puerta_exterior.esc b/gymkhana/rooms/turno_cocina/despensa/esc/puerta_exterior.esc index 4be9bafa..68409241 100644 --- a/gymkhana/rooms/turno_cocina/despensa/esc/puerta_exterior.esc +++ b/gymkhana/rooms/turno_cocina/despensa/esc/puerta_exterior.esc @@ -1,3 +1,3 @@ :action1 -play_snd res://gymkhana/sounds/despensa_open.ogg +play_lib_snd puerta_despensa change_scene "res://gymkhana/rooms/turno_cocina/cocina_delante/cocina_delante.tscn" diff --git a/gymkhana/sounds/cocina_delante_open.ogg b/gymkhana/sounds/puerta_cocina_delante.ogg similarity index 100% rename from gymkhana/sounds/cocina_delante_open.ogg rename to gymkhana/sounds/puerta_cocina_delante.ogg diff --git a/gymkhana/sounds/cocina_detras_open.ogg b/gymkhana/sounds/puerta_cocina_detras.ogg similarity index 100% rename from gymkhana/sounds/cocina_detras_open.ogg rename to gymkhana/sounds/puerta_cocina_detras.ogg diff --git a/gymkhana/sounds/despensa_open.ogg b/gymkhana/sounds/puerta_despensa.ogg similarity index 100% rename from gymkhana/sounds/despensa_open.ogg rename to gymkhana/sounds/puerta_despensa.ogg diff --git a/project.godot b/project.godot index 13d3b962..748c3154 100644 --- a/project.godot +++ b/project.godot @@ -500,6 +500,11 @@ _global_script_classes=[ { "path": "res://gymkhana/addons/escoria-ui-return-monkey-island/item_outline.gd" }, { "base": "ESCBaseCommand", +"class": "PlayLibSound", +"language": "GDScript", +"path": "res://gymkhana/addons/escoria-ui-return-monkey-island/esc/commands/play_lib_snd.gd" +}, { +"base": "ESCBaseCommand", "class": "PlaySndCommand", "language": "GDScript", "path": "res://addons/escoria-core/game/core-scripts/esc/commands/play_snd.gd" @@ -534,6 +539,11 @@ _global_script_classes=[ { "language": "GDScript", "path": "res://gymkhana/addons/escoria-ui-return-monkey-island-dialog-simple/rtmi_dialog_simple_settings.gd" }, { +"base": "Resource", +"class": "RTMIUiSettings", +"language": "GDScript", +"path": "res://gymkhana/addons/escoria-ui-return-monkey-island/rtmi_ui_settings.gd" +}, { "base": "ESCBaseCommand", "class": "RandGlobalCommand", "language": "GDScript", @@ -798,6 +808,7 @@ _global_script_class_icons={ "InventoryAddCommand": "", "InventoryRemoveCommand": "", "ItemOutline": "res://addons/escoria-core/design/esc_item.svg", +"PlayLibSound": "", "PlaySndCommand": "", "PlayVideoCommand": "", "PrintCommand": "", @@ -805,6 +816,7 @@ _global_script_class_icons={ "QueueResourceCommand": "", "RTMISimpleDialogPlugin": "", "RTMISimpleDialogSettings": "", +"RTMIUiSettings": "", "RandGlobalCommand": "", "RepeatCommand": "", "SayCommand": "", @@ -926,6 +938,7 @@ rtmi_dialog_simple/left_click_action="Speed up" rtmi_dialog_simple/stop_talking_animation_on="End of audio" debug/enable_hover_stack_viewer=true ui/dialogs_chooser="res://addons/escoria-core/game/scenes/dialogs/esc_dialog_options_chooser.gd" +rtmi_ui/sound_library_folder="res://gymkhana/sounds/" [input]