diff --git a/Babushka.sln.DotSettings.user b/Babushka.sln.DotSettings.user index 2de0701..036b687 100644 --- a/Babushka.sln.DotSettings.user +++ b/Babushka.sln.DotSettings.user @@ -1,6 +1,7 @@  ForceIncluded ForceIncluded + ForceIncluded ForceIncluded ForceIncluded ForceIncluded diff --git a/prefabs/characters/Player2D.tscn b/prefabs/characters/Player2D.tscn index dd958eb..d184d94 100644 --- a/prefabs/characters/Player2D.tscn +++ b/prefabs/characters/Player2D.tscn @@ -473,7 +473,7 @@ [ext_resource type="Texture2D" uid="uid://3pj2q7wtuion" path="res://art/farm/farming/farmobjekte/hoe.png" id="815_1ia2b"] [ext_resource type="Texture2D" uid="uid://x8hr8287ff2n" path="res://art/farm/farming/farmobjekte/tools atlas.png" id="816_1a3c1"] [ext_resource type="Script" uid="uid://bcskt5ckh3rqa" path="res://scripts/CSharp/Common/Farming/FarmingControls2D.cs" id="817_6nrw3"] -[ext_resource type="PackedScene" uid="uid://b1d2e7ely6hyw" path="res://prefabs/farm/tomato_field.tscn" id="818_16w6h"] +[ext_resource type="PackedScene" uid="uid://b1d2e7ely6hyw" path="res://prefabs/farm/base_field.tscn" id="818_16w6h"] [ext_resource type="Script" uid="uid://cvkw4qd2hxksi" path="res://scripts/GdScript/dialogic_toggle.gd" id="819_4na52"] [sub_resource type="CircleShape2D" id="CircleShape2D_ssqtd"] diff --git a/prefabs/farm/base_field.tscn b/prefabs/farm/base_field.tscn new file mode 100644 index 0000000..2e64a2e --- /dev/null +++ b/prefabs/farm/base_field.tscn @@ -0,0 +1,40 @@ +[gd_scene load_steps=8 format=3 uid="uid://b1d2e7ely6hyw"] + +[ext_resource type="Script" uid="uid://bdffon388rkty" path="res://scripts/CSharp/Common/Farming/FieldBehaviour2D.cs" id="1_qa01x"] +[ext_resource type="Texture2D" uid="uid://cgmu3qlovdr22" path="res://art/masks/field_outline_1.png" id="2_w8caw"] +[ext_resource type="Texture2D" uid="uid://eg5ej0mtuac" path="res://art/masks/field_outline_2.png" id="3_c014y"] +[ext_resource type="Texture2D" uid="uid://djpigvoyadvjs" path="res://art/masks/field_outline_3.png" id="4_teirr"] +[ext_resource type="Texture2D" uid="uid://c2pirgay3jfnn" path="res://art/farm/tilable grounds/böden/trockene farming erde.png" id="5_wx561"] +[ext_resource type="Texture2D" uid="uid://ctvdxwgmfaj5c" path="res://art/farm/tilable grounds/böden/nasse farming erde.png" id="6_7m4xq"] +[ext_resource type="PackedScene" uid="uid://cqc72e4hq6bcd" path="res://prefabs/interactions/interaction_area_2d.tscn" id="7_2eegd"] + +[node name="BaseField" type="Node2D"] + +[node name="FieldBehaviour" type="Sprite2D" parent="." node_paths=PackedStringArray("_fieldSprite", "_maskSprite", "PlantingInteraction", "PlantingPlaceholder")] +z_index = -1 +scale = Vector2(0.9, 1) +script = ExtResource("1_qa01x") +_fieldSprite = NodePath("MaskedField/FieldTexture") +_maskSprite = NodePath("MaskedField") +_maskTexture = Array[Texture2D]([ExtResource("2_w8caw"), ExtResource("3_c014y"), ExtResource("4_teirr")]) +Tilled = ExtResource("5_wx561") +Watered = ExtResource("6_7m4xq") +PlantingInteraction = NodePath("../InteractionArea") +PlantingPlaceholder = NodePath("PlantPlaceholder") + +[node name="MaskedField" type="Sprite2D" parent="FieldBehaviour"] +clip_children = 1 +scale = Vector2(1.5, 1.5) +texture = ExtResource("3_c014y") + +[node name="FieldTexture" type="Sprite2D" parent="FieldBehaviour/MaskedField"] +texture = ExtResource("5_wx561") + +[node name="PlantPlaceholder" type="Node2D" parent="FieldBehaviour"] + +[node name="InteractionArea" parent="." node_paths=PackedStringArray("_spriteToOutline") instance=ExtResource("7_2eegd")] +position = Vector2(-16, -54) +_active = false +_spriteToOutline = NodePath("../FieldBehaviour/MaskedField/FieldTexture") + +[connection signal="Interacted" from="InteractionArea" to="FieldBehaviour" method="Farm"] diff --git a/prefabs/farm/tomato_field.tscn b/prefabs/farm/tomato_field.tscn deleted file mode 100644 index 8f1e2bf..0000000 --- a/prefabs/farm/tomato_field.tscn +++ /dev/null @@ -1,54 +0,0 @@ -[gd_scene load_steps=10 format=3 uid="uid://b1d2e7ely6hyw"] - -[ext_resource type="Script" uid="uid://bdffon388rkty" path="res://scripts/CSharp/Common/Farming/FieldBehaviour2D.cs" id="2_vl3uw"] -[ext_resource type="Texture2D" uid="uid://cgmu3qlovdr22" path="res://art/masks/field_outline_1.png" id="3_uqkef"] -[ext_resource type="Texture2D" uid="uid://eg5ej0mtuac" path="res://art/masks/field_outline_2.png" id="4_di17a"] -[ext_resource type="Texture2D" uid="uid://djpigvoyadvjs" path="res://art/masks/field_outline_3.png" id="5_4a8nv"] -[ext_resource type="Texture2D" uid="uid://c2pirgay3jfnn" path="res://art/farm/tilable grounds/böden/trockene farming erde.png" id="6_l7j4c"] -[ext_resource type="Texture2D" uid="uid://ctvdxwgmfaj5c" path="res://art/farm/tilable grounds/böden/nasse farming erde.png" id="7_f504p"] -[ext_resource type="PackedScene" uid="uid://gishbn0a8eke" path="res://prefabs/farm/tomato_plant.tscn" id="8_jrdc4"] - -[sub_resource type="CircleShape2D" id="CircleShape2D_jrdc4"] -resource_local_to_scene = true -radius = 300.0 - -[sub_resource type="CircleShape2D" id="CircleShape2D_l0vvv"] -resource_local_to_scene = true -radius = 300.0 - -[node name="BaseField" type="Node2D"] - -[node name="FieldBehaviour" type="Sprite2D" parent="." node_paths=PackedStringArray("_fieldSprite", "_maskSprite", "_growingCollider")] -z_index = -1 -scale = Vector2(0.9, 1) -script = ExtResource("2_vl3uw") -_fieldSprite = NodePath("MaskedField/FieldTexture") -_maskSprite = NodePath("MaskedField") -_maskTexture = Array[Texture2D]([ExtResource("3_uqkef"), ExtResource("4_di17a"), ExtResource("5_4a8nv")]) -Tilled = ExtResource("6_l7j4c") -Watered = ExtResource("7_f504p") -_growingCollider = NodePath("BasePlant2/GrowingInteractionArea") - -[node name="BasePlant2" parent="FieldBehaviour" node_paths=PackedStringArray("_field") groups=["PlantGrowing"] instance=ExtResource("8_jrdc4")] -visible = false -_field = NodePath("..") -_magicWordNeeded = false - -[node name="CollisionShape3D" parent="FieldBehaviour/BasePlant2/GrowingInteractionArea/Area2D" index="0"] -shape = SubResource("CircleShape2D_jrdc4") - -[node name="CollisionShape3D" parent="FieldBehaviour/BasePlant2/ReadyPlantInventoryItem/PickupInteractionArea/Area2D" index="0"] -shape = SubResource("CircleShape2D_l0vvv") - -[node name="MaskedField" type="Sprite2D" parent="FieldBehaviour"] -clip_children = 1 -scale = Vector2(1.5, 1.5) -texture = ExtResource("4_di17a") - -[node name="FieldTexture" type="Sprite2D" parent="FieldBehaviour/MaskedField"] -texture = ExtResource("6_l7j4c") - -[editable path="FieldBehaviour/BasePlant2"] -[editable path="FieldBehaviour/BasePlant2/GrowingInteractionArea"] -[editable path="FieldBehaviour/BasePlant2/ReadyPlantInventoryItem"] -[editable path="FieldBehaviour/BasePlant2/ReadyPlantInventoryItem/PickupInteractionArea"] diff --git a/prefabs/seed_repository.tscn b/prefabs/seed_repository.tscn new file mode 100644 index 0000000..8207b2a --- /dev/null +++ b/prefabs/seed_repository.tscn @@ -0,0 +1,11 @@ +[gd_scene load_steps=4 format=3 uid="uid://bqjx3luofm6yi"] + +[ext_resource type="Script" uid="uid://coqch6yjvjuc0" path="res://scripts/CSharp/Common/Farming/SeedRepository.cs" id="1_i7nvs"] +[ext_resource type="Resource" uid="uid://d1uuxp1lp4aro" path="res://resources/items/tomato_seed.tres" id="2_jetk1"] +[ext_resource type="PackedScene" uid="uid://gishbn0a8eke" path="res://prefabs/farm/tomato_plant.tscn" id="3_ulp3m"] + +[node name="SeedRepository" type="Node2D"] +script = ExtResource("1_i7nvs") +seedToPlantRepository = Dictionary[Object, Node]({ +ExtResource("2_jetk1"): ExtResource("3_ulp3m") +}) diff --git a/project.godot b/project.godot index fb6a7bd..263172f 100644 --- a/project.godot +++ b/project.godot @@ -32,6 +32,7 @@ Signal_Debugger="*res://addons/SignalVisualizer/Debugger/SignalDebugger.gd" QuestManager="*res://prefabs/quests/quest_manager_autoload.tscn" FightManagerAutoload="*res://prefabs/fight/fight_manager_autoload.tscn" InputService="*res://scripts/CSharp/Common/Services/InputService.cs" +SeedRepository="*res://prefabs/seed_repository.tscn" [dialogic] diff --git a/scenes/Babushka_scene_farm_outside_2d.tscn b/scenes/Babushka_scene_farm_outside_2d.tscn index 2728921..09477cf 100644 --- a/scenes/Babushka_scene_farm_outside_2d.tscn +++ b/scenes/Babushka_scene_farm_outside_2d.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=119 format=3 uid="uid://gigb28qk8t12"] +[gd_scene load_steps=114 format=3 uid="uid://gigb28qk8t12"] [ext_resource type="PackedScene" uid="uid://c25udixd5m6l0" path="res://prefabs/characters/Player2D.tscn" id="1_7wfwe"] [ext_resource type="Texture2D" uid="uid://8sr11ex30n0m" path="res://art/mockups/Kenney_Backgrounds/Samples/uncolored_hills.png" id="2_7b2ri"] @@ -30,15 +30,13 @@ [ext_resource type="PackedScene" uid="uid://dfvgp1my5rydh" path="res://prefabs/characters/Yeli.tscn" id="24_wtdui"] [ext_resource type="Script" uid="uid://dhxtdhfqx3bte" path="res://scripts/CSharp/Common/Farming/FieldService2D.cs" id="25_0qu0h"] [ext_resource type="PackedScene" uid="uid://dpbbroif2tnil" path="res://prefabs/interactions/generic_item_on_ground_2d.tscn" id="25_hukxv"] -[ext_resource type="Resource" uid="uid://c5yg3lx756v4v" path="res://resources/items/hoe.tres" id="26_ipqaa"] -[ext_resource type="Resource" uid="uid://c7viddcd3kywp" path="res://resources/items/shovel.tres" id="27_ipqaa"] [ext_resource type="PackedScene" uid="uid://cqc72e4hq6bcd" path="res://prefabs/interactions/interaction_area_2d.tscn" id="27_klb81"] [ext_resource type="Resource" uid="uid://dlcmqfjvgphqu" path="res://resources/items/rake.tres" id="28_6b2nr"] [ext_resource type="Resource" uid="uid://cndd64batns31" path="res://resources/items/wateringcan.tres" id="28_ipqaa"] -[ext_resource type="Resource" uid="uid://datee0flk1e84" path="res://resources/items/scythe.tres" id="29_wtdui"] [ext_resource type="PackedScene" uid="uid://cgjc4wurbgimy" path="res://prefabs/UI/Inventory/Inventory.tscn" id="32_2nee2"] [ext_resource type="Script" uid="uid://boehox1ydbcnx" path="res://scripts/CSharp/Common/Farming/WellBehaviour.cs" id="32_lbnqo"] [ext_resource type="Script" uid="uid://cssdu8viimwm6" path="res://scripts/CSharp/Common/SceneTransition.cs" id="34_e5b7x"] +[ext_resource type="Resource" uid="uid://d1uuxp1lp4aro" path="res://resources/items/tomato_seed.tres" id="35_64mdn"] [ext_resource type="Texture2D" uid="uid://65e44yde224q" path="res://art/farm/Babushka_house_01.png" id="36_e5b7x"] [ext_resource type="AudioStream" uid="uid://cfqg50am0swb7" path="res://audio/Music/Farming_90BPM_69Bars_Loop.wav" id="37_8ey8m"] [ext_resource type="AudioStream" uid="uid://dku1rq5cocisg" path="res://audio/Music/Farming_90BPM_69Bars.wav" id="37_di1ed"] @@ -165,10 +163,6 @@ size = Vector2(1041, 368) resource_local_to_scene = true radius = 371.058 -[sub_resource type="CircleShape2D" id="CircleShape2D_ycj14"] -resource_local_to_scene = true -radius = 300.0 - [sub_resource type="CircleShape2D" id="CircleShape2D_2065p"] resource_local_to_scene = true radius = 300.0 @@ -177,14 +171,6 @@ radius = 300.0 resource_local_to_scene = true radius = 300.0 -[sub_resource type="CircleShape2D" id="CircleShape2D_lbnqo"] -resource_local_to_scene = true -radius = 300.0 - -[sub_resource type="CircleShape2D" id="CircleShape2D_l4wxt"] -resource_local_to_scene = true -radius = 300.0 - [sub_resource type="ShaderMaterial" id="ShaderMaterial_lhtpe"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_bcdgk"] @@ -1083,16 +1069,6 @@ _id = 1 position = Vector2(146, -130) shape = SubResource("CircleShape2D_p6n74") -[node name="HoeGenericPickup" parent="YSorted" instance=ExtResource("25_hukxv")] -visible = false -position = Vector2(6095, 2087) - -[node name="SpawnWithItem" parent="YSorted/HoeGenericPickup" index="0"] -_blueprint = ExtResource("26_ipqaa") - -[node name="CollisionShape3D" parent="YSorted/HoeGenericPickup/PickupInteractionArea/Area2D" index="0"] -shape = SubResource("CircleShape2D_ycj14") - [node name="CanGenericPickup" parent="YSorted" instance=ExtResource("25_hukxv")] position = Vector2(8192, 3507) @@ -1114,25 +1090,15 @@ _blueprint = ExtResource("28_6b2nr") [node name="CollisionShape3D" parent="YSorted/RakeGenericPickup/PickupInteractionArea/Area2D" index="0"] shape = SubResource("CircleShape2D_tm0yg") -[node name="ScytheGenericPickup" parent="YSorted" instance=ExtResource("25_hukxv")] -visible = false -position = Vector2(15642, 2158) - -[node name="SpawnWithItem" parent="YSorted/ScytheGenericPickup" index="0"] -_blueprint = ExtResource("29_wtdui") +[node name="SeedPickup" parent="YSorted" instance=ExtResource("25_hukxv")] +position = Vector2(10114, 2469) +_infiniteSupply = true -[node name="CollisionShape3D" parent="YSorted/ScytheGenericPickup/PickupInteractionArea/Area2D" index="0"] -shape = SubResource("CircleShape2D_lbnqo") +[node name="SpawnWithItem" parent="YSorted/SeedPickup" index="0"] +_blueprint = ExtResource("35_64mdn") -[node name="ShovelGenericPickup" parent="YSorted" instance=ExtResource("25_hukxv")] -visible = false -position = Vector2(5454, 2049) - -[node name="SpawnWithItem" parent="YSorted/ShovelGenericPickup" index="0"] -_blueprint = ExtResource("27_ipqaa") - -[node name="CollisionShape3D" parent="YSorted/ShovelGenericPickup/PickupInteractionArea/Area2D" index="0"] -shape = SubResource("CircleShape2D_l4wxt") +[node name="CollisionShape3D" parent="YSorted/SeedPickup/PickupInteractionArea/Area2D" index="0"] +shape = SubResource("CircleShape2D_tm0yg") [node name="Farm visuals" type="Node2D" parent="YSorted"] position = Vector2(-60, 122) @@ -2408,6 +2374,7 @@ timeline = "quest2_tomatoes_end" [connection signal="InteractedTool" from="YSorted/Brünnen/InteractionArea" to="YSorted/Vesna" method="TryFillWateringCan"] [connection signal="SuccessfulPickUp" from="YSorted/CanGenericPickup" to="YSorted/Vesna" method="HandlePickUp"] [connection signal="SuccessfulPickUp" from="YSorted/RakeGenericPickup" to="YSorted/Vesna" method="HandlePickUp"] +[connection signal="SuccessfulPickUp" from="YSorted/SeedPickup" to="YSorted/Vesna" method="HandlePickUp"] [connection signal="InteractedTool" from="YSorted/Farm visuals/Static/EnterHouseInteraction" to="." method="LoadSceneAtIndex"] [connection signal="FieldCreated" from="YSorted/Farm visuals/FieldParent" to="Audio/SFX/Farming SFX" method="PlayOneShot"] [connection signal="input_event" from="YSorted/Farm visuals/FieldParent/Area2D" to="YSorted/Vesna/FarmingControls" method="InputEventPressedOn"] @@ -2425,14 +2392,10 @@ timeline = "quest2_tomatoes_end" [editable path="YSorted/Vesna"] [editable path="YSorted/Brünnen/InteractionArea"] -[editable path="YSorted/HoeGenericPickup"] -[editable path="YSorted/HoeGenericPickup/PickupInteractionArea"] [editable path="YSorted/CanGenericPickup"] [editable path="YSorted/CanGenericPickup/PickupInteractionArea"] [editable path="YSorted/RakeGenericPickup"] [editable path="YSorted/RakeGenericPickup/PickupInteractionArea"] -[editable path="YSorted/ScytheGenericPickup"] -[editable path="YSorted/ScytheGenericPickup/PickupInteractionArea"] -[editable path="YSorted/ShovelGenericPickup"] -[editable path="YSorted/ShovelGenericPickup/PickupInteractionArea"] +[editable path="YSorted/SeedPickup"] +[editable path="YSorted/SeedPickup/PickupInteractionArea"] [editable path="CanvasLayer"] diff --git a/scripts/CSharp/Common/Farming/FarmingControls2D.cs b/scripts/CSharp/Common/Farming/FarmingControls2D.cs index c9e259c..2d7ce7e 100644 --- a/scripts/CSharp/Common/Farming/FarmingControls2D.cs +++ b/scripts/CSharp/Common/Farming/FarmingControls2D.cs @@ -165,4 +165,5 @@ public partial class FarmingControls2D : Node2D } #endregion + } \ No newline at end of file diff --git a/scripts/CSharp/Common/Farming/FieldBehaviour2D.cs b/scripts/CSharp/Common/Farming/FieldBehaviour2D.cs index b747ebf..06ec445 100644 --- a/scripts/CSharp/Common/Farming/FieldBehaviour2D.cs +++ b/scripts/CSharp/Common/Farming/FieldBehaviour2D.cs @@ -1,5 +1,6 @@ using System; using Babushka.scripts.CSharp.Common.CharacterControls; +using Babushka.scripts.CSharp.Common.Inventory; using Godot; namespace Babushka.scripts.CSharp.Common.Farming; @@ -13,7 +14,9 @@ public partial class FieldBehaviour2D : Sprite2D [Export] private Texture2D Tilled; [Export] private Texture2D Watered; [Export] public FieldState FieldState = FieldState.Tilled; - [Export] private InteractionArea2D _growingCollider; + [Export] public InteractionArea2D PlantingInteraction; + [Export] public Node PlantingPlaceholder; + public Vector2 FieldPosition; @@ -31,19 +34,21 @@ public partial class FieldBehaviour2D : Sprite2D { case FieldState.Empty: FieldState = FieldState.Empty; + PlantingInteraction.IsActive = false; break; case FieldState.Tilled: FieldState = FieldState.Tilled; _fieldSprite.Texture = Tilled; - _growingCollider.Visible = false; + PlantingInteraction.IsActive = false; break; case FieldState.Watered: FieldState = FieldState.Watered; _fieldSprite.Texture = Watered; - _growingCollider.Visible = true; + PlantingInteraction.IsActive = true; break; case FieldState.Planted: FieldState = FieldState.Planted; + PlantingInteraction.IsActive = false; break; default: FieldState = FieldState.NotFound; @@ -62,19 +67,37 @@ public partial class FieldBehaviour2D : Sprite2D /// public void Farm() { - switch (FieldState) + if (FieldState == FieldState.Watered) { - case FieldState.Empty: - _fieldSprite.Texture = Tilled; - FieldState = FieldState.Tilled; - break; - case FieldState.Watered: - FieldState = FieldState.Planted; - break; - case FieldState.Planted: - break; - default: - break; + if (TryPlant()) + { + UpdateFieldState(FieldState.Planted); + } + } + } + + private bool TryPlant() + { + bool success = false; + int currentSlotIndex = InventoryManager.Instance.CurrentSelectedSlotIndex; + ItemInstance? item = InventoryManager.Instance.playerInventory.Slots[currentSlotIndex].itemInstance; + + if (item == null) + return success; + + PackedScene? plantPrefab = SeedRepository.Instance.GetPlant(item.blueprint); + + if (plantPrefab != null) + { + Node plantInstance = plantPrefab.Instantiate(); + if (plantInstance is Node2D plant2d) + { + PlantingPlaceholder.AddChild(plant2d); + success = true; + } } + + return success; } + } \ No newline at end of file diff --git a/scripts/CSharp/Common/Farming/FieldService2D.cs b/scripts/CSharp/Common/Farming/FieldService2D.cs index 0583dbd..0d241e9 100644 --- a/scripts/CSharp/Common/Farming/FieldService2D.cs +++ b/scripts/CSharp/Common/Farming/FieldService2D.cs @@ -12,20 +12,6 @@ public partial class FieldService2D : Node2D [Signal] public delegate void FieldCreatedEventHandler(); - /* - public override void _PhysicsProcess(double delta) - { - var spaceState = GetWorld2D().DirectSpaceState; - // use global coordinates, not local to node - var query = PhysicsRayQueryParameters2D.Create(GetGlobalMousePosition(), new Vector3(0,0,-1), - CollisionMask, [GetRid()]); - var result = spaceState.IntersectRay(query); - if (result.Count > 0) - GD.Print("Hit at point: ", result["position"]); - } - */ - - //Create public bool TryAddEntry(Vector2I key, FieldBehaviour2D field) { diff --git a/scripts/CSharp/Common/Farming/PlantBehaviour2D.cs b/scripts/CSharp/Common/Farming/PlantBehaviour2D.cs index d078b19..d73b292 100644 --- a/scripts/CSharp/Common/Farming/PlantBehaviour2D.cs +++ b/scripts/CSharp/Common/Farming/PlantBehaviour2D.cs @@ -1,5 +1,4 @@ using System; -using Babushka.scripts.CSharp.Common.CharacterControls; using Babushka.scripts.CSharp.Common.Inventory; using Godot; diff --git a/scripts/CSharp/Common/Farming/SeedRepository.cs b/scripts/CSharp/Common/Farming/SeedRepository.cs new file mode 100644 index 0000000..ecd8475 --- /dev/null +++ b/scripts/CSharp/Common/Farming/SeedRepository.cs @@ -0,0 +1,29 @@ +using Babushka.scripts.CSharp.Common.Inventory; +using Godot; +using Godot.Collections; + +namespace Babushka.scripts.CSharp.Common.Farming; + +public partial class SeedRepository : Node +{ + public static SeedRepository Instance { get; private set; } = null!; + + // todo: Find out how to not use PackedScene here because it does not inherit from Node + [Export] private Dictionary seedToPlantRepository; + + public override void _EnterTree() + { + Instance = this; + } + + public PackedScene? GetPlant(ItemResource resource) + { + if (seedToPlantRepository.ContainsKey(resource)) + { + return seedToPlantRepository[resource]; + } + + return null; + } + +} \ No newline at end of file diff --git a/scripts/CSharp/Common/Farming/SeedRepository.cs.uid b/scripts/CSharp/Common/Farming/SeedRepository.cs.uid new file mode 100644 index 0000000..e1d400b --- /dev/null +++ b/scripts/CSharp/Common/Farming/SeedRepository.cs.uid @@ -0,0 +1 @@ +uid://coqch6yjvjuc0