55 lines
1.6 KiB
C#
55 lines
1.6 KiB
C#
using Godot;
|
|
using System;
|
|
|
|
public class MainMenu : Control
|
|
{
|
|
|
|
// Nodes for menu items
|
|
private Main _main;
|
|
private Button _simulateButton;
|
|
private Button _toggleFullScreenButton;
|
|
private TextEdit _seedText;
|
|
private TextEdit _particleCountText;
|
|
|
|
public override void _Ready()
|
|
{
|
|
// Init nodes
|
|
_main = GetTree().Root.GetNode<Main>("Main");
|
|
_simulateButton = GetNode("MenuButtons").GetNode<Button>("SimulateButton");
|
|
_toggleFullScreenButton = GetNode("MenuButtons").GetNode<Button>("ToggleFullscreenButton");
|
|
_seedText = GetNode("MenuButtons").GetNode<TextEdit>("SeedText");
|
|
_particleCountText = GetNode("MenuButtons").GetNode<TextEdit>("ParticleCountText");
|
|
|
|
// Connect signals
|
|
_simulateButton.Connect("pressed", this, nameof(_OnSimulatePressed));
|
|
_toggleFullScreenButton.Connect("pressed", this, nameof(_OnToggleFullscreenPressed));
|
|
|
|
// Random seed
|
|
GD.Randomize();
|
|
var randomSeed = (int)GD.Randi();
|
|
_seedText.Text = randomSeed.ToString();
|
|
}
|
|
|
|
public void _OnSimulatePressed()
|
|
{
|
|
// Start simulation with seed and number of particles
|
|
var nParticles = _particleCountText.Text.ToInt();
|
|
var seed = _seedText.Text.ToInt();
|
|
_main.StartSimulation(seed, nParticles);
|
|
}
|
|
|
|
public void _OnToggleFullscreenPressed()
|
|
{
|
|
OS.WindowFullscreen = !OS.WindowFullscreen;
|
|
}
|
|
|
|
public override void _Input(InputEvent @event)
|
|
{
|
|
// Quit only if menu is visible
|
|
if (Visible && @event.IsActionPressed("quit"))
|
|
{
|
|
GetTree().Quit();
|
|
}
|
|
}
|
|
}
|