added saving and loading support to collectable inventory items

pull/32/head
kziolkowski 2 months ago
parent 70383fc16e
commit f37f7c7ceb

@ -34,6 +34,7 @@ stream_3/stream = ExtResource("9_dltn0")
z_index = 1
y_sort_enabled = true
script = ExtResource("1_tlhp6")
metadata/SaveID = ""
[node name="SpawnWithItem" type="Node" parent="."]
script = ExtResource("3_xu8me")

@ -1069,6 +1069,7 @@ shape = SubResource("CircleShape2D_p6n74")
[node name="CanGenericPickup" parent="YSorted" instance=ExtResource("25_hukxv")]
position = Vector2(8192, 3507)
metadata/SaveID = "5a823507-8107-40ce-8b32-6d0f81a3c44e"
[node name="SpawnWithItem" parent="YSorted/CanGenericPickup" index="0"]
_blueprint = ExtResource("28_ipqaa")
@ -1086,6 +1087,7 @@ offset = Vector2(0, -50)
[node name="RakeGenericPickup" parent="YSorted" instance=ExtResource("25_hukxv")]
position = Vector2(8391, 2060)
metadata/SaveID = "e13886b1-2131-4072-bc06-7d8abb19357b"
[node name="SpawnWithItem" parent="YSorted/RakeGenericPickup" index="0"]
_blueprint = ExtResource("28_6b2nr")
@ -1100,15 +1102,13 @@ shape = SubResource("CircleShape2D_tm0yg")
[node name="SeedPickup" parent="YSorted" instance=ExtResource("25_hukxv")]
position = Vector2(9927, 2257)
_infiniteSupply = true
_finiteSupply = 3
metadata/SaveID = "e1bbe13f-0622-42b8-97f3-87a8af369dc0"
[node name="SpawnWithItem" parent="YSorted/SeedPickup" index="0"]
_blueprint = ExtResource("35_64mdn")
[node name="PickupInteractionArea" parent="YSorted/SeedPickup" index="3" node_paths=PackedStringArray("_spritesToOutline")]
_outlineMaterial = null
_spritesToOutline = []
[node name="PickupInteractionArea" parent="YSorted/SeedPickup" index="3"]
metadata/SaveID = "ad152c51-3631-42c1-9aa4-4df896b35d8c"
[node name="CollisionShape3D" parent="YSorted/SeedPickup/PickupInteractionArea/Area2D" index="0"]
@ -1120,13 +1120,12 @@ scale = Vector2(1, 1)
[node name="SeedPickup2" parent="YSorted" instance=ExtResource("25_hukxv")]
position = Vector2(10705, 2257)
_finiteSupply = 3
metadata/SaveID = "77972c50-63a7-461a-bc7d-6fa46333bc5c"
[node name="SpawnWithItem" parent="YSorted/SeedPickup2" index="0"]
_blueprint = ExtResource("36_fv1t2")
[node name="PickupInteractionArea" parent="YSorted/SeedPickup2" index="3" node_paths=PackedStringArray("_spritesToOutline")]
_outlineMaterial = null
_spritesToOutline = []
[node name="PickupInteractionArea" parent="YSorted/SeedPickup2" index="3"]
metadata/SaveID = "09e115e7-1d21-485a-be3e-b3fff9c83e78"
[node name="CollisionShape3D" parent="YSorted/SeedPickup2/PickupInteractionArea/Area2D" index="0"]

@ -63,6 +63,8 @@ public partial class ItemOnGround2D : Node, ISaveable
{
QueueFree();
}
UpdateSaveData();
}
}
@ -92,7 +94,14 @@ public partial class ItemOnGround2D : Node, ISaveable
public void UpdateSaveData()
{
// do nothing?
var payloadData = new Dictionary<string, Variant>
{
{"pickupCounter", pickUpCounter}
};
string id = GetMeta("SaveID").AsString();
GD.Print($"Updating Save ID for object {Name}: {id}");
SavegameService.AppendDataToSave( id, payloadData);
}
public void LoadFromSaveData()
@ -100,6 +109,26 @@ public partial class ItemOnGround2D : Node, ISaveable
if (_infiniteSupply)
return;
// standard check: how many times has this item been collected?
string id = GetMeta("SaveID").AsString();
GD.Print($"Loading Save ID for object {Name}: " + id);
Dictionary<string, Variant> save = SavegameService.GetSaveData(id);
if (save.Count > 0)
{
if(save.TryGetValue("pickupCounter", out Variant countVar))
{
int count = countVar.AsInt32();
GD.Print($"Item count for {Name}: {count}");
for (int i = 0; i < count; i++)
{
Pickup();
GD.Print($"Picking up {Name}: {i}");
}
}
}
//separate check for unique items: If already in inventory, delete this instance.
ItemResource itemResource = itemInstance.blueprint;
Dictionary<string, Variant> savegameData = SavegameService.GetSaveData(InventoryInstance.ID);
if (savegameData.Count > 0)
@ -121,7 +150,6 @@ public partial class ItemOnGround2D : Node, ISaveable
}
}
}
}
}
}

Loading…
Cancel
Save