diff --git a/prefabs/Player2D.tscn b/prefabs/Player2D.tscn
index 776b0cc..1783175 100644
--- a/prefabs/Player2D.tscn
+++ b/prefabs/Player2D.tscn
@@ -1581,7 +1581,7 @@ animations = [{
}],
"loop": true,
"name": &"diagonal farming",
-"speed": 10.0
+"speed": 12.0
}, {
"frames": [{
"duration": 1.0,
@@ -3502,7 +3502,7 @@ y_sort_enabled = true
script = ExtResource("1_yl84k")
_farmingControls = NodePath("FarmingControls")
-[node name="CharacterBody2D" type="CharacterBody2D" parent="." node_paths=PackedStringArray("_sprite")]
+[node name="CharacterBody2D" type="CharacterBody2D" parent="." node_paths=PackedStringArray("_sprite") groups=["PlantGrowing"]]
position = Vector2(0, 374)
collision_layer = 4
collision_mask = 3
@@ -3523,9 +3523,8 @@ position = Vector2(0, -374)
[node name="Animated Sprites" type="AnimatedSprite2D" parent="CharacterBody2D/visuals"]
position = Vector2(0, 450)
sprite_frames = SubResource("SpriteFrames_4yiyq")
-animation = &"side pickup"
-frame = 6
-frame_progress = 0.00476268
+animation = &"diagonal farming"
+frame_progress = 0.503028
offset = Vector2(0, -450)
[node name="Hoe" type="Sprite2D" parent="CharacterBody2D/visuals"]
diff --git a/project.godot b/project.godot
index 5e96817..c732bba 100644
--- a/project.godot
+++ b/project.godot
@@ -91,6 +91,10 @@ folder_colors={
"res://shader/": "pink"
}
+[global_group]
+
+PlantGrowing=""
+
[input]
move_left={
diff --git a/scripts/CSharp/Common/CharacterControls/Player2D.cs b/scripts/CSharp/Common/CharacterControls/Player2D.cs
index e773300..2da18b6 100644
--- a/scripts/CSharp/Common/CharacterControls/Player2D.cs
+++ b/scripts/CSharp/Common/CharacterControls/Player2D.cs
@@ -1,4 +1,4 @@
-using System.Threading;
+
using System.Threading.Tasks;
using Godot;
@@ -8,6 +8,7 @@ public partial class Player2D : CharacterBody2D
{
[Export] private float _speed = 100f;
[Export] private AnimatedSprite2D _sprite;
+ [Export] private SceneTree.GroupCallFlags _fieldFlags;
// -1 means no tool.
private int _toolID = -1;
@@ -15,13 +16,14 @@ public partial class Player2D : CharacterBody2D
private bool anyActionPressed;
private bool _wateringInProgress;
private bool _pickupAnimationInProgress;
+ private bool _farmingAnimationInProgress;
private Vector2 _lastDirection = Vector2.Zero;
-
+
public override void _Process(double delta)
{
anyActionPressed = false;
- if (_pickupAnimationInProgress || _wateringInProgress)
+ if (_pickupAnimationInProgress || _wateringInProgress || _farmingAnimationInProgress)
return;
if (Input.IsActionPressed("move_right"))
@@ -115,6 +117,9 @@ public partial class Player2D : CharacterBody2D
}
}
+ ///
+ /// Called by FarmingControls Signal.
+ ///
public void PlayWateringAnimation()
{
if (_toolID == 1 && !_wateringInProgress)
@@ -146,4 +151,18 @@ public partial class Player2D : CharacterBody2D
_pickupAnimationInProgress = false;
}
+ public void PlayFarmingAnimation()
+ {
+ _sprite.Animation = "diagonal farming";
+ _sprite.Play();
+ _farmingAnimationInProgress = true;
+ Task.Run(DelayedFarmingReset);
+ }
+
+ private async Task DelayedFarmingReset()
+ {
+ await Task.Delay(1000);
+ _farmingAnimationInProgress = false;
+ }
+
}
diff --git a/scripts/CSharp/Common/Farming/PlantBehaviour2D.cs b/scripts/CSharp/Common/Farming/PlantBehaviour2D.cs
index 82ec132..0e7e215 100644
--- a/scripts/CSharp/Common/Farming/PlantBehaviour2D.cs
+++ b/scripts/CSharp/Common/Farming/PlantBehaviour2D.cs
@@ -1,4 +1,5 @@
using System;
+using Babushka.scripts.CSharp.Common.CharacterControls;
using Godot;
namespace Babushka.scripts.CSharp.Common.Farming;
@@ -14,9 +15,10 @@ public partial class PlantBehaviour2D : Node2D
[Export] private Sprite2D[] _readyPlants;
[Export] private PlantState _state = PlantState.None;
[Export] private FieldBehaviour2D _field;
-
+
private Sprite2D _currentPlantSprite = null;
+
///
/// Transitions the plant to its next growth stage.
///
@@ -25,6 +27,8 @@ public partial class PlantBehaviour2D : Node2D
if (_field.FieldState != FieldState.Watered)
return;
+ GetTree().CallGroup("PlantGrowing", Player2D.MethodName.PlayFarmingAnimation);
+
switch (_state)
{
case PlantState.None:
@@ -58,7 +62,7 @@ public partial class PlantBehaviour2D : Node2D
default:
break;
}
-
+
_field.UpdateFieldState(FieldState.Tilled);
}