Watering can animation plays when watering

This commit is contained in:
2025-05-19 22:06:40 +02:00
parent 73dc3063c0
commit 7276bdda38
3 changed files with 95 additions and 1 deletions
@@ -1,3 +1,5 @@
using System.Threading;
using System.Threading.Tasks;
using Godot;
namespace Babushka.scripts.CSharp.Common.CharacterControls;
@@ -11,6 +13,7 @@ public partial class Player2D : CharacterBody2D
private int _toolID = -1;
private string _toolString;
private bool anyActionPressed;
private bool _wateringInProgress;
private Vector2 _lastDirection = Vector2.Zero;
public override void _Process(double delta)
@@ -61,6 +64,8 @@ public partial class Player2D : CharacterBody2D
}
else
{
if (_wateringInProgress)
return;
//idle
if(_lastDirection == Vector2.Zero || _lastDirection == Vector2.Down)
_sprite.Animation = "front idle" + _toolString;
@@ -90,4 +95,23 @@ public partial class Player2D : CharacterBody2D
break;
}
}
public void PlayWateringAnimation()
{
if (_toolID == 1 && !_wateringInProgress)
{
_sprite.Animation = "diagonal wateringcan";
_sprite.Play();
_wateringInProgress = true;
Task.Run(DelayedWateringCanReset);
}
}
private async Task DelayedWateringCanReset()
{
await Task.Delay(1000);
_wateringInProgress = false;
}
}
@@ -17,6 +17,8 @@ public partial class FarmingControls2D : Node2D
private int _currentWateringCanStep = 0;
private int _wateringCanCapacity = 3;
[Signal] public delegate void WateringFieldEventHandler();
#region Tools
/// <summary>
@@ -84,6 +86,7 @@ public partial class FarmingControls2D : Node2D
return;
field.Water();
EmitSignal(SignalName.WateringField);
if (_currentWateringCanStep < _wateringCanCapacity)
{