🐛 fixed field activator self-deactivating on load bug
This commit is contained in:
@@ -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}");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user