using Godot; using Godot.Collections; namespace Babushka.scripts.CSharp.Common.Farming; [GlobalClass] public partial class FieldService2D : Node2D { [Export] private Dictionary fields = new Dictionary(); private bool _fieldAllowed = false; [Signal] public delegate void FieldCreatedEventHandler(); //Validate public void MouseEnteredAllowedArea() { _fieldAllowed = true; } public void MouseExitedAllowedArea() { _fieldAllowed = false; } public bool FieldAllowed() { return _fieldAllowed; } //Create public bool TryAddEntry(Vector2I key, FieldBehaviour2D field) { if (!fields.ContainsKey(key)) { fields.Add(key, field); EmitSignal(SignalName.FieldCreated); return true; } return false; } // Read public FieldBehaviour2D Get(Vector2I key) { if (fields.TryGetValue(key, out FieldBehaviour2D field)) return field; return field; return null; } //Update public void UpdateEntry(Vector2I fieldPosition, FieldBehaviour2D state) { if (fields.ContainsKey(fieldPosition)) { fields[fieldPosition] = state; } else { TryAddEntry(fieldPosition, state); } } //Delete public void RemoveEntry(Vector2I fieldPosition) { if (fields.ContainsKey(fieldPosition)) { fields.Remove(fieldPosition); } } }