|
|
|
|
@ -1,12 +1,9 @@
|
|
|
|
|
using System;
|
|
|
|
|
using Babushka.scripts.CSharp.Common.Animation;
|
|
|
|
|
using Babushka.scripts.CSharp.Common.Inventory;
|
|
|
|
|
using Godot;
|
|
|
|
|
|
|
|
|
|
namespace Babushka.scripts.CSharp.Common.Farming;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Determines the behaviour of a plant in Babushka.
|
|
|
|
|
/// </summary>
|
|
|
|
|
@ -23,8 +20,9 @@ public partial class PlantBehaviour2D : Node2D
|
|
|
|
|
[Export] private bool _magicWordNeeded = true;
|
|
|
|
|
|
|
|
|
|
private string _magicWordDialogicEventName = "MagicWord";
|
|
|
|
|
private Sprite2D _currentPlantSprite = null;
|
|
|
|
|
private Sprite2D? _currentPlantSprite = null;
|
|
|
|
|
private bool _magicWordSaid = false;
|
|
|
|
|
private bool _calledOnReady = false;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// public accessor for the field reference
|
|
|
|
|
@ -37,6 +35,7 @@ public partial class PlantBehaviour2D : Node2D
|
|
|
|
|
|
|
|
|
|
public override void _Ready()
|
|
|
|
|
{
|
|
|
|
|
GD.Print($"Ready: {Name}");
|
|
|
|
|
if (_state == PlantState.None)
|
|
|
|
|
{
|
|
|
|
|
_state = PlantState.Planted;
|
|
|
|
|
@ -45,6 +44,8 @@ public partial class PlantBehaviour2D : Node2D
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
GD.Print("plant state not none.");
|
|
|
|
|
_calledOnReady = true;
|
|
|
|
|
GrowPlant();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@ -60,9 +61,13 @@ public partial class PlantBehaviour2D : Node2D
|
|
|
|
|
/// </summary>
|
|
|
|
|
public void GrowPlant()
|
|
|
|
|
{
|
|
|
|
|
if (_field.FieldState != FieldState.Watered || _magicWordSaid != _magicWordNeeded)
|
|
|
|
|
return;
|
|
|
|
|
if (!_calledOnReady)
|
|
|
|
|
{
|
|
|
|
|
if (_field.FieldState != FieldState.Watered || _magicWordSaid != _magicWordNeeded)
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
GD.Print("Growing plant.");
|
|
|
|
|
switch (_state)
|
|
|
|
|
{
|
|
|
|
|
case PlantState.None:
|
|
|
|
|
@ -105,6 +110,7 @@ public partial class PlantBehaviour2D : Node2D
|
|
|
|
|
|
|
|
|
|
_field.UpdateFieldState(FieldState.Tilled);
|
|
|
|
|
_magicWordSaid = false;
|
|
|
|
|
_calledOnReady = false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private Sprite2D GetRandomSprite(Sprite2D[] sprites)
|
|
|
|
|
|