using System; using Babushka.scripts.CSharp.Low_Code.Variables; using Godot; using Godot.Collections; namespace Babushka.scripts.CSharp.Common.Farming; [GlobalClass] public partial class FarmingControls2D : Node2D { [Export] private VariableResource _sceneKeyProvider; [Export] private Node2D _movingPlayer; [Export] private Camera2D _camera; [Export] private float _wateringCanParticlesVerticalOffset = 50f; [Export] private Vector2I _fieldOffsetVector = new Vector2I(735, 651); [Export] private Node2D _fieldParent; private int _toolId = -1; private bool _wateringCanFilled = false; #region Tools /// /// If no tool has been set, then set the current tool to the incoming tool id. /// /// The id of the tool to activate if possible /// If the tool in question was activated. public bool TryActivateTool(int toolId) { bool activate; //if our hands are empty, activate if (toolId == -1) { activate = false; } else { activate = true; } _toolId = activate ? toolId : -1; WateringCanState.SetActive(_toolId == WateringCanState.WATERING_CAN_ID); return activate; } #endregion private Vector2I GetAdjustedMousePosition() { Vector2 mousePosition = _camera.GetGlobalMousePosition(); Vector2I mousePositionInteger = (Vector2I) mousePosition; Vector2I adjustedPosition = AdjustValue(mousePositionInteger, _fieldOffsetVector); return adjustedPosition; } private Vector2I AdjustValue(Vector2I input, Vector2I step) { return input.Snapped(step); } #region WATERING public void FillWateringCan() { if (_toolId == WateringCanState.WATERING_CAN_ID) { WateringCanState.Fill(); } } #endregion }