randomize seed for menu
This commit is contained in:
parent
17017d631e
commit
a3019beef1
23
Main.cs
23
Main.cs
@ -1,24 +1,37 @@
|
||||
using Godot;
|
||||
using System;
|
||||
using Particles.ParticleSimulation;
|
||||
|
||||
public class Main : Node
|
||||
{
|
||||
|
||||
public void StartSimulation(int seed, int nParticles)
|
||||
public int Seed;
|
||||
private int _nParticles;
|
||||
|
||||
public void StartSimulation(int nParticles)
|
||||
{
|
||||
_nParticles = nParticles;
|
||||
var particleSimulationPackedScene = GD.Load<PackedScene>("res://ParticleSimulation/ParticleSimulationScene.tscn");
|
||||
var particleSimulationScene = particleSimulationPackedScene.Instance<ParticleSimulationScene>();
|
||||
particleSimulationScene.Name = "Simulation";
|
||||
particleSimulationScene.Name = Seed.ToString();
|
||||
AddChild(particleSimulationScene);
|
||||
particleSimulationScene.Initialize(seed, nParticles);
|
||||
particleSimulationScene.Initialize(nParticles);
|
||||
GetNode<Control>("MainMenu").Hide();
|
||||
//OS.WindowResizable = false;
|
||||
}
|
||||
|
||||
public void ExitToMenu()
|
||||
{
|
||||
GetNode("Simulation").QueueFree();
|
||||
GetNode(Seed.ToString()).QueueFree();
|
||||
GetNode<Control>("MainMenu").Show();
|
||||
GetNode<MainMenu>("MainMenu").RefreshSeedText();
|
||||
}
|
||||
|
||||
public void RestartSimulation()
|
||||
{
|
||||
GetNode<ParticleSimulationScene>(Seed.ToString()).Hide();
|
||||
GetNode(Seed.ToString()).QueueFree();
|
||||
Seed = (int) GD.Randi();
|
||||
StartSimulation(_nParticles);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,5 +1,4 @@
|
||||
using Godot;
|
||||
using System;
|
||||
|
||||
public class MainMenu : Control
|
||||
{
|
||||
@ -10,6 +9,7 @@ public class MainMenu : Control
|
||||
private Button _toggleFullScreenButton;
|
||||
private TextEdit _seedText;
|
||||
private TextEdit _particleCountText;
|
||||
private Button _randomizeButton;
|
||||
|
||||
public override void _Ready()
|
||||
{
|
||||
@ -17,25 +17,33 @@ public class MainMenu : Control
|
||||
_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");
|
||||
_seedText = GetNode("MenuButtons").GetNode("Inputs").GetNode("Seed").GetNode<TextEdit>("SeedText");
|
||||
_particleCountText = GetNode("MenuButtons").GetNode("Inputs").GetNode("ParticleCount").GetNode<TextEdit>("ParticleCountText");
|
||||
_randomizeButton = GetNode("MenuButtons").GetNode("Inputs").GetNode("Seed").GetNode<Button>("RandomizeButton");
|
||||
|
||||
// Connect signals
|
||||
_simulateButton.Connect("pressed", this, nameof(_OnSimulatePressed));
|
||||
_toggleFullScreenButton.Connect("pressed", this, nameof(_OnToggleFullscreenPressed));
|
||||
_randomizeButton.Connect("pressed", this, nameof(_OnRandomizePressed));
|
||||
|
||||
// Random seed
|
||||
GD.Randomize();
|
||||
var randomSeed = (int)GD.Randi();
|
||||
_seedText.Text = randomSeed.ToString();
|
||||
_main.Seed = randomSeed;
|
||||
RefreshSeedText();
|
||||
}
|
||||
|
||||
public void RefreshSeedText()
|
||||
{
|
||||
_seedText.Text = _main.Seed.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);
|
||||
_main.Seed = _seedText.Text.ToInt();
|
||||
_main.StartSimulation(nParticles);
|
||||
}
|
||||
|
||||
public void _OnToggleFullscreenPressed()
|
||||
@ -43,6 +51,13 @@ public class MainMenu : Control
|
||||
OS.WindowFullscreen = !OS.WindowFullscreen;
|
||||
}
|
||||
|
||||
public void _OnRandomizePressed()
|
||||
{
|
||||
var randomSeed = (int) GD.Randi();
|
||||
_main.Seed = randomSeed;
|
||||
RefreshSeedText();
|
||||
}
|
||||
|
||||
public override void _Input(InputEvent @event)
|
||||
{
|
||||
// Quit only if menu is visible
|
||||
|
@ -23,76 +23,99 @@ anchor_left = 0.5
|
||||
anchor_top = 0.5
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 0.5
|
||||
margin_left = -150.0
|
||||
margin_top = -132.0
|
||||
margin_right = 150.0
|
||||
margin_bottom = 337.685
|
||||
margin_left = -259.5
|
||||
margin_top = -114.0
|
||||
margin_right = 259.5
|
||||
margin_bottom = 172.5
|
||||
custom_constants/separation = 12
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="ParticleCountLabel" type="Label" parent="MenuButtons"]
|
||||
margin_right = 300.0
|
||||
[node name="Inputs" type="HBoxContainer" parent="MenuButtons"]
|
||||
margin_right = 519.0
|
||||
margin_bottom = 150.0
|
||||
alignment = 1
|
||||
|
||||
[node name="Seed" type="VBoxContainer" parent="MenuButtons/Inputs"]
|
||||
margin_right = 250.946
|
||||
margin_bottom = 150.0
|
||||
rect_min_size = Vector2( 250.946, 0 )
|
||||
|
||||
[node name="SeedLabel" type="Label" parent="MenuButtons/Inputs/Seed"]
|
||||
margin_right = 250.0
|
||||
margin_bottom = 27.0
|
||||
text = "Number of Particles"
|
||||
align = 1
|
||||
|
||||
[node name="ParticleCountText" type="TextEdit" parent="MenuButtons"]
|
||||
margin_top = 39.0
|
||||
margin_right = 300.0
|
||||
margin_bottom = 103.769
|
||||
rect_min_size = Vector2( 0, 64.769 )
|
||||
text = "1000"
|
||||
|
||||
[node name="SeedLabel" type="Label" parent="MenuButtons"]
|
||||
margin_top = 115.0
|
||||
margin_right = 300.0
|
||||
margin_bottom = 142.0
|
||||
text = "Optional Seed Number"
|
||||
text = "Seed Number"
|
||||
align = 1
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="SeedText" type="TextEdit" parent="MenuButtons"]
|
||||
margin_top = 154.0
|
||||
margin_right = 300.0
|
||||
margin_bottom = 218.769
|
||||
[node name="SeedText" type="TextEdit" parent="MenuButtons/Inputs/Seed"]
|
||||
margin_top = 31.0
|
||||
margin_right = 250.0
|
||||
margin_bottom = 95.769
|
||||
rect_min_size = Vector2( 0, 64.769 )
|
||||
text = "12345"
|
||||
|
||||
[node name="RandomizeButton" type="Button" parent="MenuButtons/Inputs/Seed"]
|
||||
margin_top = 99.0
|
||||
margin_right = 250.0
|
||||
margin_bottom = 150.251
|
||||
text = "Randomize!"
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="ParticleCount" type="VBoxContainer" parent="MenuButtons/Inputs"]
|
||||
margin_left = 254.0
|
||||
margin_right = 519.0
|
||||
margin_bottom = 150.0
|
||||
|
||||
[node name="ParticleCountLabel" type="Label" parent="MenuButtons/Inputs/ParticleCount"]
|
||||
margin_right = 265.0
|
||||
margin_bottom = 27.0
|
||||
text = "Number of Particles"
|
||||
align = 1
|
||||
|
||||
[node name="ParticleCountText" type="TextEdit" parent="MenuButtons/Inputs/ParticleCount"]
|
||||
margin_top = 31.0
|
||||
margin_right = 265.0
|
||||
margin_bottom = 95.769
|
||||
rect_min_size = Vector2( 0, 64.769 )
|
||||
text = "1000"
|
||||
|
||||
[node name="SimulateButton" type="Button" parent="MenuButtons"]
|
||||
margin_top = 230.0
|
||||
margin_right = 300.0
|
||||
margin_bottom = 281.251
|
||||
margin_top = 162.0
|
||||
margin_right = 519.0
|
||||
margin_bottom = 213.251
|
||||
text = "Simulate!"
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="Warning" type="Label" parent="MenuButtons"]
|
||||
margin_top = 293.0
|
||||
margin_right = 300.0
|
||||
margin_bottom = 338.0
|
||||
margin_top = 225.0
|
||||
margin_right = 519.0
|
||||
margin_bottom = 270.0
|
||||
custom_fonts/font = SubResource( 1 )
|
||||
text = "Simulation cannot be resized
|
||||
once simulation starts!"
|
||||
align = 1
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="MenuButtons"]
|
||||
margin_top = 350.0
|
||||
margin_right = 300.0
|
||||
margin_bottom = 350.0
|
||||
margin_top = 282.0
|
||||
margin_right = 519.0
|
||||
margin_bottom = 282.0
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="ToggleFullscreenButton" type="Button" parent="MenuButtons"]
|
||||
margin_top = 362.0
|
||||
margin_right = 300.0
|
||||
margin_bottom = 413.251
|
||||
text = "Toggle Fullscreen"
|
||||
margin_top = 294.0
|
||||
margin_right = 519.0
|
||||
margin_bottom = 345.251
|
||||
text = "Toggle Fullscreen!"
|
||||
|
||||
[node name="Logo" type="TextureRect" parent="."]
|
||||
show_behind_parent = true
|
||||
@ -110,5 +133,3 @@ texture = ExtResource( 2 )
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[connection signal="pressed" from="MenuButtons/ToggleFullscreenButton" to="." method="_on_ToggleFullscreen_pressed"]
|
||||
|
@ -10,9 +10,10 @@ public class ParticleSimulationScene : Node2D
|
||||
private ParticleSimulation _particleSimulation;
|
||||
public float PhysicsInterpolationFraction;
|
||||
|
||||
public void Initialize(int seed, int nParticles)
|
||||
public void Initialize(int nParticles)
|
||||
{
|
||||
_particleNodes = GetNode<Node2D>("ParticleNodes");
|
||||
var seed = GetParent<Main>().Seed;
|
||||
GD.Seed((ulong)seed);
|
||||
GD.Print("Last Seed: " + seed);
|
||||
var viewSize = GetViewportRect().Size;
|
||||
@ -30,7 +31,8 @@ public class ParticleSimulationScene : Node2D
|
||||
{
|
||||
if (Input.IsActionJustPressed("quit"))
|
||||
GetParent<Main>().ExitToMenu();
|
||||
if (Input.IsActionJustPressed("reset")) GetTree().ReloadCurrentScene();
|
||||
if (Input.IsActionJustPressed("reset"))
|
||||
GetParent<Main>().RestartSimulation();
|
||||
PhysicsInterpolationFraction = Engine.GetPhysicsInterpolationFraction();
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user