astar angefangen
This commit is contained in:
@@ -8,7 +8,6 @@ namespace Slimepire.Gameplay;
|
|||||||
[SceneTree]
|
[SceneTree]
|
||||||
public partial class BuildGhost : Node2D
|
public partial class BuildGhost : Node2D
|
||||||
{
|
{
|
||||||
public event Action<Vector2>? OnBuild;
|
|
||||||
private Tube? _tube;
|
private Tube? _tube;
|
||||||
private readonly Dictionary<Nodule, Tube> _connectedTubes = [];
|
private readonly Dictionary<Nodule, Tube> _connectedTubes = [];
|
||||||
|
|
||||||
@@ -77,7 +76,6 @@ public partial class BuildGhost : Node2D
|
|||||||
if (@event is InputEventMouseButton { Pressed: false, ButtonIndex: MouseButton.Left })
|
if (@event is InputEventMouseButton { Pressed: false, ButtonIndex: MouseButton.Left })
|
||||||
{
|
{
|
||||||
NoduleManager.Instance.Building = false;
|
NoduleManager.Instance.Building = false;
|
||||||
OnBuild?.Invoke(GlobalPosition);
|
|
||||||
|
|
||||||
var nodule = Instantiator.Instantiate<Nodule>();
|
var nodule = Instantiator.Instantiate<Nodule>();
|
||||||
|
|
||||||
|
|||||||
@@ -8,23 +8,26 @@ public partial class NoduleManager
|
|||||||
{
|
{
|
||||||
public bool Building { get; set; }
|
public bool Building { get; set; }
|
||||||
|
|
||||||
|
private AStar2D _aStar = new();
|
||||||
private readonly List<Nodule> _nodules = [];
|
private readonly List<Nodule> _nodules = [];
|
||||||
private readonly HashSet<NoduleConnection> _connections = [];
|
private readonly HashSet<NoduleConnection> _connections = [];
|
||||||
|
|
||||||
|
// GFX
|
||||||
private readonly Dictionary<NoduleConnection, Tube> _tubeConnections = new();
|
private readonly Dictionary<NoduleConnection, Tube> _tubeConnections = new();
|
||||||
private readonly List<Tube> _tubes = [];
|
|
||||||
|
|
||||||
public void RegisterNodule(Nodule nodule)
|
public void RegisterNodule(Nodule nodule)
|
||||||
{
|
{
|
||||||
_nodules.Add(nodule);
|
_nodules.Add(nodule);
|
||||||
|
_aStar.AddPoint(nodule.Id, nodule.Position);
|
||||||
|
|
||||||
UpdateNoduleConnections();
|
UpdateNoduleConnections();
|
||||||
UpdateTubes();
|
UpdateTubesAndAstar();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Update()
|
public void Update()
|
||||||
{
|
{
|
||||||
UpdateNoduleConnections();
|
UpdateNoduleConnections();
|
||||||
UpdateTubes();
|
UpdateTubesAndAstar();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void UpdateNoduleConnections()
|
private void UpdateNoduleConnections()
|
||||||
@@ -36,24 +39,22 @@ public partial class NoduleManager
|
|||||||
_connections.Add(new NoduleConnection(n, c));
|
_connections.Add(new NoduleConnection(n, c));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
GD.Print($"Connections: {_connections.Count}");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void UpdateTubes()
|
private void UpdateTubesAndAstar()
|
||||||
{
|
{
|
||||||
foreach (var c in _connections)
|
foreach (var c in _connections)
|
||||||
{
|
{
|
||||||
if (!_tubeConnections.ContainsKey(c))
|
if (!_tubeConnections.ContainsKey(c))
|
||||||
{
|
{
|
||||||
GD.Print("Hello?");
|
|
||||||
var tube = Instantiator.Instantiate<Tube>();
|
var tube = Instantiator.Instantiate<Tube>();
|
||||||
_tubes.Add(tube);
|
|
||||||
_tubeConnections.Add(c, tube);
|
_tubeConnections.Add(c, tube);
|
||||||
// tube.GlobalPosition = c.A.GlobalPosition;
|
|
||||||
c.A.AddChild(tube);
|
c.A.AddChild(tube);
|
||||||
|
|
||||||
tube.SetTarget(c.B.Position);
|
tube.SetTarget(c.B.Position);
|
||||||
|
|
||||||
|
// TODO: refactor this out of gfx stuff
|
||||||
|
_aStar.ConnectPoints(c.A.Id, c.B.Id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,4 @@
|
|||||||
using System.Diagnostics;
|
|
||||||
using Godot;
|
using Godot;
|
||||||
using Slimepire.Core;
|
|
||||||
using Slimepire.Data;
|
using Slimepire.Data;
|
||||||
|
|
||||||
namespace Slimepire.Gameplay.Nodules;
|
namespace Slimepire.Gameplay.Nodules;
|
||||||
@@ -8,6 +6,8 @@ namespace Slimepire.Gameplay.Nodules;
|
|||||||
[SceneTree]
|
[SceneTree]
|
||||||
public partial class Nodule : Node2D
|
public partial class Nodule : Node2D
|
||||||
{
|
{
|
||||||
|
public long Id { get; set; } = BitConverter.ToInt64(Guid.NewGuid().ToByteArray(), 0);
|
||||||
|
|
||||||
private bool _mouseInsideClickArea;
|
private bool _mouseInsideClickArea;
|
||||||
private bool _clickedInside;
|
private bool _clickedInside;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user