🐛 fixed field activator self-deactivating on load bug

pull/49/head
kziolkowski 4 weeks ago
parent 48660b167c
commit a401cbe5b9

@ -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")]

@ -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
/// <param name="activated"></param>
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<string, Variant> 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}");
}
}
Loading…
Cancel
Save