limited field creation to specified shape

This commit is contained in:
2025-05-17 17:40:15 +02:00
parent 8af825bc18
commit 222c10fe0a
3 changed files with 44 additions and 4 deletions
@@ -66,7 +66,7 @@ public partial class FarmingControls2D : Node2D
public override void _Input(InputEvent @event)
{
Vector2 mousePosition = GetViewport().GetMousePosition();
Vector2 mousePosition = _camera.GetGlobalMousePosition();
Vector2I adjustedPosition = new Vector2I(AdjustValue(mousePosition.X), AdjustValue(mousePosition.Y));
@@ -94,6 +94,14 @@ public partial class FarmingControls2D : Node2D
{
if(FieldParent == null || _fieldPrefab == null)
return;
bool fieldAllowed = FieldParent.FieldAllowed();
GD.Print($"Field allowed at {fieldPosition}: {fieldAllowed}");
// only try to instantiate a field if you're in the allowed area
if (!fieldAllowed)
return;
// only instantiate a field if there isn't one already.
if(FieldParent.Get(fieldPosition) == null)
@@ -7,7 +7,26 @@ namespace Babushka.scripts.CSharp.Common.Farming;
public partial class FieldService2D : Node2D
{
[Export] private Dictionary<Vector2I, FieldBehaviour2D> fields = new Dictionary<Vector2I, FieldBehaviour2D>();
private bool _fieldAllowed = false;
//Validate
public void MouseEnteredAllowedArea()
{
_fieldAllowed = true;
}
public void MouseExitedAllowedArea()
{
_fieldAllowed = false;
}
public bool FieldAllowed()
{
return _fieldAllowed;
}
//Create
public bool TryAddEntry(Vector2I key, FieldBehaviour2D field)
{