🐛 fixed rake triggering field interaction + watering can interaction

This commit is contained in:
2025-12-16 16:43:46 +01:00
parent 4f660c4af8
commit c0111e4c17
6 changed files with 62 additions and 24 deletions
@@ -1,12 +1,14 @@
using Babushka.scripts.CSharp.Common.CharacterControls;
using Babushka.scripts.CSharp.Common.Savegame;
using Godot;
using Godot.Collections;
namespace Babushka.scripts.CSharp.Common.Farming;
/// <summary>
/// Enables a preset field in the scene sothat it can be used for farming.
/// </summary>
public partial class FieldActivator : Node
public partial class FieldActivator : Node, ISaveable
{
[Export] private FieldBehaviour2D _field;
[Export] private InteractionArea2D _activatorArea;
@@ -18,6 +20,7 @@ public partial class FieldActivator : Node
public override void _Ready()
{
LoadFromSaveData();
ToggleInteractionArea();
}
@@ -33,6 +36,7 @@ public partial class FieldActivator : Node
EmitSignal(SignalName.FieldCreated, _field);
_used = true;
ToggleInteractionArea();
UpdateSaveData();
}
}
@@ -53,5 +57,29 @@ public partial class FieldActivator : Node
{
_activatorArea.IsActive = !_used && _rakeInHand;
}
public void UpdateSaveData()
{
var payloadData = new Dictionary<string, Variant>
{
{ "field_activator_used", _used }
};
string id = GetMeta("SaveID").AsString();
SavegameService.AppendDataToSave( id, payloadData);
}
public void LoadFromSaveData()
{
string id = GetMeta("SaveID").AsString();
Dictionary<string, Variant> save = SavegameService.GetSaveData(id);
if (save.Count > 0)
{
if (save.TryGetValue("field_activator_used", out Variant usedVar))
{
_used = usedVar.AsBool();
}
}
}
}
@@ -60,7 +60,7 @@ public partial class FieldBehaviour2D : Sprite2D, ISaveable
// fieldstate == tilled / watered && samen im Inventar
_canPlant = (FieldState == FieldState.Tilled || FieldState == FieldState.Watered) && _seedsActive;
// fieldstate == tilled && watering can ausgewählt
_canWater = (FieldState == FieldState.Tilled || IsPlanted) && _wateringCanActive;
_canWater = (FieldState == FieldState.Tilled || IsPlanted) && _wateringCanActive && WateringCanState.GetFillState() > 0;
PlantingInteraction.IsActive = _canPlant || _canWater;
}