diff --git a/prefabs/farm/base_field.tscn b/prefabs/farm/base_field.tscn
index 2ff20d2..71163d3 100644
--- a/prefabs/farm/base_field.tscn
+++ b/prefabs/farm/base_field.tscn
@@ -115,11 +115,11 @@ scale_amount_max = 0.8
color = Color(0.400601, 0.62444, 0.791217, 1)
hue_variation_max = 0.4
-[node name="FieldActivator" type="Node2D" parent="." node_paths=PackedStringArray("_field", "_activatorArea") groups=["Saveable"]]
+[node name="FieldActivator" type="Node2D" parent="." node_paths=PackedStringArray("_field", "_activatorArea", "_saveIdHolder")]
script = ExtResource("22_57jmp")
_field = NodePath("../FieldBehaviour")
_activatorArea = NodePath("InteractionArea")
-metadata/SaveID = "8ac5da1c-3ddd-4b76-94c2-d655a4f369c7"
+_saveIdHolder = NodePath("..")
[node name="InteractionArea" parent="FieldActivator" node_paths=PackedStringArray("_spritesToOutline") instance=ExtResource("7_2eegd")]
_spritesToOutline = [NodePath("../../OutlineSprite")]
diff --git a/scripts/CSharp/Common/Farming/FieldActivator.cs b/scripts/CSharp/Common/Farming/FieldActivator.cs
index f016c0c..8017ebd 100644
--- a/scripts/CSharp/Common/Farming/FieldActivator.cs
+++ b/scripts/CSharp/Common/Farming/FieldActivator.cs
@@ -12,6 +12,7 @@ public partial class FieldActivator : Node, ISaveable
{
[Export] private FieldBehaviour2D _field;
[Export] private InteractionArea2D _activatorArea;
+ [Export] private Node _saveIdHolder;
private bool _used = false;
private bool _rakeInHand;
@@ -47,6 +48,7 @@ public partial class FieldActivator : Node, ISaveable
///
public void RakeActivated(bool activated)
{
+ GD.Print($"Rake was {activated}. Process mode: {ProcessMode}.");
if (_used || ProcessMode == ProcessModeEnum.Disabled)
return;
_rakeInHand = activated;
@@ -55,6 +57,7 @@ public partial class FieldActivator : Node, ISaveable
private void ToggleInteractionArea()
{
+ GD.Print($"Toggle interaction area. Used: {_used}, rake in hand: {_rakeInHand}");
_activatorArea.IsActive = !_used && _rakeInHand;
}
@@ -65,13 +68,18 @@ public partial class FieldActivator : Node, ISaveable
{ "field_activator_used", _used }
};
- string id = GetMeta("SaveID").AsString();
+ // Building a unique id from the top node's save id and a qualifier to make it new.
+ string parent_id = _saveIdHolder.GetMeta("SaveID").AsString();
+ string id = $"{parent_id}_field_activator";
SavegameService.AppendDataToSave( id, payloadData);
}
public void LoadFromSaveData()
{
- string id = GetMeta("SaveID").AsString();
+ GD.Print("Loading field activator save data");
+
+ string parent_id = _saveIdHolder.GetMeta("SaveID").AsString();
+ string id = $"{parent_id}_field_activator";
Dictionary save = SavegameService.GetSaveData(id);
if (save.Count > 0)
@@ -80,6 +88,11 @@ public partial class FieldActivator : Node, ISaveable
{
_used = usedVar.AsBool();
}
+ else
+ {
+ _used = false;
+ }
}
+ GD.Print($"Field activator used state: {_used}");
}
}
\ No newline at end of file