From ff85b670879ab5471fecd576190be70b06aa6af1 Mon Sep 17 00:00:00 2001 From: kziolkowski Date: Wed, 14 May 2025 23:12:14 +0200 Subject: [PATCH] Made interaction area 2d work - and farming/growing work again. --- .../.idea/libraries/GdSdk_Master.xml | 10 -- prefabs/Player2D.tscn | 7 +- prefabs/farm/base_field_2d.tscn | 22 ++- prefabs/interaction_area_2d.tscn | 16 +- project.godot | 3 +- scenes/Babushka_scene_farm_outside_2d.tscn | 167 ++++++++++-------- scenes/HSV.gdshader | 92 ---------- scenes/HSV.gdshader.uid | 1 - scenes/IndoorTest.tscn | 2 +- scenes/repeat_texture.gdshader | 10 -- scenes/repeat_texture.gdshader.uid | 1 - scenes/testing/abandoned_street_3d.tscn | 1 - .../CSharp/Common/Farming/FieldService2D.cs | 1 + .../CSharp/Common/Farming/PlantBehaviour2D.cs | 64 +++++++ .../CSharp/Common/Farming/VesnaBehaviour2D.cs | 4 +- 15 files changed, 186 insertions(+), 215 deletions(-) delete mode 100644 .idea/.idea.Babushka/.idea/libraries/GdSdk_Master.xml delete mode 100644 scenes/HSV.gdshader delete mode 100644 scenes/HSV.gdshader.uid delete mode 100644 scenes/repeat_texture.gdshader delete mode 100644 scenes/repeat_texture.gdshader.uid create mode 100644 scripts/CSharp/Common/Farming/PlantBehaviour2D.cs diff --git a/.idea/.idea.Babushka/.idea/libraries/GdSdk_Master.xml b/.idea/.idea.Babushka/.idea/libraries/GdSdk_Master.xml deleted file mode 100644 index 8b941bb..0000000 --- a/.idea/.idea.Babushka/.idea/libraries/GdSdk_Master.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/prefabs/Player2D.tscn b/prefabs/Player2D.tscn index 7741bcc..3c42280 100644 --- a/prefabs/Player2D.tscn +++ b/prefabs/Player2D.tscn @@ -296,7 +296,7 @@ [ext_resource type="PackedScene" uid="uid://b1d2e7ely6hyw" path="res://prefabs/farm/base_field_2d.tscn" id="294_28qer"] [sub_resource type="CircleShape2D" id="CircleShape2D_ssqtd"] -radius = 167.672 +radius = 110.018 [sub_resource type="SpriteFrames" id="SpriteFrames_4yiyq"] animations = [{ @@ -1195,9 +1195,10 @@ animations = [{ "speed": 25.0 }] -[node name="Player2d" type="Node2D"] +[node name="Player2d" type="Node2D" node_paths=PackedStringArray("_farmingControls")] y_sort_enabled = true script = ExtResource("1_yl84k") +_farmingControls = NodePath("FarmingControls") [node name="CharacterBody2D" type="CharacterBody2D" parent="." node_paths=PackedStringArray("_sprite")] position = Vector2(0, 374) @@ -1208,7 +1209,7 @@ _sprite = NodePath("visuals/Animated Sprites") [node name="CollisionShape2D" type="CollisionShape2D" parent="CharacterBody2D"] z_index = 1 y_sort_enabled = true -position = Vector2(-24, -116) +position = Vector2(-24, -13) shape = SubResource("CircleShape2D_ssqtd") debug_color = Color(0.923708, 0.202722, 0.475262, 0.42) diff --git a/prefabs/farm/base_field_2d.tscn b/prefabs/farm/base_field_2d.tscn index b698df6..a7d1392 100644 --- a/prefabs/farm/base_field_2d.tscn +++ b/prefabs/farm/base_field_2d.tscn @@ -4,21 +4,27 @@ [ext_resource type="Script" uid="uid://bdffon388rkty" path="res://scripts/CSharp/Common/Farming/FieldBehaviour2D.cs" id="2_femni"] [ext_resource type="Texture2D" uid="uid://c2pirgay3jfnn" path="res://art/farm/tilable grounds/böden/trockene farming erde.png" id="3_lsfck"] [ext_resource type="Texture2D" uid="uid://ctvdxwgmfaj5c" path="res://art/farm/tilable grounds/böden/nasse farming erde.png" id="4_cus02"] -[ext_resource type="PackedScene" uid="uid://bjhj1wa5olwcu" path="res://prefabs/farm/base_plant.tscn" id="5_msuq8"] +[ext_resource type="PackedScene" uid="uid://c3hwbwo423nbm" path="res://prefabs/farm/base_plant_2d.tscn" id="5_femni"] [node name="BaseField" type="Node2D"] [node name="InteractionArea2" parent="." instance=ExtResource("1_femni")] +visible = false +z_index = 1 +scale = Vector2(2.225, 2.225) [node name="FieldBehaviour" type="Sprite2D" parent="."] -scale = Vector2(0.4, 1e-05) +texture = ExtResource("3_lsfck") script = ExtResource("2_femni") Tilled = ExtResource("3_lsfck") Watered = ExtResource("4_cus02") -[node name="BasePlant" parent="FieldBehaviour" node_paths=PackedStringArray("_seeds", "_smallPlants", "_bigPlants", "_readyPlants") instance=ExtResource("5_msuq8")] -transform = Transform3D(0.5, 0, 0, 0, -2.18557e-08, 0.5, 0, -0.5, -2.18557e-08, 0, 0, 0) -_seeds = [null, null, null] -_smallPlants = [null, null, null, null] -_bigPlants = [null, null, null, null] -_readyPlants = [null, null, null, null] +[node name="BasePlant" parent="FieldBehaviour" instance=ExtResource("5_femni")] + +[node name="BigPlant" parent="FieldBehaviour/BasePlant" index="2"] +position = Vector2(6, -161) + +[node name="ReadyPlant" parent="FieldBehaviour/BasePlant" index="3"] +position = Vector2(0, -204) + +[editable path="FieldBehaviour/BasePlant"] diff --git a/prefabs/interaction_area_2d.tscn b/prefabs/interaction_area_2d.tscn index 5202e52..202e27a 100644 --- a/prefabs/interaction_area_2d.tscn +++ b/prefabs/interaction_area_2d.tscn @@ -3,22 +3,24 @@ [ext_resource type="Script" uid="uid://ckp413wrub5fm" path="res://scripts/CSharp/Common/CharacterControls/InteractionArea2D.cs" id="1_6svbd"] [sub_resource type="CircleShape2D" id="CircleShape2D_npluf"] -radius = 100.0 +radius = 300.0 [node name="InteractionArea" type="Node2D" node_paths=PackedStringArray("_area", "_label")] script = ExtResource("1_6svbd") -_area = NodePath("Area3D") +_area = NodePath("Area2D") _label = NodePath("Label") -[node name="Area3D" type="Area2D" parent="."] -collision_mask = 16 +[node name="Area2D" type="Area2D" parent="."] -[node name="CollisionShape3D" type="CollisionShape2D" parent="Area3D"] +[node name="CollisionShape3D" type="CollisionShape2D" parent="Area2D"] shape = SubResource("CircleShape2D_npluf") [node name="Label" type="Label" parent="."] visible = false +offset_right = 50.0 +offset_bottom = 30.0 +scale = Vector2(2, 2) text = "[E]" -[connection signal="body_entered" from="Area3D" to="." method="OnPlayerEntered"] -[connection signal="body_exited" from="Area3D" to="." method="OnPlayerExited"] +[connection signal="body_entered" from="Area2D" to="." method="OnPlayerEntered"] +[connection signal="body_exited" from="Area2D" to="." method="OnPlayerExited"] diff --git a/project.godot b/project.godot index 68be768..7177af4 100644 --- a/project.godot +++ b/project.godot @@ -87,7 +87,8 @@ folder_colors={ "res://dialog/": "green", "res://prefabs/": "teal", "res://scenes/": "blue", -"res://scripts/": "purple" +"res://scripts/": "purple", +"res://shader/": "pink" } [input] diff --git a/scenes/Babushka_scene_farm_outside_2d.tscn b/scenes/Babushka_scene_farm_outside_2d.tscn index 4c7a592..3195e53 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=42 format=3 uid="uid://gigb28qk8t12"] +[gd_scene load_steps=44 format=3 uid="uid://gigb28qk8t12"] [ext_resource type="PackedScene" uid="uid://c25udixd5m6l0" path="res://prefabs/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"] @@ -11,19 +11,21 @@ [ext_resource type="Texture2D" uid="uid://b6k4vrgj745k" path="res://art/mockups/Kenney_Backgrounds/PNG/Flat/tree03.png" id="9_ubx8m"] [ext_resource type="Texture2D" uid="uid://dchn4jd4d7q3w" path="res://art/mockups/Kenney_Backgrounds/PNG/Flat/tree01.png" id="10_d53cn"] [ext_resource type="Texture2D" uid="uid://8ai3me0j0wi" path="res://art/mockups/Kenney_Backgrounds/PNG/Flat/tree04.png" id="11_1uen0"] +[ext_resource type="Texture2D" uid="uid://dxrc50i65wuc4" path="res://art/mockups/Jelena 2d/jelena_mockup_bg01.png" id="11_vbdb2"] [ext_resource type="Texture2D" uid="uid://g83vpep7rwwd" path="res://art/mockups/Kenney_Backgrounds/PNG/Flat/tree12.png" id="12_mrwmr"] +[ext_resource type="Texture2D" uid="uid://d0e8a7qsfkhy3" path="res://art/mockups/Jelena 2d/jelena_mockup_bg_02.png" id="13_0qu0h"] [ext_resource type="Texture2D" uid="uid://bqoyk3fsrmu1x" path="res://art/nature/baum märz 2025/back back trees.png" id="13_1uen0"] -[ext_resource type="Shader" uid="uid://do5og8uubh2m5" path="res://scenes/HSV.gdshader" id="13_7p0hq"] +[ext_resource type="Shader" uid="uid://do5og8uubh2m5" path="res://shader/HSV.gdshader" id="13_7p0hq"] [ext_resource type="Texture2D" uid="uid://dldk8n51ag8fh" path="res://art/nature/baum märz 2025/backtreebois team brandon.png" id="13_d53cn"] -[ext_resource type="Shader" uid="uid://xnky830dtfsn" path="res://scenes/repeat_texture.gdshader" id="13_kt1wx"] +[ext_resource type="Shader" uid="uid://xnky830dtfsn" path="res://shader/repeat_texture.gdshader" id="13_kt1wx"] [ext_resource type="Texture2D" uid="uid://bmjjfd5ngptxe" path="res://art/nature/baum märz 2025/backtreebois team kennedy.png" id="14_1uen0"] [ext_resource type="Texture2D" uid="uid://dv2jepy2el544" path="res://art/mockups/Kenney_Backgrounds/PNG/Flat/tree11.png" id="14_d53cn"] [ext_resource type="Texture2D" uid="uid://451bkvxcxab7" path="res://art/nature/baum märz 2025/gräser und büsche.png" id="14_mrwmr"] [ext_resource type="Texture2D" uid="uid://btea6eyucsyxj" path="res://art/farm/farming/farmobjekte/zaun/tilable fence middle part.png" id="20_if5vh"] [ext_resource type="Texture2D" uid="uid://3ed3dgq3irn2" path="res://art/farm/farming/farmobjekte/zaun/tilable fence end part2.png" id="21_if5vh"] [ext_resource type="Texture2D" uid="uid://dg7rlugnq0t45" path="res://art/farm/farming/farmobjekte/brünnen.png" id="21_ualyd"] -[ext_resource type="Texture2D" uid="uid://ctvdxwgmfaj5c" path="res://art/farm/tilable grounds/böden/nasse farming erde.png" id="23_0sfl7"] -[ext_resource type="Texture2D" uid="uid://c2pirgay3jfnn" path="res://art/farm/tilable grounds/böden/trockene farming erde.png" id="24_2vojv"] +[ext_resource type="Script" uid="uid://dhxtdhfqx3bte" path="res://scripts/CSharp/Common/Farming/FieldService2D.cs" id="25_0qu0h"] +[ext_resource type="PackedScene" uid="uid://b1d2e7ely6hyw" path="res://prefabs/farm/base_field_2d.tscn" id="26_vbdb2"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_xy0kg"] shader = ExtResource("13_7p0hq") @@ -103,42 +105,46 @@ size = Vector2(728, 368) [node name="ParallaxBackground" type="ParallaxBackground" parent="."] -[node name="background layer 0" type="ParallaxLayer" parent="ParallaxBackground"] +[node name="background color layer" type="ParallaxLayer" parent="ParallaxBackground"] +position = Vector2(0, -296) motion_scale = Vector2(0.1, 0.1) motion_mirroring = Vector2(2048, 0) -[node name="Sprite2D" type="Sprite2D" parent="ParallaxBackground/background layer 0"] +[node name="Sprite2D" type="Sprite2D" parent="ParallaxBackground/background color layer"] +modulate = Color(0.607706, 0.894469, 0.564721, 1) scale = Vector2(2, 2) texture = ExtResource("2_7b2ri") centered = false offset = Vector2(0, -100) -[node name="Sprite2D2" type="Sprite2D" parent="ParallaxBackground/background layer 0"] +[node name="Sprite2D2" type="Sprite2D" parent="ParallaxBackground/background color layer"] +modulate = Color(0.607706, 0.894469, 0.564721, 1) position = Vector2(4096, 0) scale = Vector2(2, 2) texture = ExtResource("2_7b2ri") centered = false offset = Vector2(0, -100) -[node name="background layer 1" type="ParallaxLayer" parent="ParallaxBackground"] +[node name="clouds layer" type="ParallaxLayer" parent="ParallaxBackground"] +position = Vector2(0, -296) motion_scale = Vector2(0.2, 0.2) motion_mirroring = Vector2(4096, 0) -[node name="Sprite2D" type="Sprite2D" parent="ParallaxBackground/background layer 1"] +[node name="Sprite2D" type="Sprite2D" parent="ParallaxBackground/clouds layer"] position = Vector2(792, 400) scale = Vector2(2, 2) texture = ExtResource("3_r34wi") centered = false offset = Vector2(0, -100) -[node name="Sprite2D2" type="Sprite2D" parent="ParallaxBackground/background layer 1"] +[node name="Sprite2D2" type="Sprite2D" parent="ParallaxBackground/clouds layer"] position = Vector2(2656, 272) scale = Vector2(2, 2) texture = ExtResource("4_xh22q") centered = false offset = Vector2(0, -100) -[node name="Sprite2D3" type="Sprite2D" parent="ParallaxBackground/background layer 1"] +[node name="Sprite2D3" type="Sprite2D" parent="ParallaxBackground/clouds layer"] position = Vector2(3240, 488) scale = Vector2(2, 2) texture = ExtResource("5_k3wpj") @@ -146,10 +152,13 @@ centered = false offset = Vector2(0, -100) [node name="background layer 3" type="ParallaxLayer" parent="ParallaxBackground"] +position = Vector2(0, -296) motion_scale = Vector2(0.3, 0.3) -motion_mirroring = Vector2(5998, 0) +motion_mirroring = Vector2(7274, 0) -[node name="hills" type="Sprite2D" parent="ParallaxBackground/background layer 3"] +[node name="Kenney assets" type="Node2D" parent="ParallaxBackground/background layer 3"] + +[node name="hills" type="Sprite2D" parent="ParallaxBackground/background layer 3/Kenney assets"] modulate = Color(0.709819, 0.713726, 0.717632, 1) position = Vector2(0, 1420) scale = Vector2(3, 3) @@ -157,7 +166,7 @@ texture = ExtResource("7_sbyqw") centered = false offset = Vector2(0, -100) -[node name="hills 1" type="Sprite2D" parent="ParallaxBackground/background layer 3"] +[node name="hills 1" type="Sprite2D" parent="ParallaxBackground/background layer 3/Kenney assets"] modulate = Color(0.709819, 0.713726, 0.717632, 1) position = Vector2(2999, 1420) scale = Vector2(3, 3) @@ -165,77 +174,85 @@ texture = ExtResource("8_kt1wx") centered = false offset = Vector2(0, -100) -[node name="tree" type="Sprite2D" parent="ParallaxBackground/background layer 3"] +[node name="tree" type="Sprite2D" parent="ParallaxBackground/background layer 3/Kenney assets"] modulate = Color(0.651194, 0.592081, 0.635554, 1) position = Vector2(376, 1136) scale = Vector2(2.33333, 1.64286) texture = ExtResource("9_ubx8m") -[node name="tree2" type="Sprite2D" parent="ParallaxBackground/background layer 3"] +[node name="tree2" type="Sprite2D" parent="ParallaxBackground/background layer 3/Kenney assets"] modulate = Color(0.651194, 0.592081, 0.635554, 1) position = Vector2(312, 1160) scale = Vector2(2.33333, 1.64286) texture = ExtResource("9_ubx8m") -[node name="tree3" type="Sprite2D" parent="ParallaxBackground/background layer 3"] +[node name="tree3" type="Sprite2D" parent="ParallaxBackground/background layer 3/Kenney assets"] modulate = Color(0.651194, 0.592081, 0.635554, 1) position = Vector2(216, 1072) scale = Vector2(1.46078, 0.957947) texture = ExtResource("10_d53cn") -[node name="tree4" type="Sprite2D" parent="ParallaxBackground/background layer 3"] +[node name="tree4" type="Sprite2D" parent="ParallaxBackground/background layer 3/Kenney assets"] modulate = Color(0.651194, 0.592081, 0.635554, 1) position = Vector2(104, 1128) scale = Vector2(2.33333, 1.64286) texture = ExtResource("9_ubx8m") -[node name="tree5" type="Sprite2D" parent="ParallaxBackground/background layer 3"] +[node name="tree5" type="Sprite2D" parent="ParallaxBackground/background layer 3/Kenney assets"] modulate = Color(0.651194, 0.592081, 0.635554, 1) position = Vector2(1640, 1088) scale = Vector2(2.33333, 1.64286) texture = ExtResource("9_ubx8m") -[node name="tree6" type="Sprite2D" parent="ParallaxBackground/background layer 3"] +[node name="tree6" type="Sprite2D" parent="ParallaxBackground/background layer 3/Kenney assets"] modulate = Color(0.651194, 0.592081, 0.635554, 1) position = Vector2(2456, 1256) scale = Vector2(2.33333, 1.64286) texture = ExtResource("9_ubx8m") -[node name="tree7" type="Sprite2D" parent="ParallaxBackground/background layer 3"] +[node name="tree7" type="Sprite2D" parent="ParallaxBackground/background layer 3/Kenney assets"] modulate = Color(0.651194, 0.592081, 0.635554, 1) position = Vector2(2392, 1288) scale = Vector2(2.33333, 1.64286) texture = ExtResource("9_ubx8m") -[node name="tree8" type="Sprite2D" parent="ParallaxBackground/background layer 3"] +[node name="tree8" type="Sprite2D" parent="ParallaxBackground/background layer 3/Kenney assets"] modulate = Color(0.651194, 0.592081, 0.635554, 1) position = Vector2(2568, 1200) scale = Vector2(1.33805, 0.991627) texture = ExtResource("11_1uen0") -[node name="tree9" type="Sprite2D" parent="ParallaxBackground/background layer 3"] +[node name="tree9" type="Sprite2D" parent="ParallaxBackground/background layer 3/Kenney assets"] modulate = Color(0.651194, 0.592081, 0.635554, 1) position = Vector2(3376, 1224) scale = Vector2(2.33333, 1.64286) texture = ExtResource("9_ubx8m") -[node name="tree10" type="Sprite2D" parent="ParallaxBackground/background layer 3"] +[node name="tree10" type="Sprite2D" parent="ParallaxBackground/background layer 3/Kenney assets"] modulate = Color(0.651194, 0.592081, 0.635554, 1) position = Vector2(3488, 1248) scale = Vector2(0.939717, 0.72619) texture = ExtResource("12_mrwmr") -[node name="tree11" type="Sprite2D" parent="ParallaxBackground/background layer 3"] +[node name="tree11" type="Sprite2D" parent="ParallaxBackground/background layer 3/Kenney assets"] modulate = Color(0.651194, 0.592081, 0.635554, 1) position = Vector2(4912, 1078.25) scale = Vector2(2.33333, 1.64286) texture = ExtResource("9_ubx8m") +[node name="JelenaMockupBg01" type="Sprite2D" parent="ParallaxBackground/background layer 3"] +visible = false +position = Vector2(3552, 1296) +scale = Vector2(1.7404, 1.77563) +texture = ExtResource("11_vbdb2") + [node name="background layer 4" type="ParallaxLayer" parent="ParallaxBackground"] motion_scale = Vector2(0.5, 0.5) motion_mirroring = Vector2(7998, 0) -[node name="hills" type="Sprite2D" parent="ParallaxBackground/background layer 4"] +[node name="Kenney Assets" type="Node2D" parent="ParallaxBackground/background layer 4"] + +[node name="hills" type="Sprite2D" parent="ParallaxBackground/background layer 4/Kenney Assets"] modulate = Color(0.525643, 0.556909, 0.560815, 1) position = Vector2(0, 1420) scale = Vector2(4, 4) @@ -243,7 +260,7 @@ texture = ExtResource("7_sbyqw") centered = false offset = Vector2(-200, -80) -[node name="hills 1" type="Sprite2D" parent="ParallaxBackground/background layer 4"] +[node name="hills 1" type="Sprite2D" parent="ParallaxBackground/background layer 4/Kenney Assets"] modulate = Color(0.525643, 0.556909, 0.560815, 1) position = Vector2(3999, 1420) scale = Vector2(4, 4) @@ -251,100 +268,106 @@ texture = ExtResource("8_kt1wx") centered = false offset = Vector2(-200, -80) -[node name="tree" type="Sprite2D" parent="ParallaxBackground/background layer 4"] +[node name="tree" type="Sprite2D" parent="ParallaxBackground/background layer 4/Kenney Assets"] modulate = Color(0.431357, 0.282353, 0.415717, 1) position = Vector2(128, 784) scale = Vector2(5.11066, 3.99823) texture = ExtResource("14_d53cn") -[node name="tree2" type="Sprite2D" parent="ParallaxBackground/background layer 4"] +[node name="tree2" type="Sprite2D" parent="ParallaxBackground/background layer 4/Kenney Assets"] modulate = Color(0.431357, 0.282353, 0.415717, 1) position = Vector2(976, 952) scale = Vector2(3.7465, 2.76803) texture = ExtResource("14_d53cn") -[node name="tree9" type="Sprite2D" parent="ParallaxBackground/background layer 4"] +[node name="tree9" type="Sprite2D" parent="ParallaxBackground/background layer 4/Kenney Assets"] modulate = Color(0.431357, 0.282353, 0.415717, 1) position = Vector2(1160, 976) scale = Vector2(3.7465, 2.76803) texture = ExtResource("14_d53cn") flip_h = true -[node name="tree3" type="Sprite2D" parent="ParallaxBackground/background layer 4"] +[node name="tree3" type="Sprite2D" parent="ParallaxBackground/background layer 4/Kenney Assets"] modulate = Color(0.431357, 0.282353, 0.415717, 1) position = Vector2(1368, 800) scale = Vector2(3.7465, 2.76803) texture = ExtResource("14_d53cn") -[node name="tree4" type="Sprite2D" parent="ParallaxBackground/background layer 4"] +[node name="tree4" type="Sprite2D" parent="ParallaxBackground/background layer 4/Kenney Assets"] modulate = Color(0.431357, 0.282353, 0.415717, 1) position = Vector2(2328, 880) scale = Vector2(3.7465, 2.76803) texture = ExtResource("14_d53cn") -[node name="tree5" type="Sprite2D" parent="ParallaxBackground/background layer 4"] +[node name="tree5" type="Sprite2D" parent="ParallaxBackground/background layer 4/Kenney Assets"] modulate = Color(0.431357, 0.282353, 0.415717, 1) position = Vector2(3112, 944) scale = Vector2(3.7465, 2.76803) texture = ExtResource("14_d53cn") -[node name="tree6" type="Sprite2D" parent="ParallaxBackground/background layer 4"] +[node name="tree6" type="Sprite2D" parent="ParallaxBackground/background layer 4/Kenney Assets"] modulate = Color(0.431357, 0.282353, 0.415717, 1) position = Vector2(4248, 960) scale = Vector2(3.7465, 2.76803) texture = ExtResource("14_d53cn") -[node name="tree10" type="Sprite2D" parent="ParallaxBackground/background layer 4"] +[node name="tree10" type="Sprite2D" parent="ParallaxBackground/background layer 4/Kenney Assets"] modulate = Color(0.431357, 0.282353, 0.415717, 1) position = Vector2(5376, 848) scale = Vector2(3.7465, 2.76803) texture = ExtResource("14_d53cn") flip_h = true -[node name="tree11" type="Sprite2D" parent="ParallaxBackground/background layer 4"] +[node name="tree11" type="Sprite2D" parent="ParallaxBackground/background layer 4/Kenney Assets"] modulate = Color(0.431357, 0.282353, 0.415717, 1) position = Vector2(5624, 976) scale = Vector2(2.93619, 1.96107) texture = ExtResource("14_d53cn") -[node name="tree12" type="Sprite2D" parent="ParallaxBackground/background layer 4"] +[node name="tree12" type="Sprite2D" parent="ParallaxBackground/background layer 4/Kenney Assets"] modulate = Color(0.431357, 0.282353, 0.415717, 1) position = Vector2(5856.97, 753.531) scale = Vector2(3.3702, 3.05266) texture = ExtResource("14_d53cn") -[node name="tree13" type="Sprite2D" parent="ParallaxBackground/background layer 4"] +[node name="tree13" type="Sprite2D" parent="ParallaxBackground/background layer 4/Kenney Assets"] modulate = Color(0.431357, 0.282353, 0.415717, 1) position = Vector2(6888, 912) scale = Vector2(3.3702, 3.05266) texture = ExtResource("14_d53cn") flip_h = true -[node name="tree14" type="Sprite2D" parent="ParallaxBackground/background layer 4"] +[node name="tree14" type="Sprite2D" parent="ParallaxBackground/background layer 4/Kenney Assets"] modulate = Color(0.431357, 0.282353, 0.415717, 1) position = Vector2(7088.48, 752.766) scale = Vector2(3.69909, 3.46732) texture = ExtResource("14_d53cn") -[node name="tree15" type="Sprite2D" parent="ParallaxBackground/background layer 4"] +[node name="tree15" type="Sprite2D" parent="ParallaxBackground/background layer 4/Kenney Assets"] modulate = Color(0.431357, 0.282353, 0.415717, 1) position = Vector2(7224, 888) scale = Vector2(3.1922, 3.25497) texture = ExtResource("14_d53cn") -[node name="tree7" type="Sprite2D" parent="ParallaxBackground/background layer 4"] +[node name="tree7" type="Sprite2D" parent="ParallaxBackground/background layer 4/Kenney Assets"] modulate = Color(0.431357, 0.282353, 0.415717, 1) position = Vector2(4392, 1152) scale = Vector2(2.55123, 1.88928) texture = ExtResource("14_d53cn") flip_h = true -[node name="tree8" type="Sprite2D" parent="ParallaxBackground/background layer 4"] +[node name="tree8" type="Sprite2D" parent="ParallaxBackground/background layer 4/Kenney Assets"] modulate = Color(0.431357, 0.282353, 0.415717, 1) position = Vector2(2944, 992) scale = Vector2(3.008, 2.76803) texture = ExtResource("14_d53cn") +[node name="JelenaMockupBg02" type="Sprite2D" parent="ParallaxBackground/background layer 4"] +visible = false +position = Vector2(3472, 1088) +scale = Vector2(1.7, 1.7) +texture = ExtResource("13_0qu0h") + [node name="back back trees layer" type="ParallaxLayer" parent="ParallaxBackground"] motion_scale = Vector2(0.7, 0.7) motion_mirroring = Vector2(4968, 0) @@ -530,6 +553,7 @@ region_enabled = true region_rect = Rect2(1834, -5, 733, 1360) [node name="ground layer" type="ParallaxLayer" parent="ParallaxBackground"] +position = Vector2(72, 208) motion_mirroring = Vector2(7998, 0) [node name="floortile00" type="Sprite2D" parent="ParallaxBackground/ground layer"] @@ -607,57 +631,32 @@ shape = SubResource("RectangleShape2D_klb81") [node name="Farm visuals" type="Node2D" parent="."] -[node name="feld" type="Sprite2D" parent="Farm visuals"] -position = Vector2(11136, 2592) -texture = ExtResource("23_0sfl7") - -[node name="feld2" type="Sprite2D" parent="Farm visuals"] -position = Vector2(11136, 3240) -texture = ExtResource("23_0sfl7") - -[node name="feld3" type="Sprite2D" parent="Farm visuals"] -position = Vector2(11872, 2592) -texture = ExtResource("23_0sfl7") - -[node name="feld4" type="Sprite2D" parent="Farm visuals"] -position = Vector2(11872, 3240) -texture = ExtResource("23_0sfl7") - -[node name="TrockeneFarmingErde" type="Sprite2D" parent="Farm visuals"] -position = Vector2(13568, 2576) -texture = ExtResource("24_2vojv") +[node name="Static" type="Node2D" parent="Farm visuals"] -[node name="TrockeneFarmingErde2" type="Sprite2D" parent="Farm visuals"] -position = Vector2(13568, 3312) -texture = ExtResource("24_2vojv") - -[node name="TrockeneFarmingErde3" type="Sprite2D" parent="Farm visuals"] -position = Vector2(14392, 3304) -texture = ExtResource("24_2vojv") - -[node name="TrockeneFarmingErde4" type="Sprite2D" parent="Farm visuals"] -position = Vector2(14384, 2568) -texture = ExtResource("24_2vojv") - -[node name="House Mockup" type="Sprite2D" parent="Farm visuals"] +[node name="House Mockup" type="Sprite2D" parent="Farm visuals/Static"] material = SubResource("ShaderMaterial_lhtpe") position = Vector2(5280, 1600) scale = Vector2(5, 5) texture = ExtResource("2_lhtpe") -[node name="StaticBody2D" type="StaticBody2D" parent="Farm visuals/House Mockup"] +[node name="StaticBody2D" type="StaticBody2D" parent="Farm visuals/Static/House Mockup"] -[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Farm visuals/House Mockup/StaticBody2D"] +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Farm visuals/Static/House Mockup/StaticBody2D"] position = Vector2(-257.6, 236.8) polygon = PackedVector2Array(232, -4.80005, 0, 0, 0, -96, -262.4, -97.6, -265.6, -260.8, -310.4, -260.8, -235.2, -321.6, -124.8, -323.2, -57.6, -424, 84.8, -436.8, 118.4, -452.8, 136, -436.8, 726.4, -452.8, 817.6, -299.2, 785.6, -291.2, 785.6, -108.8, 241.6, -94.4) +[node name="FieldService2D" type="Node2D" parent="Farm visuals"] +script = ExtResource("25_0qu0h") +metadata/_custom_type_script = "uid://dhxtdhfqx3bte" + [node name="YSorted" type="Node2D" parent="."] z_index = 1 y_sort_enabled = true -[node name="Player2d" parent="YSorted" instance=ExtResource("1_7wfwe")] +[node name="Player2d" parent="YSorted" node_paths=PackedStringArray("_fieldParent") instance=ExtResource("1_7wfwe")] z_index = 1 position = Vector2(1064, 2128) +_fieldParent = NodePath("../../Farm visuals/FieldService2D") [node name="Brünnen" type="Sprite2D" parent="YSorted"] z_index = 1 @@ -672,3 +671,15 @@ offset = Vector2(0, -800) [node name="CollisionShape2D" type="CollisionShape2D" parent="YSorted/Brünnen/StaticBody2D"] position = Vector2(116, -224) shape = SubResource("RectangleShape2D_0sfl7") + +[node name="BaseField" parent="." instance=ExtResource("26_vbdb2")] +position = Vector2(11280, 2560) + +[node name="BaseField2" parent="." instance=ExtResource("26_vbdb2")] +position = Vector2(11280, 3304) + +[node name="BaseField3" parent="." instance=ExtResource("26_vbdb2")] +position = Vector2(12080, 3296) + +[node name="BaseField4" parent="." instance=ExtResource("26_vbdb2")] +position = Vector2(12080, 2544) diff --git a/scenes/HSV.gdshader b/scenes/HSV.gdshader deleted file mode 100644 index 018b9bb..0000000 --- a/scenes/HSV.gdshader +++ /dev/null @@ -1,92 +0,0 @@ -shader_type canvas_item; - -// Hue is in normalized value [0.0, 1.0] where 0.0 means no change. -// For example, 0.1 shifts hue by 36° (0.1 * 360°). -uniform float hue_shift : hint_range(-1.0, 1.0) = 0.0; -// Saturation multiplier. 1.0 means no change. -uniform float saturation_mult : hint_range(0.0, 2.0) = 1.0; -// Value (brightness in HSV) multiplier. 1.0 means no change. -uniform float value_mult : hint_range(0.0, 2.0) = 1.0; -// Brightness addition in RGB space. 0.0 means no change. -uniform float brightness_add : hint_range(-1.0, 1.0) = 0.0; -// Contrast multiplier in RGB space. 1.0 means no change. -uniform float contrast_mult : hint_range(0.0, 2.0) = 1.0; - -// Converts an RGB color to HSV. -vec3 rgb2hsv(vec3 c) { - float cMax = max(max(c.r, c.g), c.b); - float cMin = min(min(c.r, c.g), c.b); - float delta = cMax - cMin; - - float h = 0.0; - if(delta < 0.00001) { - h = 0.0; - } else if(cMax == c.r) { - h = mod(((c.g - c.b) / delta), 6.0); - } else if(cMax == c.g) { - h = ((c.b - c.r) / delta) + 2.0; - } else { - h = ((c.r - c.g) / delta) + 4.0; - } - h /= 6.0; - if(h < 0.0) h += 1.0; - - float s = (cMax <= 0.0) ? 0.0 : (delta / cMax); - float v = cMax; - return vec3(h, s, v); -} - -// Converts an HSV color back to RGB. -vec3 hsv2rgb(vec3 c) { - float h = c.x * 6.0; - float s = c.y; - float v = c.z; - - float c_val = v * s; - float x = c_val * (1.0 - abs(mod(h, 2.0) - 1.0)); - vec3 rgb; - - if (0.0 <= h && h < 1.0) { - rgb = vec3(c_val, x, 0.0); - } else if (1.0 <= h && h < 2.0) { - rgb = vec3(x, c_val, 0.0); - } else if (2.0 <= h && h < 3.0) { - rgb = vec3(0.0, c_val, x); - } else if (3.0 <= h && h < 4.0) { - rgb = vec3(0.0, x, c_val); - } else if (4.0 <= h && h < 5.0) { - rgb = vec3(x, 0.0, c_val); - } else if (5.0 <= h && h < 6.0) { - rgb = vec3(c_val, 0.0, x); - } else { - rgb = vec3(0.0, 0.0, 0.0); - } - float m = v - c_val; - return rgb + vec3(m); -} - -void fragment() { - // Get the original texture color. - vec4 tex_color = texture(TEXTURE, UV); - vec3 col = tex_color.rgb; - - // Adjust brightness and contrast in RGB space. - // The contrast formula shifts the color around mid-gray (0.5). - col = (col - 0.5) * contrast_mult + 0.5 + brightness_add; - - // Convert to HSV to adjust hue, saturation, and value. - vec3 hsv = rgb2hsv(col); - - // Apply hue shift and wrap the value [0,1]. - hsv.x = mod(hsv.x + hue_shift, 1.0); - - // Adjust saturation and value multipliers. - hsv.y *= saturation_mult; - hsv.z *= value_mult; - - // Convert back to RGB. - col = hsv2rgb(hsv); - - // Output the final color while preserving the original alpha. - COLOR = vec4(col, tex_color.a); -} diff --git a/scenes/HSV.gdshader.uid b/scenes/HSV.gdshader.uid deleted file mode 100644 index 3c6b325..0000000 --- a/scenes/HSV.gdshader.uid +++ /dev/null @@ -1 +0,0 @@ -uid://do5og8uubh2m5 diff --git a/scenes/IndoorTest.tscn b/scenes/IndoorTest.tscn index f31c8a7..978027e 100644 --- a/scenes/IndoorTest.tscn +++ b/scenes/IndoorTest.tscn @@ -14,7 +14,7 @@ region_rect = Rect2(111, 292, 3323, 2160) [node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="background/StaticBody2D"] position = Vector2(-1195, 1075) -polygon = PackedVector2Array(-467, -7, -472, -1988, 1922, -1684, 2851, -1753, 2860, -260, 1679, -421, -26, -12, -430, -7) +polygon = PackedVector2Array(-467, -7, -472, -1988, 1922, -1684, 2851, -1753, 2851, -515, 1699, -579, -205, -155, -430, -7) [node name="middleground" type="Sprite2D" parent="."] position = Vector2(-234, 864) diff --git a/scenes/repeat_texture.gdshader b/scenes/repeat_texture.gdshader deleted file mode 100644 index 0a00989..0000000 --- a/scenes/repeat_texture.gdshader +++ /dev/null @@ -1,10 +0,0 @@ -shader_type canvas_item; - -uniform vec2 tiling_scale = vec2(5.0, 5.0); -uniform sampler2D noise : repeat_enable; - -void fragment() { - vec2 uv = vec2(UV.x * tiling_scale.x, UV.y * tiling_scale.y); // Change 10.0 to control tiling scale - COLOR = texture(TEXTURE, fract(uv)); -} - diff --git a/scenes/repeat_texture.gdshader.uid b/scenes/repeat_texture.gdshader.uid deleted file mode 100644 index 2154e3a..0000000 --- a/scenes/repeat_texture.gdshader.uid +++ /dev/null @@ -1 +0,0 @@ -uid://xnky830dtfsn diff --git a/scenes/testing/abandoned_street_3d.tscn b/scenes/testing/abandoned_street_3d.tscn index 879ce08..0af4466 100644 --- a/scenes/testing/abandoned_street_3d.tscn +++ b/scenes/testing/abandoned_street_3d.tscn @@ -1262,7 +1262,6 @@ texture = ExtResource("13_gcssn") [node name="semi_cat" type="Sprite3D" parent="."] transform = Transform3D(0.04, 0, 0, 0, 0.04, 0, 0, 0, 0.04, -0.568754, 0.116035, -0.275782) -visible = false billboard = 1 shaded = true texture = ExtResource("14_qxv15") diff --git a/scripts/CSharp/Common/Farming/FieldService2D.cs b/scripts/CSharp/Common/Farming/FieldService2D.cs index 7b6f9b4..e82e884 100644 --- a/scripts/CSharp/Common/Farming/FieldService2D.cs +++ b/scripts/CSharp/Common/Farming/FieldService2D.cs @@ -3,6 +3,7 @@ using Godot.Collections; namespace Babushka.scripts.CSharp.Common.Farming; +[GlobalClass] public partial class FieldService2D : Node2D { [Export] private Dictionary fields = new Dictionary(); diff --git a/scripts/CSharp/Common/Farming/PlantBehaviour2D.cs b/scripts/CSharp/Common/Farming/PlantBehaviour2D.cs new file mode 100644 index 0000000..73554f1 --- /dev/null +++ b/scripts/CSharp/Common/Farming/PlantBehaviour2D.cs @@ -0,0 +1,64 @@ +using System; +using Godot; + +namespace Babushka.scripts.CSharp.Common.Farming; + +/// +/// Determines the behaviour of a plant in Babushka. +/// +public partial class PlantBehaviour2D : Node2D +{ + [Export] private Sprite2D[] _seeds; + [Export] private Sprite2D[] _smallPlants; + [Export] private Sprite2D[] _bigPlants; + [Export] private Sprite2D[] _readyPlants; + [Export] private PlantState _state = PlantState.None; + + private Sprite2D _currentPlantSprite = null; + + /// + /// Transitions the plant to its next groth stage. + /// + public void Grow() + { + switch (_state) + { + case PlantState.None: + _state = PlantState.Planted; + _currentPlantSprite = GetRandomSprite(_seeds); + _currentPlantSprite.Visible = true; + break; + case PlantState.Planted: + _state = PlantState.SmallPlant; + _currentPlantSprite.Visible = false; + _currentPlantSprite = GetRandomSprite(_smallPlants); + _currentPlantSprite.Visible = true; + break; + case PlantState.SmallPlant: + _state = PlantState.BigPlant; + _currentPlantSprite.Visible = false; + _currentPlantSprite = GetRandomSprite(_bigPlants); + _currentPlantSprite.Visible = true; + break; + case PlantState.BigPlant: + _state = PlantState.Ready; + _currentPlantSprite.Visible = false; + _currentPlantSprite = GetRandomSprite(_readyPlants); + _currentPlantSprite.Visible = true; + break; + case PlantState.Ready: + _state = PlantState.None; + _currentPlantSprite.Visible = false; + _currentPlantSprite = null; + break; + default: + break; + } + } + + private Sprite2D GetRandomSprite(Sprite2D[] sprites) + { + Random rand = new Random(); + return sprites[rand.Next(sprites.Length)]; + } +} \ No newline at end of file diff --git a/scripts/CSharp/Common/Farming/VesnaBehaviour2D.cs b/scripts/CSharp/Common/Farming/VesnaBehaviour2D.cs index 6f7fc0d..eb02e36 100644 --- a/scripts/CSharp/Common/Farming/VesnaBehaviour2D.cs +++ b/scripts/CSharp/Common/Farming/VesnaBehaviour2D.cs @@ -5,8 +5,8 @@ namespace Babushka.scripts.CSharp.Common.Farming; public partial class VesnaBehaviour2D : Node { [ExportGroup("Farming")] - [Export] private FieldService _fieldParent; - [Export] private FarmingControls _farmingControls; + [Export] private FieldService2D _fieldParent; + [Export] private FarmingControls2D _farmingControls; [Signal] public delegate void ToolPickupEventHandler(bool success);