diff --git a/addons/EnvironmentSwitcher/environment_switcher.gd b/addons/EnvironmentSwitcher/environment_switcher.gd index 65b2720a..feec9e3e 100644 --- a/addons/EnvironmentSwitcher/environment_switcher.gd +++ b/addons/EnvironmentSwitcher/environment_switcher.gd @@ -3,82 +3,51 @@ extends EditorPlugin enum EnvType { DEV, PROD } -var current_environment : EnvType = EnvType.DEV +const CONFIG_PATH := "user://environment.cfg" -const MENU_NAME: String = "Environment Switcher" -const SWITCH_PROD: String = "Switch to PROD" -const SWITCH_DEV: String = "Switch to DEV" +var env_selector: OptionButton +var current_environment: EnvType = EnvType.DEV func _enter_tree(): + # Create OptionButton + env_selector = OptionButton.new() + env_selector.name = "Env Selector" + env_selector.add_item("DEV", EnvType.DEV) + env_selector.add_item("PROD", EnvType.PROD) + env_selector.connect("item_selected", _on_env_selected) + + # Add to the toolbar + add_control_to_container(EditorPlugin.CONTAINER_TOOLBAR, env_selector) + + # Load environment setting load_environment() - _update_menu() - -func _update_menu(): - # Supprimer les anciens items si existants - remove_tool_menu_item(SWITCH_DEV) - remove_tool_menu_item(SWITCH_PROD) - remove_tool_menu_item("Current environment: " + _environment_to_string(current_environment)) - - # Ajout d'un affichage de l'environnement actuel (désactivé) - add_tool_menu_item("Current environment: " + _environment_to_string(current_environment), Callable(self, "_noop")) - if current_environment == EnvType.DEV: - add_tool_menu_item(SWITCH_PROD, Callable(self, "_on_menu_item_pressed").bind(EnvType.PROD)) - elif current_environment == EnvType.PROD: - add_tool_menu_item(SWITCH_DEV, Callable(self, "_on_menu_item_pressed").bind(EnvType.DEV)) - else: - push_warning("Environment not recognized in EnvironmentSwitcher: " + str(current_environment)) - -func _noop(): - # Fonction vide pour les éléments non cliquables - print("It is useless to click on this button") - -func _on_menu_item_pressed(env: EnvType): - remove_tool_menu_item("Current environment: " + _environment_to_string(current_environment)) - current_environment = env - save_environment() - _update_menu() + # Reflect the current environment in UI + env_selector.select(current_environment) func _exit_tree(): - # Retirer l'élément du menu quand le plugin est déchargé - remove_tool_menu_item(MENU_NAME) + # Clean up the UI and save state + remove_control_from_container(EditorPlugin.CONTAINER_TOOLBAR, env_selector) + env_selector.queue_free() +func _on_env_selected(index: int) -> void: + current_environment = index + save_environment() + print("Environment switched to:", _environment_to_string(current_environment)) -func _build_submenu() -> PopupMenu: - var popup = PopupMenu.new() - - # Afficher l'environnement actuel - popup.add_disabled_item("Current environment: " + _environment_to_string(current_environment)) - popup.add_separator() - - # Ajouter des items pour changer l'environnement - popup.add_item(SWITCH_DEV, EnvType.DEV) - popup.add_item(SWITCH_PROD, EnvType.PROD) - - # Connecter l'action sur l'élément de menu à la fonction de traitement - popup.id_pressed.connect(self, "_on_menu_item_pressed") - - return popup - -# Conversion de l'énumération en texte pour l'affichage dans le menu func _environment_to_string(env: EnvType) -> String: match env: - EnvType.DEV: - return "DEV" - EnvType.PROD: - return "PROD" - _: - return "Unknown" + EnvType.DEV: return "DEV" + EnvType.PROD: return "PROD" + _: return "Unknown" -# Sauvegarder l'environnement dans un fichier de configuration func save_environment(): var config = ConfigFile.new() config.set_value("environment", "current", str(current_environment)) - config.save("user://environment.cfg") + config.save(CONFIG_PATH) -# Charger l'environnement depuis le fichier de configuration func load_environment(): var config = ConfigFile.new() - if config.load("user://environment.cfg") == OK: + if config.load(CONFIG_PATH) == OK: var env = config.get_value("environment", "current", str(EnvType.DEV)) current_environment = int(env) diff --git a/project.godot b/project.godot index 2ba4f323..24969eec 100644 --- a/project.godot +++ b/project.godot @@ -52,7 +52,7 @@ window/stretch/mode="canvas_items" [editor_plugins] -enabled=PackedStringArray("res://addons/EnvironmentSwitcher/plugin.cfg", "res://addons/godot-form-validator/plugin.cfg", "res://addons/godot-sqlite/plugin.cfg") +enabled=PackedStringArray("res://addons/EnvironmentSwitcher/plugin.cfg", "res://addons/export_tool_manager/plugin.cfg", "res://addons/godot-form-validator/plugin.cfg", "res://addons/godot-sqlite/plugin.cfg") [file_customization] diff --git a/resources/audio_buses/main_audio_bus_layout.tres b/resources/audio_buses/main_audio_bus_layout.tres index b8356521..158983f7 100644 --- a/resources/audio_buses/main_audio_bus_layout.tres +++ b/resources/audio_buses/main_audio_bus_layout.tres @@ -1,22 +1,22 @@ [gd_resource type="AudioBusLayout" format=3 uid="uid://crtt36bkguxm5"] [resource] -bus/0/volume_db = -0.030508 +bus/0/volume_db = 0.0788927 bus/1/name = &"Music" bus/1/solo = false bus/1/mute = false bus/1/bypass_fx = false -bus/1/volume_db = -0.030508 +bus/1/volume_db = -29.4736 bus/1/send = &"Master" bus/2/name = &"Voice" bus/2/solo = false bus/2/mute = false bus/2/bypass_fx = false -bus/2/volume_db = -0.0327301 +bus/2/volume_db = 0.0788927 bus/2/send = &"Master" bus/3/name = &"Effects" bus/3/solo = false bus/3/mute = false bus/3/bypass_fx = false -bus/3/volume_db = -0.030508 +bus/3/volume_db = -3.41635 bus/3/send = &"Master"