Added sceneprovider reference to field scripts and made them register on ready. Also added VariableSetter.

feature/farming_bugfixes_and_magic_word
kziolkowski 2 months ago
parent fe1dd2bcc1
commit 97dcadf07a

@ -2162,7 +2162,7 @@ _fieldPrefab = ExtResource("818_16w6h")
_movingPlayer = NodePath("../CharacterBody2D")
_wateringParticles = NodePath("../pouring water vfx")
_wateringCanParticlesVerticalOffset = -100.0
_fieldOffsetVector = Vector2i(735, 680)
_fieldOffsetVector = Vector2i(735, 600)
[node name="pouring water vfx" type="CPUParticles2D" parent="."]
position = Vector2(-652, -599)

@ -1,4 +1,4 @@
[gd_scene load_steps=18 format=3 uid="uid://b1d2e7ely6hyw"]
[gd_scene load_steps=19 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"]
@ -13,6 +13,7 @@
[ext_resource type="Script" uid="uid://b5dotkx17gvxg" path="res://scripts/CSharp/Low Code/Events/EventRaiser.cs" id="9_teirr"]
[ext_resource type="Texture2D" uid="uid://bovypw2hsn2nq" path="res://art/masks/field_outline_1_outline.png" id="9_wx561"]
[ext_resource type="Resource" uid="uid://b4hawvsc7cmkn" path="res://resources/low code/farming/event_newPlantCreated.tres" id="10_wx561"]
[ext_resource type="Resource" uid="uid://tt3d166mntmi" path="res://resources/low code/farming/var_sceneNameProvider.tres" id="11_cjahb"]
[ext_resource type="Script" uid="uid://3t0af586fimq" path="res://scripts/CSharp/Common/Inventory/InventoryListener.cs" id="14_w08sx"]
[ext_resource type="Resource" uid="uid://d1uuxp1lp4aro" path="res://resources/items/tomato_seed.tres" id="15_i4qwg"]
[ext_resource type="Resource" uid="uid://duq7tshxv6uhp" path="res://resources/items/beet_seed.tres" id="16_i4qwg"]
@ -35,6 +36,7 @@ PlantingInteraction = NodePath("../InteractionArea")
PlantingPlaceholder = NodePath("PlantPlaceholder")
ItemRepository = ExtResource("7_w8caw")
FieldInteractionArea = NodePath("../InteractionArea")
_sceneKeyProvider = ExtResource("11_cjahb")
[node name="MaskedField" type="Sprite2D" parent="FieldBehaviour"]
clip_children = 1

@ -1,4 +1,4 @@
[gd_scene load_steps=115 format=3 uid="uid://gigb28qk8t12"]
[gd_scene load_steps=117 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"]
@ -73,8 +73,10 @@
[ext_resource type="Resource" uid="uid://5t8g0firdif0" path="res://resources/quests/demo/5_talk_yeli_3.tres" id="69_l4wxt"]
[ext_resource type="Script" uid="uid://bhbldab74vmhy" path="res://scripts/CSharp/Common/QuestBehaviour/DetectFieldWork.cs" id="74_fv1t2"]
[ext_resource type="Resource" uid="uid://h05jgxqtq37m" path="res://resources/quests/demo/6_till_and_water.tres" id="75_l7ekk"]
[ext_resource type="Script" uid="uid://dfpyjxivcuidr" path="res://scripts/CSharp/Low Code/Variables/VariableSetter.cs" id="76_l7ekk"]
[ext_resource type="Resource" uid="uid://byjqeukpibkvi" path="res://resources/quests/demo/7_talk_yeli_inside_1.tres" id="76_xcwle"]
[ext_resource type="Script" uid="uid://dih1b0opgc3f7" path="res://scripts/GdScript/dialogic_start_specific.gd" id="77_l7ekk"]
[ext_resource type="Resource" uid="uid://tt3d166mntmi" path="res://resources/low code/farming/var_sceneNameProvider.tres" id="77_xcwle"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_wtdui"]
shader = ExtResource("13_7p0hq")
@ -211,10 +213,10 @@ shader_parameter/tiling_scale = Vector2(1, 25)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_p6n74"]
resource_local_to_scene = true
size = Vector2(7150, 1192)
size = Vector2(7150, 941.9418)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_2nee2"]
size = Vector2(5782, 1176)
size = Vector2(5782, 896.7792)
[sub_resource type="ShaderMaterial" id="ShaderMaterial_lwk6t"]
shader = ExtResource("13_7p0hq")
@ -602,7 +604,7 @@ texture = ExtResource("13_0qu0h")
[node name="JelenaMockupBg03" type="Sprite2D" parent="ParallaxBackground/background layer 4"]
z_index = -200
material = SubResource("ShaderMaterial_wtdui")
position = Vector2(7923, 727)
position = Vector2(7893.0005, 727)
scale = Vector2(2.75, 2.75)
texture = ExtResource("13_0qu0h")
@ -1039,8 +1041,9 @@ z_index = 1
position = Vector2(9322, 2018)
_hoe = ExtResource("28_6b2nr")
[node name="FarmingControls" parent="YSorted/Vesna" index="1" node_paths=PackedStringArray("_camera")]
[node name="FarmingControls" parent="YSorted/Vesna" index="1" node_paths=PackedStringArray("_camera", "_fieldParent")]
_camera = NodePath("../../../Camera2D")
_fieldParent = NodePath("../../FieldParent")
[node name="Well" type="Sprite2D" parent="YSorted" node_paths=PackedStringArray("_interactionArea")]
z_index = 1
@ -1117,6 +1120,9 @@ shape = SubResource("CircleShape2D_tm0yg")
[node name="Icon" parent="YSorted/SeedPickup2" index="4"]
scale = Vector2(1, 1)
[node name="FieldParent" type="Node2D" parent="YSorted"]
position = Vector2(0, -200)
[node name="Farm visuals" type="Node2D" parent="YSorted"]
position = Vector2(-60, 122)
@ -2093,20 +2099,20 @@ rotation = 1.5708
scale = Vector2(0.1, 10.8)
texture = ExtResource("21_if5vh")
[node name="Area2D" type="Area2D" parent="YSorted/Farm visuals"]
[node name="Farming Colliders" type="Area2D" parent="YSorted/Farm visuals"]
position = Vector2(5, 4.098892)
scale = Vector2(1, 0.993819)
collision_mask = 5
collision_priority = 10.0
[node name="CollisionShape2D2" type="CollisionShape2D" parent="YSorted/Farm visuals/Area2D"]
position = Vector2(11913.999, 2960)
scale = Vector2(0.99999994, 0.99999994)
[node name="CollisionShape2D2" type="CollisionShape2D" parent="YSorted/Farm visuals/Farming Colliders"]
position = Vector2(11913.995, 3085.0288)
scale = Vector2(0.9999998, 0.9999998)
shape = SubResource("RectangleShape2D_p6n74")
[node name="CollisionShape2D" type="CollisionShape2D" parent="YSorted/Farm visuals/Area2D"]
position = Vector2(2895.9998, 2949)
scale = Vector2(0.99999994, 0.99999994)
[node name="CollisionShape2D" type="CollisionShape2D" parent="YSorted/Farm visuals/Farming Colliders"]
position = Vector2(2895.9988, 3088.6096)
scale = Vector2(0.9999998, 0.9999998)
shape = SubResource("RectangleShape2D_2nee2")
[node name="Blocker" type="Node2D" parent="YSorted"]
@ -2409,6 +2415,11 @@ _toNextQuest = ExtResource("76_xcwle")
script = ExtResource("77_l7ekk")
timeline = "quest2_tomatoes_end"
[node name="SceneNameSetter" type="Node" parent="."]
script = ExtResource("76_l7ekk")
_variableResource = ExtResource("77_xcwle")
_payloadToSet = "farmOutside"
[connection signal="FilledWateringCan" from="YSorted/Vesna" to="Audio/SFX/FillWater SFX2" method="PlayOneShot"]
[connection signal="WateringField" from="YSorted/Vesna/FarmingControls" to="Audio/SFX/Watering SFX" method="PlayOneShot"]
[connection signal="InteractedTool" from="YSorted/Well/InteractionArea" to="YSorted/Vesna" method="TryFillWateringCan"]
@ -2417,8 +2428,8 @@ timeline = "quest2_tomatoes_end"
[connection signal="SuccessfulPickUp" from="YSorted/SeedPickup" to="YSorted/Vesna" method="HandlePickUp"]
[connection signal="SuccessfulPickUp" from="YSorted/SeedPickup2" to="YSorted/Vesna" method="HandlePickUp"]
[connection signal="InteractedTool" from="YSorted/Farm visuals/Static/EnterHouseInteraction" to="." method="LoadSceneAtIndex"]
[connection signal="mouse_entered" from="YSorted/Farm visuals/Area2D" to="YSorted/Vesna/FarmingControls" method="CanCreateFields"]
[connection signal="mouse_exited" from="YSorted/Farm visuals/Area2D" to="YSorted/Vesna/FarmingControls" method="CannotCreateFields"]
[connection signal="mouse_entered" from="YSorted/Farm visuals/Farming Colliders" to="YSorted/Vesna/FarmingControls" method="CanCreateFields"]
[connection signal="mouse_exited" from="YSorted/Farm visuals/Farming Colliders" to="YSorted/Vesna/FarmingControls" method="CannotCreateFields"]
[connection signal="InteractedTool" from="YSorted/Blocker/InteractionArea" to="." method="LoadSceneAtIndex"]
[connection signal="GoalReached" from="YSorted/ducks" to="YSorted/ducks/DialogicToggle" method="ToggleDialogue"]
[connection signal="DuckCollected" from="YSorted/ducks/Duck2" to="YSorted/ducks" method="Increment"]
@ -2431,6 +2442,7 @@ timeline = "quest2_tomatoes_end"
[connection signal="finished" from="Audio/Background Music Ramp up" to="Audio/Background Music loop" method="PlayFromOffset"]
[connection signal="ready" from="SpecialQuestTrigger/QuestInstantStart" to="SpecialQuestTrigger/QuestInstantStart/QuestTrigger" method="Trigger"]
[connection signal="OnFulfilled" from="SpecialQuestTrigger/FieldWorkTrigger" to="SpecialQuestTrigger/FieldWorkTrigger/StartDialog" method="open"]
[connection signal="tree_entered" from="SceneNameSetter" to="SceneNameSetter" method="Set"]
[editable path="YSorted/Vesna"]
[editable path="YSorted/Well/InteractionArea"]

@ -41,16 +41,16 @@
[ext_resource type="Texture2D" uid="uid://badnnid7dgnpk" path="res://art/nature/grass/grass-4.png" id="42_7jeth"]
[ext_resource type="PackedScene" uid="uid://dpbbroif2tnil" path="res://prefabs/interactions/generic_item_on_ground_2d.tscn" id="43_dr6bm"]
[ext_resource type="Texture2D" uid="uid://ct7ea8ikor5rf" path="res://art/nature/grass/grass-3.png" id="43_g8k4k"]
[ext_resource type="Material" uid="uid://blch5kdhkbj75" path="res://art/materials/simple_interactable_outline.tres" id="44_34r5t"]
[ext_resource type="Texture2D" uid="uid://d3dwl6ph0pu1d" path="res://art/nature/grass/grass-6.png" id="44_jgrpl"]
[ext_resource type="Script" uid="uid://dhxtdhfqx3bte" path="res://scripts/CSharp/Common/Farming/FieldService2D.cs" id="46_xkmgh"]
[ext_resource type="Texture2D" uid="uid://blb3agipyxnal" path="res://art/farm/farming/farmobjekte/zaun/fence_door.png" id="47_xfjh2"]
[ext_resource type="PackedScene" uid="uid://cgjc4wurbgimy" path="res://prefabs/UI/Inventory/Inventory.tscn" id="52_gwhnv"]
[ext_resource type="AudioStream" uid="uid://dku1rq5cocisg" path="res://audio/Music/Farming_90BPM_69Bars.wav" id="53_2tfpr"]
[ext_resource type="Script" uid="uid://clxb3n668oud3" path="res://scripts/CSharp/Common/Audio/AudioDebugger.cs" id="54_pn8sy"]
[ext_resource type="AudioStream" uid="uid://cfqg50am0swb7" path="res://audio/Music/Farming_90BPM_69Bars_Loop.wav" id="55_aq24k"]
[ext_resource type="Script" uid="uid://dfpyjxivcuidr" path="res://scripts/CSharp/Low Code/Variables/VariableSetter.cs" id="56_34r5t"]
[ext_resource type="AudioStream" uid="uid://vcftvrpi6c7k" path="res://audio/sfx/Farming/SFX_Harke_03_Solo.wav" id="56_vojpc"]
[ext_resource type="AudioStream" uid="uid://bxh5m04vdo0sr" path="res://audio/sfx/Farming/SFX_Harke_04_Solo.wav" id="57_euap5"]
[ext_resource type="Resource" uid="uid://tt3d166mntmi" path="res://resources/low code/farming/var_sceneNameProvider.tres" id="57_hpgl7"]
[ext_resource type="Script" uid="uid://cfnrd5k1k0gxw" path="res://scripts/CSharp/Common/AudioPlayer2D.cs" id="58_m3hs4"]
[ext_resource type="AudioStream" uid="uid://dapsknn486aee" path="res://audio/sfx/Farming/SFX_WateringPlants_01.wav" id="59_km2vg"]
[ext_resource type="AudioStream" uid="uid://dnyne8wov50so" path="res://audio/sfx/Farming/SFX_WateringPlants_02.wav" id="60_qi2gu"]
@ -1701,12 +1701,9 @@ rotation = 1.5708
scale = Vector2(0.1, 8.7)
texture = ExtResource("26_bwvai")
[node name="FieldParent" type="Node2D" parent="YSorted/Farm visuals" node_paths=PackedStringArray("fields")]
[node name="FieldParent" type="Node2D" parent="YSorted/Farm visuals"]
position = Vector2(53, 20)
scale = Vector2(1, 0.993819)
script = ExtResource("46_xkmgh")
fields = {}
metadata/_custom_type_script = "uid://dhxtdhfqx3bte"
[node name="BaseField" parent="YSorted/Farm visuals/FieldParent" instance=ExtResource("40_efblm")]
position = Vector2(651, 2630.26)
@ -1716,9 +1713,6 @@ scale = Vector2(1, 1.00622)
_state = 2
_field = NodePath("../..")
[node name="InteractionArea" parent="YSorted/Farm visuals/FieldParent/BaseField" index="1"]
_outlineMaterial = ExtResource("44_34r5t")
[node name="BaseField2" parent="YSorted/Farm visuals/FieldParent" instance=ExtResource("40_efblm")]
position = Vector2(1226, 3098.15)
scale = Vector2(1, 1.00622)
@ -1727,12 +1721,9 @@ scale = Vector2(1, 1.00622)
FieldState = 3
[node name="Beet2" parent="YSorted/Farm visuals/FieldParent/BaseField2/FieldBehaviour/PlantPlaceholder" index="0" node_paths=PackedStringArray("_field") instance=ExtResource("41_vyqmy")]
_state = 1
_state = 2
_field = NodePath("../..")
[node name="InteractionArea" parent="YSorted/Farm visuals/FieldParent/BaseField2" index="1"]
_outlineMaterial = ExtResource("44_34r5t")
[node name="BaseField3" parent="YSorted/Farm visuals/FieldParent" instance=ExtResource("40_efblm")]
position = Vector2(1782, 2606.11)
scale = Vector2(1, 1.00622)
@ -1744,9 +1735,6 @@ FieldState = 3
_state = 2
_field = NodePath("../..")
[node name="InteractionArea" parent="YSorted/Farm visuals/FieldParent/BaseField3" index="1"]
_outlineMaterial = ExtResource("44_34r5t")
[node name="BaseField4" parent="YSorted/Farm visuals/FieldParent" instance=ExtResource("40_efblm")]
position = Vector2(2559, 2624.22)
scale = Vector2(1, 1.00622)
@ -1758,9 +1746,6 @@ FieldState = 3
_state = 2
_field = NodePath("../..")
[node name="InteractionArea" parent="YSorted/Farm visuals/FieldParent/BaseField4" index="1"]
_outlineMaterial = ExtResource("44_34r5t")
[node name="BaseField5" parent="YSorted/Farm visuals/FieldParent" instance=ExtResource("40_efblm")]
position = Vector2(3305, 2624.22)
scale = Vector2(1, 1.00622)
@ -1772,9 +1757,6 @@ FieldState = 3
_state = 2
_field = NodePath("../..")
[node name="InteractionArea" parent="YSorted/Farm visuals/FieldParent/BaseField5" index="1"]
_outlineMaterial = ExtResource("44_34r5t")
[node name="BaseField6" parent="YSorted/Farm visuals/FieldParent" instance=ExtResource("40_efblm")]
position = Vector2(4033, 2618.18)
scale = Vector2(1, 1.00622)
@ -1786,9 +1768,6 @@ FieldState = 3
_state = 1
_field = NodePath("../..")
[node name="InteractionArea" parent="YSorted/Farm visuals/FieldParent/BaseField6" index="1"]
_outlineMaterial = ExtResource("44_34r5t")
[node name="BaseField7" parent="YSorted/Farm visuals/FieldParent" instance=ExtResource("40_efblm")]
position = Vector2(4755, 2630.26)
scale = Vector2(1, 1.00622)
@ -1800,9 +1779,6 @@ FieldState = 3
_state = 2
_field = NodePath("../..")
[node name="InteractionArea" parent="YSorted/Farm visuals/FieldParent/BaseField7" index="1"]
_outlineMaterial = ExtResource("44_34r5t")
[node name="BaseField8" parent="YSorted/Farm visuals/FieldParent" instance=ExtResource("40_efblm")]
position = Vector2(4418, 3226.95)
scale = Vector2(1, 1.00622)
@ -1814,9 +1790,6 @@ FieldState = 3
_state = 2
_field = NodePath("../..")
[node name="InteractionArea" parent="YSorted/Farm visuals/FieldParent/BaseField8" index="1"]
_outlineMaterial = ExtResource("44_34r5t")
[node name="BaseField9" parent="YSorted/Farm visuals/FieldParent" instance=ExtResource("40_efblm")]
position = Vector2(5317, 3208.83)
scale = Vector2(1, 1.00622)
@ -1828,9 +1801,6 @@ FieldState = 3
_state = 1
_field = NodePath("../..")
[node name="InteractionArea" parent="YSorted/Farm visuals/FieldParent/BaseField9" index="1"]
_outlineMaterial = ExtResource("44_34r5t")
[node name="Blocker" type="Node2D" parent="YSorted"]
[node name="BackToFarm" parent="YSorted/Blocker" node_paths=PackedStringArray("_spritesToOutline") instance=ExtResource("31_xcb8u")]
@ -1936,12 +1906,17 @@ max_distance = 20000000.0
playback_type = 2
script = ExtResource("58_m3hs4")
[node name="SceneNameSetter" type="Node" parent="."]
script = ExtResource("56_34r5t")
_variableResource = ExtResource("57_hpgl7")
_payloadToSet = "beetRootScene"
[connection signal="FilledWateringCan" from="YSorted/Vesna" to="Audio/SFX/FillWater SFX2" method="PlayOneShot"]
[connection signal="WateringField" from="YSorted/Vesna/FarmingControls" to="Audio/SFX/Watering SFX" method="PlayOneShot"]
[connection signal="InteractedTool" from="YSorted/Brünnen/InteractionArea" to="YSorted/Vesna" method="TryFillWateringCan"]
[connection signal="FieldCreated" from="YSorted/Farm visuals/FieldParent" to="Audio/SFX/Farming SFX" method="PlayOneShot"]
[connection signal="InteractedTool" from="YSorted/Blocker/BackToFarm" to="." method="LoadSceneAtIndex"]
[connection signal="finished" from="Audio/Background Music Ramp up" to="Audio/Background Music loop" method="PlayFromOffset"]
[connection signal="tree_entered" from="SceneNameSetter" to="SceneNameSetter" method="Set"]
[editable path="YSorted/Vesna"]
[editable path="YSorted/Vesna/GenericItemOnGround"]

@ -15,6 +15,7 @@ public partial class FarmingControls2D : Node2D
[Export] private CpuParticles2D _wateringParticles;
[Export] private float _wateringCanParticlesVerticalOffset = 50f;
[Export] private Vector2I _fieldOffsetVector = new Vector2I(735, 651);
[Export] private Node2D _fieldParent;
private int _toolId = -1;
private bool _wateringCanFilled = false;
@ -143,13 +144,11 @@ public partial class FarmingControls2D : Node2D
// reposition and reparent the instance
field2d.Position = new Vector2(fieldPosition.X, fieldPosition.Y);
FieldService.Instance.AddChild(fieldInstance);
_fieldParent.AddChild(fieldInstance);
EmitSignal(SignalName.FieldCreated);
}
}
}
#endregion
}

