🐛 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) color = Color(0.400601, 0.62444, 0.791217, 1)
hue_variation_max = 0.4 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") script = ExtResource("22_57jmp")
_field = NodePath("../FieldBehaviour") _field = NodePath("../FieldBehaviour")
_activatorArea = NodePath("InteractionArea") _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")] [node name="InteractionArea" parent="FieldActivator" node_paths=PackedStringArray("_spritesToOutline") instance=ExtResource("7_2eegd")]
_spritesToOutline = [NodePath("../../OutlineSprite")] _spritesToOutline = [NodePath("../../OutlineSprite")]

@ -12,6 +12,7 @@ public partial class FieldActivator : Node, ISaveable
{ {
[Export] private FieldBehaviour2D _field; [Export] private FieldBehaviour2D _field;
[Export] private InteractionArea2D _activatorArea; [Export] private InteractionArea2D _activatorArea;
[Export] private Node _saveIdHolder;
private bool _used = false; private bool _used = false;
private bool _rakeInHand; private bool _rakeInHand;
@ -47,6 +48,7 @@ public partial class FieldActivator : Node, ISaveable
/// <param name="activated"></param> /// <param name="activated"></param>
public void RakeActivated(bool activated) public void RakeActivated(bool activated)
{ {
GD.Print($"Rake was {activated}. Process mode: {ProcessMode}.");
if (_used || ProcessMode == ProcessModeEnum.Disabled) if (_used || ProcessMode == ProcessModeEnum.Disabled)
return; return;
_rakeInHand = activated; _rakeInHand = activated;
@ -55,6 +57,7 @@ public partial class FieldActivator : Node, ISaveable
private void ToggleInteractionArea() private void ToggleInteractionArea()
{ {
GD.Print($"Toggle interaction area. Used: {_used}, rake in hand: {_rakeInHand}");
_activatorArea.IsActive = !_used && _rakeInHand; _activatorArea.IsActive = !_used && _rakeInHand;
} }
@ -65,13 +68,18 @@ public partial class FieldActivator : Node, ISaveable
{ "field_activator_used", _used } { "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); SavegameService.AppendDataToSave( id, payloadData);
} }
public void LoadFromSaveData() 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); Dictionary<string, Variant> save = SavegameService.GetSaveData(id);
if (save.Count > 0) if (save.Count > 0)
@ -80,6 +88,11 @@ public partial class FieldActivator : Node, ISaveable
{ {
_used = usedVar.AsBool(); _used = usedVar.AsBool();
} }
else
{
_used = false;
}
} }
GD.Print($"Field activator used state: {_used}");
} }
} }
Loading…
Cancel
Save