From 04151ad2b17418b8e475826b7849271426cc1f32 Mon Sep 17 00:00:00 2001 From: Jens Becker Date: Thu, 18 Jun 2026 22:13:55 +0200 Subject: [PATCH] astar angefangen --- src/Gameplay/BuildGhost.cs | 2 -- src/Gameplay/NoduleManager.cs | 19 ++++++++++--------- src/Gameplay/Nodules/Nodule.cs | 4 ++-- 3 files changed, 12 insertions(+), 13 deletions(-) diff --git a/src/Gameplay/BuildGhost.cs b/src/Gameplay/BuildGhost.cs index 988a781..c7ba900 100644 --- a/src/Gameplay/BuildGhost.cs +++ b/src/Gameplay/BuildGhost.cs @@ -8,7 +8,6 @@ namespace Slimepire.Gameplay; [SceneTree] public partial class BuildGhost : Node2D { - public event Action? OnBuild; private Tube? _tube; private readonly Dictionary _connectedTubes = []; @@ -77,7 +76,6 @@ public partial class BuildGhost : Node2D if (@event is InputEventMouseButton { Pressed: false, ButtonIndex: MouseButton.Left }) { NoduleManager.Instance.Building = false; - OnBuild?.Invoke(GlobalPosition); var nodule = Instantiator.Instantiate(); diff --git a/src/Gameplay/NoduleManager.cs b/src/Gameplay/NoduleManager.cs index f931372..2ddc889 100644 --- a/src/Gameplay/NoduleManager.cs +++ b/src/Gameplay/NoduleManager.cs @@ -8,23 +8,26 @@ public partial class NoduleManager { public bool Building { get; set; } + private AStar2D _aStar = new(); private readonly List _nodules = []; private readonly HashSet _connections = []; + + // GFX private readonly Dictionary _tubeConnections = new(); - private readonly List _tubes = []; public void RegisterNodule(Nodule nodule) { _nodules.Add(nodule); + _aStar.AddPoint(nodule.Id, nodule.Position); UpdateNoduleConnections(); - UpdateTubes(); + UpdateTubesAndAstar(); } public void Update() { UpdateNoduleConnections(); - UpdateTubes(); + UpdateTubesAndAstar(); } private void UpdateNoduleConnections() @@ -36,24 +39,22 @@ public partial class NoduleManager _connections.Add(new NoduleConnection(n, c)); } } - - GD.Print($"Connections: {_connections.Count}"); } - private void UpdateTubes() + private void UpdateTubesAndAstar() { foreach (var c in _connections) { if (!_tubeConnections.ContainsKey(c)) { - GD.Print("Hello?"); var tube = Instantiator.Instantiate(); - _tubes.Add(tube); _tubeConnections.Add(c, tube); - // tube.GlobalPosition = c.A.GlobalPosition; c.A.AddChild(tube); tube.SetTarget(c.B.Position); + + // TODO: refactor this out of gfx stuff + _aStar.ConnectPoints(c.A.Id, c.B.Id); } } } diff --git a/src/Gameplay/Nodules/Nodule.cs b/src/Gameplay/Nodules/Nodule.cs index 176b501..7092396 100644 --- a/src/Gameplay/Nodules/Nodule.cs +++ b/src/Gameplay/Nodules/Nodule.cs @@ -1,6 +1,4 @@ -using System.Diagnostics; using Godot; -using Slimepire.Core; using Slimepire.Data; namespace Slimepire.Gameplay.Nodules; @@ -8,6 +6,8 @@ namespace Slimepire.Gameplay.Nodules; [SceneTree] public partial class Nodule : Node2D { + public long Id { get; set; } = BitConverter.ToInt64(Guid.NewGuid().ToByteArray(), 0); + private bool _mouseInsideClickArea; private bool _clickedInside;