diff --git a/prefabs/interactions/generic_item_on_ground_2d.tscn b/prefabs/interactions/generic_item_on_ground_2d.tscn index fedd814..2d93d9a 100644 --- a/prefabs/interactions/generic_item_on_ground_2d.tscn +++ b/prefabs/interactions/generic_item_on_ground_2d.tscn @@ -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") diff --git a/scenes/Babushka_scene_farm_outside_2d.tscn b/scenes/Babushka_scene_farm_outside_2d.tscn index 9a09b1e..aa1002c 100644 --- a/scenes/Babushka_scene_farm_outside_2d.tscn +++ b/scenes/Babushka_scene_farm_outside_2d.tscn @@ -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"] diff --git a/scripts/CSharp/Common/Inventory/ItemOnGround2D.cs b/scripts/CSharp/Common/Inventory/ItemOnGround2D.cs index 2bbed06..1a2cc1b 100644 --- a/scripts/CSharp/Common/Inventory/ItemOnGround2D.cs +++ b/scripts/CSharp/Common/Inventory/ItemOnGround2D.cs @@ -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 + { + {"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 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 savegameData = SavegameService.GetSaveData(InventoryInstance.ID); if (savegameData.Count > 0) @@ -121,7 +150,6 @@ public partial class ItemOnGround2D : Node, ISaveable } } } - } } }