diff --git a/prefabs/farm/base_field.tscn b/prefabs/farm/base_field.tscn index 680e200..b9865a4 100644 --- a/prefabs/farm/base_field.tscn +++ b/prefabs/farm/base_field.tscn @@ -80,17 +80,17 @@ _itemResourcesToListenFor = Array[Object]([ExtResource("15_i4qwg"), ExtResource( script = ExtResource("14_w08sx") _itemResourcesToListenFor = Array[Object]([ExtResource("17_1mi0u")]) -[node name="FieldCreationBlocker" type="Area2D" parent="."] +[node name="CursorOnFieldCollider" type="Area2D" parent="."] -[node name="CollisionShape2D" type="CollisionShape2D" parent="FieldCreationBlocker"] +[node name="CollisionShape2D" type="CollisionShape2D" parent="CursorOnFieldCollider"] shape = SubResource("RectangleShape2D_57jmp") -[node name="CursorOnFieldSetter" type="Node" parent="FieldCreationBlocker"] +[node name="CursorOnFieldSetter" type="Node" parent="CursorOnFieldCollider"] script = ExtResource("19_lgya6") _variableResource = ExtResource("20_lgya6") _payloadToSet = true -[node name="CursorNotOnFieldSetter" type="Node" parent="FieldCreationBlocker"] +[node name="CursorNotOnFieldSetter" type="Node" parent="CursorOnFieldCollider"] script = ExtResource("19_lgya6") _variableResource = ExtResource("20_lgya6") _payloadToSet = false @@ -99,5 +99,5 @@ _payloadToSet = false [connection signal="Interacted" from="InteractionArea" to="FieldBehaviour" method="Farm"] [connection signal="ItemInstanceActivated" from="InventoryListener Seeds" to="FieldBehaviour" method="ActivatedSeedInInventory"] [connection signal="ItemInstanceActivated" from="InventoryListener watering can" to="FieldBehaviour" method="ActivateWateringCanInInventory"] -[connection signal="mouse_entered" from="FieldCreationBlocker" to="FieldCreationBlocker/CursorOnFieldSetter" method="Set"] -[connection signal="mouse_exited" from="FieldCreationBlocker" to="FieldCreationBlocker/CursorNotOnFieldSetter" method="Set"] +[connection signal="mouse_entered" from="CursorOnFieldCollider" to="CursorOnFieldCollider/CursorOnFieldSetter" method="Set"] +[connection signal="mouse_exited" from="CursorOnFieldCollider" to="CursorOnFieldCollider/CursorNotOnFieldSetter" method="Set"] diff --git a/scenes/Babushka_scene_outside_beets.tscn b/scenes/Babushka_scene_outside_beets.tscn index 1f4e0d9..34e4664 100644 --- a/scenes/Babushka_scene_outside_beets.tscn +++ b/scenes/Babushka_scene_outside_beets.tscn @@ -1718,9 +1718,6 @@ position = Vector2(1226, 3098.15) scale = Vector2(1, 1.00622) Payload = 1 -[node name="FieldBehaviour" parent="YSorted/Farm visuals/FieldParent/BaseField2" index="0"] -FieldState = 3 - [node name="Beet2" parent="YSorted/Farm visuals/FieldParent/BaseField2/FieldBehaviour/PlantPlaceholder" index="0" node_paths=PackedStringArray("_field") instance=ExtResource("41_vyqmy")] _state = 2 _field = NodePath("../..") @@ -1730,9 +1727,6 @@ position = Vector2(1782, 2606.11) scale = Vector2(1, 1.00622) Payload = 2 -[node name="FieldBehaviour" parent="YSorted/Farm visuals/FieldParent/BaseField3" index="0"] -FieldState = 3 - [node name="Beet2" parent="YSorted/Farm visuals/FieldParent/BaseField3/FieldBehaviour/PlantPlaceholder" index="0" node_paths=PackedStringArray("_field") instance=ExtResource("41_vyqmy")] _state = 2 _field = NodePath("../..") diff --git a/scripts/CSharp/Common/Farming/PlantBehaviour2D.cs b/scripts/CSharp/Common/Farming/PlantBehaviour2D.cs index ca8bc30..910a5f3 100644 --- a/scripts/CSharp/Common/Farming/PlantBehaviour2D.cs +++ b/scripts/CSharp/Common/Farming/PlantBehaviour2D.cs @@ -1,12 +1,9 @@ using System; -using Babushka.scripts.CSharp.Common.Animation; using Babushka.scripts.CSharp.Common.Inventory; using Godot; namespace Babushka.scripts.CSharp.Common.Farming; - - /// /// Determines the behaviour of a plant in Babushka. /// @@ -23,8 +20,9 @@ public partial class PlantBehaviour2D : Node2D [Export] private bool _magicWordNeeded = true; private string _magicWordDialogicEventName = "MagicWord"; - private Sprite2D _currentPlantSprite = null; + private Sprite2D? _currentPlantSprite = null; private bool _magicWordSaid = false; + private bool _calledOnReady = false; /// /// public accessor for the field reference @@ -37,6 +35,7 @@ public partial class PlantBehaviour2D : Node2D public override void _Ready() { + GD.Print($"Ready: {Name}"); if (_state == PlantState.None) { _state = PlantState.Planted; @@ -45,6 +44,8 @@ public partial class PlantBehaviour2D : Node2D } else { + GD.Print("plant state not none."); + _calledOnReady = true; GrowPlant(); } } @@ -60,9 +61,13 @@ public partial class PlantBehaviour2D : Node2D /// public void GrowPlant() { - if (_field.FieldState != FieldState.Watered || _magicWordSaid != _magicWordNeeded) - return; + if (!_calledOnReady) + { + if (_field.FieldState != FieldState.Watered || _magicWordSaid != _magicWordNeeded) + return; + } + GD.Print("Growing plant."); switch (_state) { case PlantState.None: @@ -105,6 +110,7 @@ public partial class PlantBehaviour2D : Node2D _field.UpdateFieldState(FieldState.Tilled); _magicWordSaid = false; + _calledOnReady = false; } private Sprite2D GetRandomSprite(Sprite2D[] sprites)