@ -1,6 +1,7 @@
using System;
using Babushka.scripts.CSharp.Common.CharacterControls;
using Babushka.scripts.CSharp.Common.Inventory;
using Babushka.scripts.CSharp.Low_Code.Variables;
using Godot;
namespace Babushka.scripts.CSharp.Common.Farming;
@ -20,6 +21,7 @@ public partial class FieldBehaviour2D : Sprite2D
[Export] public Node2D PlantingPlaceholder;
[Export] public ItemRepository ItemRepository;
[Export] public InteractionArea2D FieldInteractionArea;
[Export] public VariableResource _sceneKeyProvider;
public Vector2 FieldPosition;
@ -52,6 +54,7 @@ public partial class FieldBehaviour2D : Sprite2D
public override void _Ready()
{
UpdateFieldState(FieldState);
FieldService.Instance.TryAddEntry(_sceneKeyProvider.Payload.AsString(), (Vector2I) GlobalPosition, this);
int randomIndex = new Random().Next(0, _maskTexture.Length);
_maskSprite.Texture = _maskTexture[randomIndex];
_outlineSprite.Texture = _maskOutlineTextures[randomIndex];

@ -24,6 +24,7 @@ public partial class FieldService : Node
//Create
public bool TryAddEntry(string sceneName, Vector2I position, FieldBehaviour2D field)
{
GD.Print("Trying to add a field at: " + position);
if (_outerDict != null )
{
FieldsInScene innerDict;

@ -0,0 +1,14 @@
using Godot;
namespace Babushka.scripts.CSharp.Low_Code.Variables;
public partial class VariableSetter : Node
{
[Export] private VariableResource _variableResource;
[Export] private Variant _payloadToSet;
public void Set()
{
_variableResource.Payload = _payloadToSet;
}
}
Loading…
Cancel
Save