Compare commits

...

5 Commits

13 changed files with 87 additions and 141 deletions
+22 -70
View File
@@ -1,7 +1,9 @@
[gd_scene load_steps=480 format=3 uid="uid://c25udixd5m6l0"] [gd_scene load_steps=475 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"]
@@ -271,12 +273,7 @@
[ext_resource type="Texture2D" uid="uid://b37lpqrsjjuc0" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0010.png" id="466_pw1ip"] [ext_resource type="Texture2D" uid="uid://b37lpqrsjjuc0" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0010.png" id="466_pw1ip"]
[ext_resource type="Script" uid="uid://er03dkj8axlr" path="res://scripts/CSharp/Common/UI/WateringCanUi.cs" id="467_j4m0f"] [ext_resource type="Script" uid="uid://er03dkj8axlr" path="res://scripts/CSharp/Common/UI/WateringCanUi.cs" id="467_j4m0f"]
[ext_resource type="Texture2D" uid="uid://oi11ax6tml6j" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0012.png" id="468_08021"] [ext_resource type="Texture2D" uid="uid://oi11ax6tml6j" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0012.png" id="468_08021"]
[ext_resource type="Texture2D" uid="uid://l0k3vh3kdprp" path="res://art/ui/UI/Watercan-ui/Tropfen-ui-1.png" id="468_f6xmn"]
[ext_resource type="Texture2D" uid="uid://t4w7axbof7bq" path="res://art/ui/UI/Watercan-ui/Tropfen-ui-2.png" id="469_nxglm"]
[ext_resource type="Texture2D" uid="uid://di2npqkvvst6x" path="res://art/ui/UI/Watercan-ui/Tropfen-ui-3.png" id="470_8fyd7"]
[ext_resource type="Texture2D" uid="uid://dsjj23763pej5" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0014.png" id="470_bmmei"] [ext_resource type="Texture2D" uid="uid://dsjj23763pej5" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0014.png" id="470_bmmei"]
[ext_resource type="Texture2D" uid="uid://clti3basli30" path="res://art/ui/UI/Watercan-ui/Tropfen-ui-4.png" id="471_dnm27"]
[ext_resource type="Texture2D" uid="uid://n1v4hgd467wp" path="res://art/ui/UI/Watercan-ui/Tropfen-ui-5.png" id="472_e04c3"]
[ext_resource type="Texture2D" uid="uid://blh0t2ofqj2uq" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0016.png" id="472_wdxsr"] [ext_resource type="Texture2D" uid="uid://blh0t2ofqj2uq" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0016.png" id="472_wdxsr"]
[ext_resource type="Texture2D" uid="uid://l5ym7gi82l1b" path="res://art/ui/UI/Watercan-ui/Tropfen-ui-6.png" id="473_g32y8"] [ext_resource type="Texture2D" uid="uid://l5ym7gi82l1b" path="res://art/ui/UI/Watercan-ui/Tropfen-ui-6.png" id="473_g32y8"]
[ext_resource type="Texture2D" uid="uid://3t1m2xi4ks75" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0018.png" id="474_tu801"] [ext_resource type="Texture2D" uid="uid://3t1m2xi4ks75" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0018.png" id="474_tu801"]
@@ -470,8 +467,6 @@
[ext_resource type="Texture2D" uid="uid://ds2y033vahyi5" path="res://art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Gießkanne/0016.png" id="810_224qh"] [ext_resource type="Texture2D" uid="uid://ds2y033vahyi5" path="res://art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Gießkanne/0016.png" id="810_224qh"]
[ext_resource type="Texture2D" uid="uid://b0v61all3tsny" path="res://art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Gießkanne/0018.png" id="812_sf8kv"] [ext_resource type="Texture2D" uid="uid://b0v61all3tsny" path="res://art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Gießkanne/0018.png" id="812_sf8kv"]
[ext_resource type="Texture2D" uid="uid://cao7vqax8cblo" path="res://art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Gießkanne/0020.png" id="814_3uq4g"] [ext_resource type="Texture2D" uid="uid://cao7vqax8cblo" path="res://art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Gießkanne/0020.png" id="814_3uq4g"]
[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="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/base_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"] [ext_resource type="Script" uid="uid://cvkw4qd2hxksi" path="res://scripts/GdScript/dialogic_toggle.gd" id="819_4na52"]
@@ -2079,6 +2074,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)
@@ -2108,72 +2105,27 @@ frame = 7
frame_progress = 0.229832 frame_progress = 0.229832
offset = Vector2(0, -450) offset = Vector2(0, -450)
[node name="Hoe" type="Sprite2D" parent="CharacterBody2D/visuals"] [node name="WateringCanUI" type="Node2D" parent="CharacterBody2D" node_paths=PackedStringArray("_slider")]
visible = false
position = Vector2(-35, -596)
rotation = 0.74351
scale = Vector2(0.24, 0.24)
texture = ExtResource("815_1ia2b")
region_enabled = true
region_rect = Rect2(980, 179, 374, 1233)
[node name="WateringCanEmpty" type="Sprite2D" parent="CharacterBody2D/visuals"]
visible = false
position = Vector2(-38, -603)
scale = Vector2(0.5, 0.5)
texture = ExtResource("816_1a3c1")
region_enabled = true
region_rect = Rect2(-1, 1128, 417, 299)
[node name="WateringCanFull" type="Sprite2D" parent="CharacterBody2D/visuals"]
visible = false
modulate = Color(0.286, 0.16, 1, 1)
position = Vector2(-38, -603)
scale = Vector2(0.5, 0.5)
texture = ExtResource("816_1a3c1")
region_enabled = true
region_rect = Rect2(-1, 1128, 417, 299)
[node name="WateringCanUI" type="Node2D" parent="CharacterBody2D" node_paths=PackedStringArray("_stages")]
position = Vector2(0, -929) position = Vector2(0, -929)
scale = Vector2(2, 2) scale = Vector2(2, 2)
script = ExtResource("467_j4m0f") script = ExtResource("467_j4m0f")
_stages = [NodePath("6"), NodePath("5"), NodePath("4"), NodePath("3"), NodePath("2"), NodePath("1")] _slider = NodePath("HSlider")
[node name="1" type="Sprite2D" parent="CharacterBody2D/WateringCanUI"] [node name="HSlider" type="HSlider" parent="CharacterBody2D/WateringCanUI"]
visible = false visible = false
position = Vector2(1, 0) modulate = Color(0.3515, 0.780425, 0.95, 1)
scale = Vector2(1.8, 1.8) custom_minimum_size = Vector2(150, 50)
texture = ExtResource("468_f6xmn") anchors_preset = 5
anchor_left = 0.5
[node name="2" type="Sprite2D" parent="CharacterBody2D/WateringCanUI"] anchor_right = 0.5
visible = false offset_left = -43.0
position = Vector2(2, 2) offset_right = 57.0
scale = Vector2(1.6, 1.6) offset_bottom = 64.0
texture = ExtResource("469_nxglm") grow_horizontal = 2
max_value = 1.0
[node name="3" type="Sprite2D" parent="CharacterBody2D/WateringCanUI"] step = 0.0
visible = false editable = false
position = Vector2(3, 5) scrollable = false
scale = Vector2(1.4, 1.4)
texture = ExtResource("470_8fyd7")
[node name="4" type="Sprite2D" parent="CharacterBody2D/WateringCanUI"]
visible = false
position = Vector2(3, 7)
scale = Vector2(1.2, 1.2)
texture = ExtResource("471_dnm27")
[node name="5" type="Sprite2D" parent="CharacterBody2D/WateringCanUI"]
visible = false
position = Vector2(2, 7)
scale = Vector2(1.1, 1.1)
texture = ExtResource("472_e04c3")
[node name="6" type="Sprite2D" parent="CharacterBody2D/WateringCanUI"]
visible = false
position = Vector2(3, 12)
texture = ExtResource("473_g32y8")
[node name="FarmingControls" type="Node2D" parent="." node_paths=PackedStringArray("_movingPlayer", "_wateringParticles")] [node name="FarmingControls" type="Node2D" parent="." node_paths=PackedStringArray("_movingPlayer", "_wateringParticles")]
script = ExtResource("817_6nrw3") script = ExtResource("817_6nrw3")
@@ -2221,7 +2173,7 @@ script = ExtResource("475_nxglm")
[connection signal="PickedUpTool" from="." to="CharacterBody2D" method="ActivateTool"] [connection signal="PickedUpTool" from="." to="CharacterBody2D" method="ActivateTool"]
[connection signal="PickedUpTool" from="." to="CharacterBody2D/visuals" method="ActivateTool"] [connection signal="PickedUpTool" from="." to="CharacterBody2D/visuals" method="ActivateTool"]
[connection signal="PickedUpTool" from="." to="CharacterBody2D/WateringCanUI" method="IsWateringCanActive"] [connection signal="PickedUpTool" from="." to="CharacterBody2D/WateringCanUI" method="IsWateringCanActive"]
[connection signal="WateringField" from="FarmingControls" to="CharacterBody2D" method="PlayWateringAnimation"] [connection signal="WateringField" from="FarmingControls" to="CharacterBody2D/visuals" method="PlayWateringAnimation"]
[connection signal="WateringField" from="FarmingControls" to="CharacterBody2D/WateringCanUI" method="Water"] [connection signal="WateringField" from="FarmingControls" to="CharacterBody2D/WateringCanUI" method="Water"]
[connection signal="timelineEnded" from="dialogic toggle" to="." method="EnableMovement"] [connection signal="timelineEnded" from="dialogic toggle" to="." method="EnableMovement"]
[connection signal="timelineStarted" from="dialogic toggle" to="." method="DisableMovement"] [connection signal="timelineStarted" from="dialogic toggle" to="." method="DisableMovement"]
+2
View File
@@ -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"]
-11
View File
@@ -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
View File
@@ -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]
+3 -1
View File
@@ -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")
@@ -77,16 +77,26 @@ public partial class InteractionArea2D : Node2D
if (@event.IsAction("interact") && @event.IsPressed()) if (@event.IsAction("interact") && @event.IsPressed())
{ {
if (_area.HasOverlappingBodies()) TryInteract();
{ }
_label.Hide();
if (_useSprite && _useOutline) if (@event.IsActionPressed("click") && @event.IsPressed())
_spriteToOutline.Material = _backupMaterial; {
TryInteract();
}
}
EmitSignal(SignalName.InteractedTool, _id); private void TryInteract()
EmitSignal(SignalName.Interacted); {
} if (_area.HasOverlappingBodies())
{
_label.Hide();
if (_useSprite && _useOutline)
_spriteToOutline.Material = _backupMaterial;
EmitSignal(SignalName.InteractedTool, _id);
EmitSignal(SignalName.Interacted);
} }
} }
@@ -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;
@@ -39,7 +39,7 @@ public partial class FieldBehaviour2D : Sprite2D
case FieldState.Tilled: case FieldState.Tilled:
FieldState = FieldState.Tilled; FieldState = FieldState.Tilled;
_fieldSprite.Texture = Tilled; _fieldSprite.Texture = Tilled;
PlantingInteraction.IsActive = false; PlantingInteraction.IsActive = true;
break; break;
case FieldState.Watered: case FieldState.Watered:
FieldState = FieldState.Watered; FieldState = FieldState.Watered;
@@ -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:
@@ -67,12 +68,9 @@ public partial class FieldBehaviour2D : Sprite2D
/// </summary> /// </summary>
public void Farm() public void Farm()
{ {
if (FieldState == FieldState.Watered) if (TryPlant())
{ {
if (TryPlant()) UpdateFieldState(FieldState.Planted);
{
UpdateFieldState(FieldState.Planted);
}
} }
} }
@@ -82,10 +80,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 +91,14 @@ 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;
}
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,22 @@ 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;
}
public override void _Ready()
{
_state = PlantState.Planted;
_currentPlantSprite = GetRandomSprite(_seeds);
_currentPlantSprite.Visible = true;
}
/// <summary> /// <summary>
/// Transitions the plant to its next growth stage. /// Transitions the plant to its next growth stage.
@@ -34,9 +51,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:
// find out why the last plant stage is being skipped the second time around
switch (_state) switch (_state)
{ {
case PlantState.None: case PlantState.None:
@@ -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;
} }
} }
+3 -5
View File
@@ -5,7 +5,7 @@ namespace Babushka.scripts.CSharp.Common.UI;
public partial class WateringCanUi : Node2D public partial class WateringCanUi : Node2D
{ {
[Export] private Sprite2D[] _stages; [Export] private Slider _slider;
private const int WATERING_CAN_ID = 1; private const int WATERING_CAN_ID = 1;
@@ -35,10 +35,8 @@ public partial class WateringCanUi : Node2D
private void UpdateSprites() private void UpdateSprites()
{ {
for (int i = 0; i < _stages.Length; i++) _slider.Visible = WateringCanState.Active;
{ _slider.Value = (float)WateringCanState.GetFillState() / WateringCanState.MAX_FILLSTATE;
_stages[i].Visible = WateringCanState.Active && i < WateringCanState.GetFillState();
}
} }
} }