🐛 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();
}
}
}
}