🐛 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)
|
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}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user