Fixed tomato farming again
This commit is contained in:
@@ -1,7 +1,9 @@
|
|||||||
[gd_scene load_steps=480 format=3 uid="uid://c25udixd5m6l0"]
|
[gd_scene load_steps=482 format=3 uid="uid://c25udixd5m6l0"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://b05uyj001ehwi" path="res://scripts/CSharp/Common/Farming/VesnaBehaviour2D.cs" id="1_yd5ep"]
|
[ext_resource type="Script" uid="uid://b05uyj001ehwi" path="res://scripts/CSharp/Common/Farming/VesnaBehaviour2D.cs" id="1_yd5ep"]
|
||||||
[ext_resource type="Script" uid="uid://cjbclkxesh3hc" path="res://scripts/CSharp/Common/CharacterControls/PlayerMovement.cs" id="2_1vqmv"]
|
[ext_resource type="Script" uid="uid://cjbclkxesh3hc" path="res://scripts/CSharp/Common/CharacterControls/PlayerMovement.cs" id="2_1vqmv"]
|
||||||
|
[ext_resource type="Resource" uid="uid://c5yg3lx756v4v" path="res://resources/items/hoe.tres" id="2_dnm27"]
|
||||||
|
[ext_resource type="Resource" uid="uid://cndd64batns31" path="res://resources/items/wateringcan.tres" id="3_e04c3"]
|
||||||
[ext_resource type="Script" uid="uid://n7oihifvqp23" path="res://scripts/CSharp/Common/Animation/VesnaAnimations.cs" id="3_f6xmn"]
|
[ext_resource type="Script" uid="uid://n7oihifvqp23" path="res://scripts/CSharp/Common/Animation/VesnaAnimations.cs" id="3_f6xmn"]
|
||||||
[ext_resource type="Texture2D" uid="uid://7jrac5ii3ah3" path="res://art/animation/Vesna2D/Vesna Anims Sequences/B01-Idle/0001.png" id="3_tb2wl"]
|
[ext_resource type="Texture2D" uid="uid://7jrac5ii3ah3" path="res://art/animation/Vesna2D/Vesna Anims Sequences/B01-Idle/0001.png" id="3_tb2wl"]
|
||||||
[ext_resource type="Texture2D" uid="uid://c06b551t2qlo6" path="res://art/animation/Vesna2D/Vesna Anims Sequences/B01-Idle/0002.png" id="4_dy5kt"]
|
[ext_resource type="Texture2D" uid="uid://c06b551t2qlo6" path="res://art/animation/Vesna2D/Vesna Anims Sequences/B01-Idle/0002.png" id="4_dy5kt"]
|
||||||
@@ -2079,6 +2081,8 @@ script = ExtResource("1_yd5ep")
|
|||||||
_farmingControls = NodePath("FarmingControls")
|
_farmingControls = NodePath("FarmingControls")
|
||||||
_player2d = NodePath("CharacterBody2D")
|
_player2d = NodePath("CharacterBody2D")
|
||||||
_vesnaAnimations = NodePath("CharacterBody2D/visuals")
|
_vesnaAnimations = NodePath("CharacterBody2D/visuals")
|
||||||
|
_hoe = ExtResource("2_dnm27")
|
||||||
|
_wateringCan = ExtResource("3_e04c3")
|
||||||
|
|
||||||
[node name="CharacterBody2D" type="CharacterBody2D" parent="." groups=["PlantGrowing"]]
|
[node name="CharacterBody2D" type="CharacterBody2D" parent="." groups=["PlantGrowing"]]
|
||||||
position = Vector2(0, 374)
|
position = Vector2(0, 374)
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ _bigPlants = [NodePath("BigPlant/01"), NodePath("BigPlant/02"), NodePath("BigPla
|
|||||||
_readyPlants = [NodePath("ReadyPlantInventoryItem/ReadyPlant/01"), NodePath("ReadyPlantInventoryItem/ReadyPlant/02"), NodePath("ReadyPlantInventoryItem/ReadyPlant/03"), NodePath("ReadyPlantInventoryItem/ReadyPlant/04")]
|
_readyPlants = [NodePath("ReadyPlantInventoryItem/ReadyPlant/01"), NodePath("ReadyPlantInventoryItem/ReadyPlant/02"), NodePath("ReadyPlantInventoryItem/ReadyPlant/03"), NodePath("ReadyPlantInventoryItem/ReadyPlant/04")]
|
||||||
_harvestablePlant = NodePath("ReadyPlantInventoryItem")
|
_harvestablePlant = NodePath("ReadyPlantInventoryItem")
|
||||||
_magicEffect = NodePath("magic vfx")
|
_magicEffect = NodePath("magic vfx")
|
||||||
|
_magicWordNeeded = false
|
||||||
|
|
||||||
[node name="Seeds" type="Node2D" parent="."]
|
[node name="Seeds" type="Node2D" parent="."]
|
||||||
position = Vector2(0, 0.5)
|
position = Vector2(0, 0.5)
|
||||||
@@ -225,6 +226,7 @@ color = Color(0.400601, 0.62444, 0.791217, 1)
|
|||||||
hue_variation_max = 0.4
|
hue_variation_max = 0.4
|
||||||
|
|
||||||
[connection signal="Interacted" from="GrowingInteractionArea" to="." method="Grow"]
|
[connection signal="Interacted" from="GrowingInteractionArea" to="." method="Grow"]
|
||||||
|
[connection signal="SuccessfulPickUp" from="ReadyPlantInventoryItem" to="." method="queue_free"]
|
||||||
|
|
||||||
[editable path="GrowingInteractionArea"]
|
[editable path="GrowingInteractionArea"]
|
||||||
[editable path="ReadyPlantInventoryItem"]
|
[editable path="ReadyPlantInventoryItem"]
|
||||||
|
|||||||
@@ -1,11 +0,0 @@
|
|||||||
[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")
|
|
||||||
})
|
|
||||||
+1
-2
@@ -28,11 +28,10 @@ buses/default_bus_layout="uid://b6dwkmkyb0axk"
|
|||||||
SceneTransition="*res://scenes/SceneTransition.tscn"
|
SceneTransition="*res://scenes/SceneTransition.tscn"
|
||||||
Dialogic="*res://addons/dialogic/Core/DialogicGameHandler.gd"
|
Dialogic="*res://addons/dialogic/Core/DialogicGameHandler.gd"
|
||||||
InventoryManager="*res://scripts/CSharp/Common/Inventory/InventoryManager.cs"
|
InventoryManager="*res://scripts/CSharp/Common/Inventory/InventoryManager.cs"
|
||||||
Signal_Debugger="*res://addons/SignalVisualizer/Debugger/SignalDebugger.gd"
|
|
||||||
QuestManager="*res://prefabs/quests/quest_manager_autoload.tscn"
|
QuestManager="*res://prefabs/quests/quest_manager_autoload.tscn"
|
||||||
FightManagerAutoload="*res://prefabs/fight/fight_manager_autoload.tscn"
|
FightManagerAutoload="*res://prefabs/fight/fight_manager_autoload.tscn"
|
||||||
InputService="*res://scripts/CSharp/Common/Services/InputService.cs"
|
InputService="*res://scripts/CSharp/Common/Services/InputService.cs"
|
||||||
SeedRepository="*res://prefabs/seed_repository.tscn"
|
Signal_Debugger="*res://addons/SignalVisualizer/Debugger/SignalDebugger.gd"
|
||||||
|
|
||||||
[dialogic]
|
[dialogic]
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
[gd_resource type="Resource" script_class="ItemResource" load_steps=3 format=3 uid="uid://d1uuxp1lp4aro"]
|
[gd_resource type="Resource" script_class="ItemResource" load_steps=4 format=3 uid="uid://d1uuxp1lp4aro"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://cbskymrxs6ksu" path="res://scripts/CSharp/Common/Inventory/ItemResource.cs" id="1_dustj"]
|
[ext_resource type="Script" uid="uid://cbskymrxs6ksu" path="res://scripts/CSharp/Common/Inventory/ItemResource.cs" id="1_dustj"]
|
||||||
[ext_resource type="Texture2D" uid="uid://ce04nexh36uwe" path="res://art/ui/UI/icons/icon-seed-tomatoe.png" id="1_u15c2"]
|
[ext_resource type="Texture2D" uid="uid://ce04nexh36uwe" path="res://art/ui/UI/icons/icon-seed-tomatoe.png" id="1_u15c2"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://gishbn0a8eke" path="res://prefabs/farm/tomato_plant.tscn" id="2_xhgqu"]
|
||||||
|
|
||||||
[resource]
|
[resource]
|
||||||
script = ExtResource("1_dustj")
|
script = ExtResource("1_dustj")
|
||||||
@@ -9,4 +10,5 @@ name = "Tomato Seed"
|
|||||||
color = Color(0.135039, 0.307214, 0.333128, 1)
|
color = Color(0.135039, 0.307214, 0.333128, 1)
|
||||||
icon = ExtResource("1_u15c2")
|
icon = ExtResource("1_u15c2")
|
||||||
maxStack = 20
|
maxStack = 20
|
||||||
|
itemPrefab = ExtResource("2_xhgqu")
|
||||||
metadata/_custom_type_script = "uid://cbskymrxs6ksu"
|
metadata/_custom_type_script = "uid://cbskymrxs6ksu"
|
||||||
|
|||||||
@@ -1036,7 +1036,6 @@ z_index = 1
|
|||||||
position = Vector2(9322, 2018)
|
position = Vector2(9322, 2018)
|
||||||
_fieldParent = NodePath("../Farm visuals/FieldParent")
|
_fieldParent = NodePath("../Farm visuals/FieldParent")
|
||||||
_hoe = ExtResource("28_6b2nr")
|
_hoe = ExtResource("28_6b2nr")
|
||||||
_wateringCan = ExtResource("28_ipqaa")
|
|
||||||
|
|
||||||
[node name="FarmingControls" parent="YSorted/Vesna" index="1" node_paths=PackedStringArray("_camera")]
|
[node name="FarmingControls" parent="YSorted/Vesna" index="1" node_paths=PackedStringArray("_camera")]
|
||||||
_camera = NodePath("../../../Camera2D")
|
_camera = NodePath("../../../Camera2D")
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ public partial class FieldBehaviour2D : Sprite2D
|
|||||||
[Export] private Texture2D Watered;
|
[Export] private Texture2D Watered;
|
||||||
[Export] public FieldState FieldState = FieldState.Tilled;
|
[Export] public FieldState FieldState = FieldState.Tilled;
|
||||||
[Export] public InteractionArea2D PlantingInteraction;
|
[Export] public InteractionArea2D PlantingInteraction;
|
||||||
[Export] public Node PlantingPlaceholder;
|
[Export] public Node2D PlantingPlaceholder;
|
||||||
|
|
||||||
|
|
||||||
public Vector2 FieldPosition;
|
public Vector2 FieldPosition;
|
||||||
@@ -48,6 +48,7 @@ public partial class FieldBehaviour2D : Sprite2D
|
|||||||
break;
|
break;
|
||||||
case FieldState.Planted:
|
case FieldState.Planted:
|
||||||
FieldState = FieldState.Planted;
|
FieldState = FieldState.Planted;
|
||||||
|
_fieldSprite.Texture = Tilled;
|
||||||
PlantingInteraction.IsActive = false;
|
PlantingInteraction.IsActive = false;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -82,10 +83,10 @@ public partial class FieldBehaviour2D : Sprite2D
|
|||||||
int currentSlotIndex = InventoryManager.Instance.CurrentSelectedSlotIndex;
|
int currentSlotIndex = InventoryManager.Instance.CurrentSelectedSlotIndex;
|
||||||
ItemInstance? item = InventoryManager.Instance.playerInventory.Slots[currentSlotIndex].itemInstance;
|
ItemInstance? item = InventoryManager.Instance.playerInventory.Slots[currentSlotIndex].itemInstance;
|
||||||
|
|
||||||
if (item == null)
|
if (item == null || PlantingPlaceholder.GetChildCount() > 0)
|
||||||
return success;
|
return success;
|
||||||
|
|
||||||
PackedScene? plantPrefab = SeedRepository.Instance.GetPlant(item.blueprint);
|
PackedScene? plantPrefab = item.blueprint.itemPrefab;
|
||||||
|
|
||||||
if (plantPrefab != null)
|
if (plantPrefab != null)
|
||||||
{
|
{
|
||||||
@@ -93,6 +94,15 @@ public partial class FieldBehaviour2D : Sprite2D
|
|||||||
if (plantInstance is Node2D plant2d)
|
if (plantInstance is Node2D plant2d)
|
||||||
{
|
{
|
||||||
PlantingPlaceholder.AddChild(plant2d);
|
PlantingPlaceholder.AddChild(plant2d);
|
||||||
|
plant2d.GlobalPosition = PlantingPlaceholder.GlobalPosition;
|
||||||
|
PlantBehaviour2D? plantBehaviour = plant2d as PlantBehaviour2D;
|
||||||
|
|
||||||
|
if (plantBehaviour != null)
|
||||||
|
{
|
||||||
|
plantBehaviour.Field = this;
|
||||||
|
plantBehaviour.Grow();
|
||||||
|
}
|
||||||
|
|
||||||
success = true;
|
success = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using Babushka.scripts.CSharp.Common.Animation;
|
||||||
using Babushka.scripts.CSharp.Common.Inventory;
|
using Babushka.scripts.CSharp.Common.Inventory;
|
||||||
using Godot;
|
using Godot;
|
||||||
|
|
||||||
@@ -25,6 +26,15 @@ public partial class PlantBehaviour2D : Node2D
|
|||||||
private Sprite2D _currentPlantSprite = null;
|
private Sprite2D _currentPlantSprite = null;
|
||||||
private bool _magicWordSaid = false;
|
private bool _magicWordSaid = false;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// public accessor for the field reference
|
||||||
|
/// </summary>
|
||||||
|
public FieldBehaviour2D Field
|
||||||
|
{
|
||||||
|
get => _field;
|
||||||
|
set => _field = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Transitions the plant to its next growth stage.
|
/// Transitions the plant to its next growth stage.
|
||||||
@@ -34,7 +44,7 @@ public partial class PlantBehaviour2D : Node2D
|
|||||||
if (_field.FieldState != FieldState.Watered || _magicWordSaid != _magicWordNeeded)
|
if (_field.FieldState != FieldState.Watered || _magicWordSaid != _magicWordNeeded)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
//GetTree().CallGroup("PlantGrowing", PlayerMovement.MethodName.PlayFarmingAnimation);
|
GetTree().CallGroup("PlantGrowing", VesnaAnimations.MethodName.PlayFarmingAnimation);
|
||||||
// todo:
|
// todo:
|
||||||
// find out why the last plant stage is being skipped the second time around
|
// find out why the last plant stage is being skipped the second time around
|
||||||
switch (_state)
|
switch (_state)
|
||||||
|
|||||||
@@ -1,29 +0,0 @@
|
|||||||
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<ItemResource, PackedScene> seedToPlantRepository;
|
|
||||||
|
|
||||||
public override void _EnterTree()
|
|
||||||
{
|
|
||||||
Instance = this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public PackedScene? GetPlant(ItemResource resource)
|
|
||||||
{
|
|
||||||
if (seedToPlantRepository.ContainsKey(resource))
|
|
||||||
{
|
|
||||||
return seedToPlantRepository[resource];
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
uid://coqch6yjvjuc0
|
|
||||||
@@ -16,10 +16,14 @@ public partial class ItemResource : Resource
|
|||||||
[Export]
|
[Export]
|
||||||
public int maxStack;
|
public int maxStack;
|
||||||
|
|
||||||
|
[Export]
|
||||||
|
public PackedScene? itemPrefab;
|
||||||
|
|
||||||
public ItemResource()
|
public ItemResource()
|
||||||
{
|
{
|
||||||
name = "";
|
name = "";
|
||||||
color = Colors.Red;
|
color = Colors.Red;
|
||||||
maxStack = 1;
|
maxStack = 1;
|
||||||
|
itemPrefab = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user