cirnogodot/Scripts/MainMenu.cs

72 lines
1.4 KiB
C#

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) {
GlobalState.Instance.GotoScene(GameScene);
//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<DebugMenu>();
DebugMenuHolder.CallDeferred("add_child", menu);
menu.DebugMenuClosed += () =>
{
DebugMenuHolder.Visible = false;
};
}
private void _on_mainmenu_button_pressed()
{
if (MainMenuScene != null) {
GlobalState.Instance.GotoScene(MainMenuScene);
//GetTree().ChangeSceneToFile(MainMenuScene);
}
}
private void _on_exit_button_pressed()
{
GetTree().Quit();
}
}