using Godot; using System; public partial class MainMenu : Control { [Export] public string GameScene { get; set; } [Export] public string MainMenuScene { get; set; } [ExportGroup("Debug Menu")] [Export] public PackedScene DebugMenuTemplate { get; set; } [ExportGroup("Debug Menu")] [Export] public Control DebugMenuHolder { get; set; } // Called when the node enters the scene tree for the first time. public override void _Ready() { } // Called every frame. 'delta' is the elapsed time since the previous frame. public override void _Process(double delta) { } private void _on_start_button_pressed() { if (GameScene != null) { GetTree().ChangeSceneToFile(GameScene); } } private void _on_debug_button_pressed() { if (DebugMenuTemplate is null || DebugMenuHolder is null) return; DebugMenuHolder.Visible = true; var children = DebugMenuHolder.GetChildren(); foreach (var child in children) { child.QueueFree(); } var menu = DebugMenuTemplate.Instantiate(); DebugMenuHolder.CallDeferred("add_child", menu); menu.DebugMenuClosed += () => { DebugMenuHolder.Visible = false; }; } private void _on_mainmenu_button_pressed() { if (MainMenuScene != null) { GetTree().ChangeSceneToFile(MainMenuScene); } } private void _on_exit_button_pressed() { GetTree().Quit(); } }