Compare commits

...

7 Commits

Author SHA1 Message Date
kziolkowski 8299998a0f Added fence to the left part of the farm 2025-04-26 15:15:38 +02:00
kziolkowski 5ea6431216 Added tree prefabs and a forest border around the farm 2025-04-26 14:51:56 +02:00
kziolkowski 762a694be3 Spawning and watering is now bound to the cursor position (kinda) 2025-04-25 00:13:50 +02:00
kziolkowski 339428c312 Basic watering functionality implemented 2025-04-24 23:36:23 +02:00
kziolkowski 7e19268847 Merge remote-tracking branch 'origin/main' into c_sharp_setup
# Conflicts:
#	scripts/CSharp/Common/CharacterControls/VesnaBehaviour.cs.uid
#	scripts/CSharp/Common/Farming/FieldService.cs.uid
2025-04-24 21:22:56 +02:00
kziolkowski 20b37de108 generated files 2025-04-24 21:22:14 +02:00
kziolkowski c73d3ff370 Reworked the fieldservice 2025-04-14 18:00:10 +02:00
46 changed files with 1880 additions and 179 deletions
+6
View File
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="AndroidProjectSystem">
<option name="providerId" value="RiderAndroidProjectSystem" />
</component>
</project>
+10
View File
@@ -0,0 +1,10 @@
<component name="libraryTable">
<library name="GdSdk Master" type="GdScript">
<properties path="$USER_HOME$/.cache/JetBrains/Rider2025.1/projects/.idea.babushka.a4de4632/sdk/GdSdk Master" version="Master" date="2024-06-01T15:14:16.000+02:00" />
<CLASSES />
<JAVADOC />
<SOURCES>
<root url="file://$USER_HOME$/.cache/JetBrains/Rider2025.1/projects/.idea.babushka.a4de4632/sdk/GdSdk Master" />
</SOURCES>
</library>
</component>
+2 -1
View File
@@ -1,2 +1,3 @@
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AArea3D_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003F8a54226fa2e1c9371a8091f24cfd744aef11fe6869527dc23b9b837623a29b9_003FArea3D_002Ecs/@EntryIndexedValue">ForceIncluded</s:String></wpf:ResourceDictionary>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AArea3D_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003F8a54226fa2e1c9371a8091f24cfd744aef11fe6869527dc23b9b837623a29b9_003FArea3D_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACastHelpers_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fd111abf504bf42b5968a609b168fd093b2e200_003Fbb_003F1c116fcd_003FCastHelpers_002Ecs/@EntryIndexedValue">ForceIncluded</s:String></wpf:ResourceDictionary>
@@ -3,25 +3,26 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://csig0r8rffflt"
path="res://.godot/imported/fence part end part.png-eb57fa6bd3b30e6dbbabec560b997ff4.ctex"
path.s3tc="res://.godot/imported/fence part end part.png-eb57fa6bd3b30e6dbbabec560b997ff4.s3tc.ctex"
metadata={
"vram_texture": false
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://art/farm/farming/farmobjekte/zaun/fence part end part.png"
dest_files=["res://.godot/imported/fence part end part.png-eb57fa6bd3b30e6dbbabec560b997ff4.ctex"]
dest_files=["res://.godot/imported/fence part end part.png-eb57fa6bd3b30e6dbbabec560b997ff4.s3tc.ctex"]
[params]
compress/mode=0
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@@ -31,4 +32,4 @@ process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
detect_3d/compress_to=0
@@ -3,25 +3,26 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://3ed3dgq3irn2"
path="res://.godot/imported/tilable fence end part2.png-94f622b7b49f085aaaf4ff258b729767.ctex"
path.s3tc="res://.godot/imported/tilable fence end part2.png-94f622b7b49f085aaaf4ff258b729767.s3tc.ctex"
metadata={
"vram_texture": false
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://art/farm/farming/farmobjekte/zaun/tilable fence end part2.png"
dest_files=["res://.godot/imported/tilable fence end part2.png-94f622b7b49f085aaaf4ff258b729767.ctex"]
dest_files=["res://.godot/imported/tilable fence end part2.png-94f622b7b49f085aaaf4ff258b729767.s3tc.ctex"]
[params]
compress/mode=0
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@@ -31,4 +32,4 @@ process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
detect_3d/compress_to=0
@@ -3,25 +3,26 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://btea6eyucsyxj"
path="res://.godot/imported/tilable fence middle part.png-2b7fa49db8ce3ad309b2d3a36ce1c2d8.ctex"
path.s3tc="res://.godot/imported/tilable fence middle part.png-2b7fa49db8ce3ad309b2d3a36ce1c2d8.s3tc.ctex"
metadata={
"vram_texture": false
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://art/farm/farming/farmobjekte/zaun/tilable fence middle part.png"
dest_files=["res://.godot/imported/tilable fence middle part.png-2b7fa49db8ce3ad309b2d3a36ce1c2d8.ctex"]
dest_files=["res://.godot/imported/tilable fence middle part.png-2b7fa49db8ce3ad309b2d3a36ce1c2d8.s3tc.ctex"]
[params]
compress/mode=0
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@@ -31,4 +32,4 @@ process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
detect_3d/compress_to=0
@@ -3,25 +3,26 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://hlgoftb0fv34"
path="res://.godot/imported/brüchiger beton boden.png-0b5172f7b057f0d0b99c85a5f3345e5d.ctex"
path.s3tc="res://.godot/imported/brüchiger beton boden.png-0b5172f7b057f0d0b99c85a5f3345e5d.s3tc.ctex"
metadata={
"vram_texture": false
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://art/farm/tilable grounds/böden/brüchiger beton boden.png"
dest_files=["res://.godot/imported/brüchiger beton boden.png-0b5172f7b057f0d0b99c85a5f3345e5d.ctex"]
dest_files=["res://.godot/imported/brüchiger beton boden.png-0b5172f7b057f0d0b99c85a5f3345e5d.s3tc.ctex"]
[params]
compress/mode=0
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@@ -31,4 +32,4 @@ process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
detect_3d/compress_to=0
+6 -4
View File
@@ -1,6 +1,8 @@
[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://p1mf3uc4k164"]
[ext_resource type="Texture2D" uid="uid://lvhbicmwqab5" path="res://art/farm/tilable grounds/böden/fruchtbarer wilder trockender boden.png" id="1_e2qgx"]
[gd_resource type="StandardMaterial3D" format=3 uid="uid://p1mf3uc4k164"]
[resource]
albedo_texture = ExtResource("1_e2qgx")
specular_mode = 2
albedo_color = Color(0.49, 0.398697, 0.2793, 1)
metallic_specular = 0.0
uv1_scale = Vector3(0, 0, 0)
uv2_scale = Vector3(0, 0, 0)
@@ -4,12 +4,11 @@ importer="scene"
importer_version=1
type="PackedScene"
uid="uid://b3kyrsoobmkhp"
path="res://.godot/imported/best_house_blender.blend-ac89c74aef2f275bdf4b4baadee17c0c.scn"
valid=false
[deps]
source_file="res://art/mockups/3d/best_house_blender.blend"
dest_files=["res://.godot/imported/best_house_blender.blend-ac89c74aef2f275bdf4b4baadee17c0c.scn"]
[params]
@@ -3,25 +3,26 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://bqoyk3fsrmu1x"
path="res://.godot/imported/back back trees.png-f8e57b189f3dbb8d5828a7e25cf1218a.ctex"
path.s3tc="res://.godot/imported/back back trees.png-f8e57b189f3dbb8d5828a7e25cf1218a.s3tc.ctex"
metadata={
"vram_texture": false
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://art/nature/baum märz 2025/back back trees.png"
dest_files=["res://.godot/imported/back back trees.png-f8e57b189f3dbb8d5828a7e25cf1218a.ctex"]
dest_files=["res://.godot/imported/back back trees.png-f8e57b189f3dbb8d5828a7e25cf1218a.s3tc.ctex"]
[params]
compress/mode=0
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@@ -31,4 +32,4 @@ process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
detect_3d/compress_to=0
@@ -3,25 +3,26 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://dldk8n51ag8fh"
path="res://.godot/imported/backtreebois team brandon.png-c601ba2be10a9cdf81f2ba68e5f80d2f.ctex"
path.s3tc="res://.godot/imported/backtreebois team brandon.png-c601ba2be10a9cdf81f2ba68e5f80d2f.s3tc.ctex"
metadata={
"vram_texture": false
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://art/nature/baum märz 2025/backtreebois team brandon.png"
dest_files=["res://.godot/imported/backtreebois team brandon.png-c601ba2be10a9cdf81f2ba68e5f80d2f.ctex"]
dest_files=["res://.godot/imported/backtreebois team brandon.png-c601ba2be10a9cdf81f2ba68e5f80d2f.s3tc.ctex"]
[params]
compress/mode=0
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@@ -31,4 +32,4 @@ process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
detect_3d/compress_to=0
@@ -3,25 +3,26 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://bmjjfd5ngptxe"
path="res://.godot/imported/backtreebois team kennedy.png-b23d74c73364ddab646797555fa6b353.ctex"
path.s3tc="res://.godot/imported/backtreebois team kennedy.png-b23d74c73364ddab646797555fa6b353.s3tc.ctex"
metadata={
"vram_texture": false
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://art/nature/baum märz 2025/backtreebois team kennedy.png"
dest_files=["res://.godot/imported/backtreebois team kennedy.png-b23d74c73364ddab646797555fa6b353.ctex"]
dest_files=["res://.godot/imported/backtreebois team kennedy.png-b23d74c73364ddab646797555fa6b353.s3tc.ctex"]
[params]
compress/mode=0
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@@ -31,4 +32,4 @@ process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
detect_3d/compress_to=0
+3 -4
View File
@@ -3,7 +3,7 @@
[ext_resource type="Script" uid="uid://b4ugrget2x6lb" path="res://scripts/CSharp/Common/CharacterControls/Player3D.cs" id="1_3trg2"]
[ext_resource type="Script" uid="uid://bblprbhnbyv77" path="res://scripts/CSharp/Common/CharacterControls/VesnaBehaviour.cs" id="1_pkl5l"]
[ext_resource type="Texture2D" uid="uid://duaideiajsu8r" path="res://art/characters/Vesna/babushka concept art vesna.png" id="2_3trg2"]
[ext_resource type="PackedScene" uid="uid://biwd3jj65qrlh" path="res://prefabs/farming/base_field.tscn" id="2_oq5hi"]
[ext_resource type="PackedScene" uid="uid://biwd3jj65qrlh" path="res://prefabs/farm/base_field.tscn" id="2_oq5hi"]
[ext_resource type="Texture2D" uid="uid://c4ggew55w0icj" path="res://art/farm/farming/farmobjekte/harke.png" id="4_kngqo"]
[ext_resource type="Script" uid="uid://b1sscdr4ptec8" path="res://scripts/CSharp/Common/Farming/FarmingControls.cs" id="4_q5t2e"]
[ext_resource type="Texture2D" uid="uid://x8hr8287ff2n" path="res://art/farm/farming/farmobjekte/tools atlas.png" id="5_pkl5l"]
@@ -1337,12 +1337,11 @@ sprite_frames = SubResource("SpriteFrames_4q8ml")
autoplay = "default"
frame_progress = 0.481133
[node name="FarmingControls" type="Node3D" parent="." node_paths=PackedStringArray("_hoeSprite", "_wateringCanSprite", "_movingPlayer")]
[node name="FarmingControls" type="Node3D" parent="." node_paths=PackedStringArray("_hoeSprite", "_wateringCanSprite", "_movingPlayer", "_camera")]
script = ExtResource("4_q5t2e")
_hoeSprite = NodePath("../CharacterBody3D/Farming/Hoe")
_wateringCanSprite = NodePath("../CharacterBody3D/Farming/Watering can")
_fieldPrefab = ExtResource("2_oq5hi")
_movingPlayer = NodePath("../CharacterBody3D")
_camera = NodePath("../CharacterBody3D/CameraPivot2/SubPivot/Camera3D")
metadata/_custom_type_script = "uid://b1sscdr4ptec8"
[connection signal="WaterField" from="FarmingControls" to="." method="UseWateringCan"]
+1 -1
View File
@@ -1,6 +1,6 @@
[gd_scene load_steps=5 format=3 uid="uid://cgjc4wurbgimy"]
[ext_resource type="Script" uid="uid://b7vlkecrn0t5c" path="res://scripts/CSharp/Common/Inventory/InventoryUi.cs" id="1_6wusm"]
[ext_resource type="Script" uid="uid://hg7jay2kt441" path="res://scripts/CSharp/Common/Inventory/InventoryUi.cs" id="1_6wusm"]
[ext_resource type="Script" uid="uid://b2jhdxcrhtm2d" path="res://scripts/CSharp/Common/Inventory/InventoryTestScript.cs" id="3_exrk4"]
[ext_resource type="Resource" uid="uid://datee0flk1e84" path="res://resources/items/pickaxe.tres" id="4_5fdxq"]
[ext_resource type="Texture2D" uid="uid://c7wqla0mbu3np" path="res://graphics/ui/babushka_ui_tmp_inventory_select.png" id="4_tiss4"]
@@ -1,8 +1,9 @@
[gd_scene load_steps=6 format=3 uid="uid://biwd3jj65qrlh"]
[gd_scene load_steps=7 format=3 uid="uid://biwd3jj65qrlh"]
[ext_resource type="Texture2D" uid="uid://c2pirgay3jfnn" path="res://art/farm/tilable grounds/böden/trockene farming erde.png" id="1_2cisk"]
[ext_resource type="Script" uid="uid://histmmyi1wr" path="res://scripts/CSharp/Common/Farming/FieldBehaviour.cs" id="2_u7egi"]
[ext_resource type="PackedScene" uid="uid://bjhj1wa5olwcu" path="res://prefabs/farming/base_plant.tscn" id="4_u7egi"]
[ext_resource type="Texture2D" uid="uid://ctvdxwgmfaj5c" path="res://art/farm/tilable grounds/böden/nasse farming erde.png" id="4_lsseu"]
[ext_resource type="PackedScene" uid="uid://bjhj1wa5olwcu" path="res://prefabs/farm/base_plant.tscn" id="4_u7egi"]
[ext_resource type="PackedScene" uid="uid://ob04y3syvo0e" path="res://prefabs/interaction_area.tscn" id="4_xc4m0"]
[sub_resource type="SphereShape3D" id="SphereShape3D_u7egi"]
@@ -18,17 +19,20 @@ _showLabel = false
[node name="CollisionShape3D" parent="InteractionArea/Area3D" index="0"]
shape = SubResource("SphereShape3D_u7egi")
[node name="Sprite3D" type="Sprite3D" parent="."]
[node name="FieldBehaviour" type="Sprite3D" parent="."]
transform = Transform3D(0.4, 0, 0, 0, -1.74846e-08, -0.4, 0, 0.4, -1.74846e-08, 0, 0, 0)
pixel_size = 0.004
texture = ExtResource("1_2cisk")
script = ExtResource("2_u7egi")
Tilled = ExtResource("1_2cisk")
Watered = ExtResource("4_lsseu")
FieldState = 1
metadata/_custom_type_script = "uid://histmmyi1wr"
[node name="BasePlant" parent="Sprite3D" instance=ExtResource("4_u7egi")]
[node name="BasePlant" parent="FieldBehaviour" node_paths=PackedStringArray("_seeds", "_smallPlants", "_bigPlants", "_readyPlants") instance=ExtResource("4_u7egi")]
transform = Transform3D(0.5, 0, 0, 0, -2.18557e-08, 0.5, 0, -0.5, -2.18557e-08, 0, 0, 0)
[connection signal="Interacted" from="InteractionArea" to="Sprite3D/BasePlant" method="Grow"]
_seeds = [null, null, null]
_smallPlants = [null, null, null, null]
_bigPlants = [null, null, null, null]
_readyPlants = [null, null, null, null]
[editable path="InteractionArea"]
@@ -1,17 +1,17 @@
[gd_scene load_steps=7 format=3 uid="uid://bjhj1wa5olwcu"]
[ext_resource type="Script" uid="uid://yfnjmuuxs3oq" path="res://scripts/CSharp/Common/Farming/PlantBehaviour.cs" id="1_l3nrf"]
[ext_resource type="Texture2D" uid="uid://dtr4uga5uspg" path="res://art/farm/farming/farmobjekte/tomaten/tomaten baby.png" id="2_7tw6v"]
[ext_resource type="Texture2D" uid="uid://b2gu6ur2xc7s4" path="res://art/farm/farming/farmobjekte/tomaten/tomaten blume.png" id="3_6u2og"]
[ext_resource type="Texture2D" uid="uid://cnwd3mb3jnuxm" path="res://art/farm/farming/farmobjekte/tomaten/teen adulte tomaten.png" id="4_1pcfs"]
[ext_resource type="PackedScene" uid="uid://ob04y3syvo0e" path="res://prefabs/interaction_area.tscn" id="5_6kt4q"]
[ext_resource type="Script" uid="uid://yfnjmuuxs3oq" path="res://scripts/CSharp/Common/Farming/PlantBehaviour.cs" id="1_0sfu3"]
[ext_resource type="Texture2D" uid="uid://dtr4uga5uspg" path="res://art/farm/farming/farmobjekte/tomaten/tomaten baby.png" id="2_l7215"]
[ext_resource type="Texture2D" uid="uid://b2gu6ur2xc7s4" path="res://art/farm/farming/farmobjekte/tomaten/tomaten blume.png" id="3_g3ydi"]
[ext_resource type="Texture2D" uid="uid://cnwd3mb3jnuxm" path="res://art/farm/farming/farmobjekte/tomaten/teen adulte tomaten.png" id="4_7hsvc"]
[ext_resource type="PackedScene" uid="uid://ob04y3syvo0e" path="res://prefabs/interaction_area.tscn" id="5_n6ufi"]
[sub_resource type="SphereShape3D" id="SphereShape3D_l3nrf"]
resource_local_to_scene = true
radius = 2.0
[node name="BasePlant" type="Node3D" node_paths=PackedStringArray("_seeds", "_smallPlants", "_bigPlants", "_readyPlants")]
script = ExtResource("1_l3nrf")
script = ExtResource("1_0sfu3")
_seeds = [NodePath("Seeds/TomatoSeed"), NodePath("Seeds/TomatoSeed2"), NodePath("Seeds/TomatoSeed3")]
_smallPlants = [NodePath("SmallPlant/01"), NodePath("SmallPlant/02"), NodePath("SmallPlant/03"), NodePath("SmallPlant/04")]
_bigPlants = [NodePath("BigPlant/01"), NodePath("BigPlant/02"), NodePath("BigPlant/03"), NodePath("BigPlant/04")]
@@ -25,7 +25,7 @@ visible = false
flip_v = true
billboard = 1
render_priority = 2
texture = ExtResource("2_7tw6v")
texture = ExtResource("2_l7215")
region_enabled = true
region_rect = Rect2(-2, 15, 85, 81)
@@ -34,7 +34,7 @@ visible = false
flip_v = true
billboard = 1
render_priority = 2
texture = ExtResource("2_7tw6v")
texture = ExtResource("2_l7215")
region_enabled = true
region_rect = Rect2(15, 177, 84, 108)
@@ -43,7 +43,7 @@ visible = false
flip_v = true
billboard = 1
render_priority = 2
texture = ExtResource("2_7tw6v")
texture = ExtResource("2_l7215")
region_enabled = true
region_rect = Rect2(3, 337, 85, 82)
@@ -54,7 +54,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
visible = false
billboard = 1
render_priority = 3
texture = ExtResource("2_7tw6v")
texture = ExtResource("2_l7215")
region_enabled = true
region_rect = Rect2(203, 1, 128, 164)
@@ -62,7 +62,7 @@ region_rect = Rect2(203, 1, 128, 164)
visible = false
billboard = 1
render_priority = 3
texture = ExtResource("2_7tw6v")
texture = ExtResource("2_l7215")
region_enabled = true
region_rect = Rect2(218, 204, 112, 130)
@@ -70,7 +70,7 @@ region_rect = Rect2(218, 204, 112, 130)
visible = false
billboard = 1
render_priority = 3
texture = ExtResource("2_7tw6v")
texture = ExtResource("2_l7215")
region_enabled = true
region_rect = Rect2(224, 399, 105, 105)
@@ -78,7 +78,7 @@ region_rect = Rect2(224, 399, 105, 105)
visible = false
billboard = 1
render_priority = 3
texture = ExtResource("2_7tw6v")
texture = ExtResource("2_l7215")
region_enabled = true
region_rect = Rect2(228, 600, 85, 92)
@@ -90,7 +90,7 @@ visible = false
pixel_size = 0.007
billboard = 1
render_priority = 3
texture = ExtResource("3_6u2og")
texture = ExtResource("3_g3ydi")
region_enabled = true
region_rect = Rect2(-8, 1, 498, 682)
@@ -99,7 +99,7 @@ visible = false
pixel_size = 0.007
billboard = 1
render_priority = 3
texture = ExtResource("3_6u2og")
texture = ExtResource("3_g3ydi")
region_enabled = true
region_rect = Rect2(575, 82, 516, 591)
@@ -108,7 +108,7 @@ visible = false
pixel_size = 0.007
billboard = 1
render_priority = 3
texture = ExtResource("3_6u2og")
texture = ExtResource("3_g3ydi")
region_enabled = true
region_rect = Rect2(-25, 694, 521, 687)
@@ -117,7 +117,7 @@ visible = false
pixel_size = 0.007
billboard = 1
render_priority = 3
texture = ExtResource("3_6u2og")
texture = ExtResource("3_g3ydi")
region_enabled = true
region_rect = Rect2(546, 697, 535, 687)
@@ -129,7 +129,7 @@ visible = false
pixel_size = 0.007
billboard = 1
render_priority = 3
texture = ExtResource("4_1pcfs")
texture = ExtResource("4_7hsvc")
region_enabled = true
region_rect = Rect2(399, 3, 679, 808)
@@ -138,7 +138,7 @@ visible = false
pixel_size = 0.007
billboard = 1
render_priority = 3
texture = ExtResource("4_1pcfs")
texture = ExtResource("4_7hsvc")
region_enabled = true
region_rect = Rect2(1077, 109, 633, 695)
@@ -147,7 +147,7 @@ visible = false
pixel_size = 0.007
billboard = 1
render_priority = 3
texture = ExtResource("4_1pcfs")
texture = ExtResource("4_7hsvc")
region_enabled = true
region_rect = Rect2(415, 838, 639, 817)
@@ -156,11 +156,11 @@ visible = false
pixel_size = 0.007
billboard = 1
render_priority = 3
texture = ExtResource("4_1pcfs")
texture = ExtResource("4_7hsvc")
region_enabled = true
region_rect = Rect2(1167, 863, 528, 785)
[node name="InteractionArea" parent="." instance=ExtResource("5_6kt4q")]
[node name="InteractionArea" parent="." instance=ExtResource("5_n6ufi")]
[node name="CollisionShape3D" parent="InteractionArea/Area3D" index="0"]
shape = SubResource("SphereShape3D_l3nrf")
+8
View File
@@ -0,0 +1,8 @@
[gd_scene load_steps=2 format=3 uid="uid://bqhnejufg5ei2"]
[ext_resource type="Texture2D" uid="uid://csig0r8rffflt" path="res://art/farm/farming/farmobjekte/zaun/fence part end part.png" id="1_qau34"]
[node name="fence_part_01" type="Sprite3D"]
offset = Vector2(0, 300)
pixel_size = 0.005
texture = ExtResource("1_qau34")
+8
View File
@@ -0,0 +1,8 @@
[gd_scene load_steps=2 format=3 uid="uid://cxceu5dgq3akw"]
[ext_resource type="Texture2D" uid="uid://3ed3dgq3irn2" path="res://art/farm/farming/farmobjekte/zaun/tilable fence end part2.png" id="1_uxygd"]
[node name="fence_part_02" type="Sprite3D"]
offset = Vector2(0, 300)
pixel_size = 0.005
texture = ExtResource("1_uxygd")
+8
View File
@@ -0,0 +1,8 @@
[gd_scene load_steps=2 format=3 uid="uid://cm5oekefe6ct3"]
[ext_resource type="Texture2D" uid="uid://btea6eyucsyxj" path="res://art/farm/farming/farmobjekte/zaun/tilable fence middle part.png" id="1_rucex"]
[node name="fence_part_03" type="Sprite3D"]
offset = Vector2(0, 300)
pixel_size = 0.005
texture = ExtResource("1_rucex")
@@ -0,0 +1,11 @@
[gd_scene load_steps=2 format=3 uid="uid://bg7nyvbojnrvr"]
[ext_resource type="Texture2D" uid="uid://dldk8n51ag8fh" path="res://art/nature/baum märz 2025/backtreebois team brandon.png" id="1_d1wks"]
[node name="forest_tree_01" type="Sprite3D"]
offset = Vector2(0, 600)
pixel_size = 0.005
billboard = 1
texture = ExtResource("1_d1wks")
region_enabled = true
region_rect = Rect2(9, 2, 885, 1366)
@@ -0,0 +1,11 @@
[gd_scene load_steps=2 format=3 uid="uid://kbc6pku0nxxp"]
[ext_resource type="Texture2D" uid="uid://dldk8n51ag8fh" path="res://art/nature/baum märz 2025/backtreebois team brandon.png" id="1_ajmtd"]
[node name="forest_tree_02" type="Sprite3D"]
offset = Vector2(0, 500)
pixel_size = 0.005
billboard = 1
texture = ExtResource("1_ajmtd")
region_enabled = true
region_rect = Rect2(913, -6, 786, 1336)
@@ -0,0 +1,11 @@
[gd_scene load_steps=2 format=3 uid="uid://d0xs8ls3i4miq"]
[ext_resource type="Texture2D" uid="uid://dldk8n51ag8fh" path="res://art/nature/baum märz 2025/backtreebois team brandon.png" id="1_h17at"]
[node name="forest_tree_03" type="Sprite3D"]
offset = Vector2(0, 600)
pixel_size = 0.005
billboard = 1
texture = ExtResource("1_h17at")
region_enabled = true
region_rect = Rect2(1807, 10, 761, 1337)
@@ -0,0 +1,11 @@
[gd_scene load_steps=2 format=3 uid="uid://ihmmcxjosoev"]
[ext_resource type="Texture2D" uid="uid://dldk8n51ag8fh" path="res://art/nature/baum märz 2025/backtreebois team brandon.png" id="1_tjsek"]
[node name="forest_tree_04" type="Sprite3D"]
offset = Vector2(0, 550)
pixel_size = 0.005
billboard = 1
texture = ExtResource("1_tjsek")
region_enabled = true
region_rect = Rect2(2726, 0, 561, 1335)
@@ -0,0 +1,11 @@
[gd_scene load_steps=2 format=3 uid="uid://bow7d6s6djcm3"]
[ext_resource type="Texture2D" uid="uid://bmjjfd5ngptxe" path="res://art/nature/baum märz 2025/backtreebois team kennedy.png" id="1_gximh"]
[node name="forest_tree_05" type="Sprite3D"]
offset = Vector2(0, 550)
pixel_size = 0.005
billboard = 1
texture = ExtResource("1_gximh")
region_enabled = true
region_rect = Rect2(0, 0, 412, 1372)
@@ -0,0 +1,11 @@
[gd_scene load_steps=2 format=3 uid="uid://cr0vgjbyprgf7"]
[ext_resource type="Texture2D" uid="uid://bmjjfd5ngptxe" path="res://art/nature/baum märz 2025/backtreebois team kennedy.png" id="1_mi0fd"]
[node name="forest_tree_07" type="Sprite3D"]
offset = Vector2(0, 500)
pixel_size = 0.005
billboard = 1
texture = ExtResource("1_mi0fd")
region_enabled = true
region_rect = Rect2(1509, 0, 396, 1109)
@@ -0,0 +1,11 @@
[gd_scene load_steps=2 format=3 uid="uid://cjm7fupgsdoev"]
[ext_resource type="Texture2D" uid="uid://bmjjfd5ngptxe" path="res://art/nature/baum märz 2025/backtreebois team kennedy.png" id="1_23yv8"]
[node name="forest_tree_07" type="Sprite3D"]
offset = Vector2(0, 550)
pixel_size = 0.005
billboard = 1
texture = ExtResource("1_23yv8")
region_enabled = true
region_rect = Rect2(666, 0, 614, 1508)
+11
View File
@@ -0,0 +1,11 @@
[gd_scene load_steps=2 format=3 uid="uid://b3s7e5fxx6gla"]
[ext_resource type="Texture2D" uid="uid://bqoyk3fsrmu1x" path="res://art/nature/baum märz 2025/back back trees.png" id="1_pbmot"]
[node name="back_tree_01" type="Sprite3D"]
offset = Vector2(0, 350)
pixel_size = 0.005
billboard = 1
texture = ExtResource("1_pbmot")
region_enabled = true
region_rect = Rect2(0, 0, 216, 729)
+11
View File
@@ -0,0 +1,11 @@
[gd_scene load_steps=2 format=3 uid="uid://bk7273x4ns0y7"]
[ext_resource type="Texture2D" uid="uid://bqoyk3fsrmu1x" path="res://art/nature/baum märz 2025/back back trees.png" id="1_d14xl"]
[node name="back_tree_02" type="Sprite3D"]
offset = Vector2(0, 180)
pixel_size = 0.005
billboard = 1
texture = ExtResource("1_d14xl")
region_enabled = true
region_rect = Rect2(449, 451, 139, 419)
+11
View File
@@ -0,0 +1,11 @@
[gd_scene load_steps=2 format=3 uid="uid://cdthpc0t0vw33"]
[ext_resource type="Texture2D" uid="uid://bqoyk3fsrmu1x" path="res://art/nature/baum märz 2025/back back trees.png" id="1_56db7"]
[node name="back_tree_03" type="Sprite3D"]
offset = Vector2(0, 400)
pixel_size = 0.005
billboard = 1
texture = ExtResource("1_56db7")
region_enabled = true
region_rect = Rect2(783, 0, 253, 952)
+11
View File
@@ -0,0 +1,11 @@
[gd_scene load_steps=2 format=3 uid="uid://s2g3bhowe5i6"]
[ext_resource type="Texture2D" uid="uid://bqoyk3fsrmu1x" path="res://art/nature/baum märz 2025/back back trees.png" id="1_q4uhv"]
[node name="back_tree_04" type="Sprite3D"]
offset = Vector2(0, 300)
pixel_size = 0.005
billboard = 1
texture = ExtResource("1_q4uhv")
region_enabled = true
region_rect = Rect2(1373, 0, 148, 755)
+11
View File
@@ -0,0 +1,11 @@
[gd_scene load_steps=2 format=3 uid="uid://2l6jq8rjs14m"]
[ext_resource type="Texture2D" uid="uid://bqoyk3fsrmu1x" path="res://art/nature/baum märz 2025/back back trees.png" id="1_gvats"]
[node name="back_tree_06" type="Sprite3D"]
offset = Vector2(0, 350)
pixel_size = 0.005
billboard = 1
texture = ExtResource("1_gvats")
region_enabled = true
region_rect = Rect2(2291, 0, 140, 796)
+11
View File
@@ -0,0 +1,11 @@
[gd_scene load_steps=2 format=3 uid="uid://cskaqpqawov2k"]
[ext_resource type="Texture2D" uid="uid://bqoyk3fsrmu1x" path="res://art/nature/baum märz 2025/back back trees.png" id="1_43kgf"]
[node name="back_tree_05" type="Sprite3D"]
offset = Vector2(0, 400)
pixel_size = 0.005
billboard = 1
texture = ExtResource("1_43kgf")
region_enabled = true
region_rect = Rect2(1786, 0, 268, 904)
+11
View File
@@ -0,0 +1,11 @@
[gd_scene load_steps=2 format=3 uid="uid://w03yk6rx0gs2"]
[ext_resource type="Texture2D" uid="uid://bqoyk3fsrmu1x" path="res://art/nature/baum märz 2025/back back trees.png" id="1_qf7aa"]
[node name="back_tree_07" type="Sprite3D"]
offset = Vector2(0, 400)
pixel_size = 0.005
billboard = 1
texture = ExtResource("1_qf7aa")
region_enabled = true
region_rect = Rect2(3129, 0, 138, 942)
+11
View File
@@ -0,0 +1,11 @@
[gd_scene load_steps=2 format=3 uid="uid://cs382pd0muub1"]
[ext_resource type="Texture2D" uid="uid://bqoyk3fsrmu1x" path="res://art/nature/baum märz 2025/back back trees.png" id="1_cokmy"]
[node name="back_tree_08" type="Sprite3D"]
offset = Vector2(0, 150)
pixel_size = 0.005
billboard = 1
texture = ExtResource("1_cokmy")
region_enabled = true
region_rect = Rect2(2647, 464, 245, 420)
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -11,7 +11,7 @@ config_version=5
[application]
config/name="Babushka"
run/main_scene="uid://dbxy2y85r1d8x"
run/main_scene="uid://br7yq757cawts"
config/features=PackedStringArray("4.4", "C#", "Forward Plus")
config/icon="res://icon.svg"
-1
View File
@@ -6,5 +6,4 @@
script = ExtResource("1_07aya")
name = "Pick Axe"
color = Color(0.589014, 0.823353, 0.998475, 1)
maxStack = 1
metadata/_custom_type_script = "uid://cbskymrxs6ksu"
+111 -10
View File
@@ -1,18 +1,20 @@
[gd_scene load_steps=12 format=3 uid="uid://br7yq757cawts"]
[gd_scene load_steps=16 format=3 uid="uid://br7yq757cawts"]
[ext_resource type="Material" uid="uid://p1mf3uc4k164" path="res://art/materials/Tilleable_ground.tres" id="1_6i8r8"]
[ext_resource type="PackedScene" uid="uid://dbd1niu3tp8y5" path="res://prefabs/Player3D.tscn" id="1_b1ibi"]
[ext_resource type="PackedScene" uid="uid://biwd3jj65qrlh" path="res://prefabs/farming/base_field.tscn" id="2_72r8y"]
[ext_resource type="PackedScene" uid="uid://biwd3jj65qrlh" path="res://prefabs/farm/base_field.tscn" id="2_72r8y"]
[ext_resource type="PackedScene" uid="uid://ob04y3syvo0e" path="res://prefabs/interaction_area.tscn" id="4_r4sre"]
[ext_resource type="PackedScene" uid="uid://cgjc4wurbgimy" path="res://prefabs/UI/Inventory/Inventory.tscn" id="5_obfp0"]
[ext_resource type="Texture2D" uid="uid://x8hr8287ff2n" path="res://art/farm/farming/farmobjekte/tools atlas.png" id="5_r4sre"]
[ext_resource type="PackedScene" uid="uid://cf0jpuio8tgim" path="res://prefabs/interactions/sprite_switcher.tscn" id="6_r4sre"]
[ext_resource type="Script" uid="uid://c6hh7m8wikv04" path="res://scripts/CSharp/Common/Farming/FieldService.cs" id="7_0ptl4"]
[ext_resource type="PackedScene" uid="uid://dryo4gjixvs2c" path="res://prefabs/forest/vesna_farm_background_trees.tscn" id="9_pg8h5"]
[ext_resource type="PackedScene" uid="uid://bqhnejufg5ei2" path="res://prefabs/farm/fence_part_01.tscn" id="10_84r6a"]
[ext_resource type="PackedScene" uid="uid://cxceu5dgq3akw" path="res://prefabs/farm/fence_part_02.tscn" id="11_nmncb"]
[ext_resource type="PackedScene" uid="uid://cm5oekefe6ct3" path="res://prefabs/farm/fence_part_03.tscn" id="12_ww4l5"]
[sub_resource type="PlaneMesh" id="PlaneMesh_8yprl"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_8tgff"]
albedo_color = Color(0.505882, 0.588235, 0.494118, 1)
[sub_resource type="BoxShape3D" id="BoxShape3D_t58di"]
size = Vector3(2.01563, 0.160522, 2.00824)
@@ -22,15 +24,15 @@ radius = 1.0
[node name="SceneFarmVesna" type="Node3D"]
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
transform = Transform3D(10, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0)
[node name="Floor" type="MeshInstance3D" parent="."]
transform = Transform3D(50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0)
mesh = SubResource("PlaneMesh_8yprl")
skeleton = NodePath("")
surface_material_override/0 = SubResource("StandardMaterial3D_8tgff")
surface_material_override/0 = ExtResource("1_6i8r8")
[node name="StaticBody3D" type="StaticBody3D" parent="MeshInstance3D"]
[node name="StaticBody3D" type="StaticBody3D" parent="Floor"]
[node name="CollisionShape3D" type="CollisionShape3D" parent="MeshInstance3D/StaticBody3D"]
[node name="CollisionShape3D" type="CollisionShape3D" parent="Floor/StaticBody3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.000976563, -0.0739136, -0.00112915)
shape = SubResource("BoxShape3D_t58di")
@@ -78,6 +80,105 @@ visible = false
script = ExtResource("7_0ptl4")
metadata/_custom_type_script = "uid://c6hh7m8wikv04"
[node name="Background Trees" parent="." instance=ExtResource("9_pg8h5")]
[node name="Fence" type="Node" parent="."]
[node name="fencegroup" type="Node3D" parent="Fence"]
[node name="fence_part_01" parent="Fence/fencegroup" instance=ExtResource("10_84r6a")]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -45, 0, 0)
[node name="fence_part_02" parent="Fence/fencegroup" instance=ExtResource("11_nmncb")]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -45, 0.036, 3.5)
[node name="fence_part_03" parent="Fence/fencegroup" instance=ExtResource("12_ww4l5")]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -45, 0, -3.5)
[node name="fencegroup6" type="Node3D" parent="Fence"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -10.5)
[node name="fence_part_01" parent="Fence/fencegroup6" instance=ExtResource("10_84r6a")]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -45, 0, 0)
[node name="fence_part_02" parent="Fence/fencegroup6" instance=ExtResource("11_nmncb")]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -45, 0.036, 3.5)
[node name="fence_part_03" parent="Fence/fencegroup6" instance=ExtResource("12_ww4l5")]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -45, 0, -3.5)
[node name="fencegroup7" type="Node3D" parent="Fence"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -21)
[node name="fence_part_01" parent="Fence/fencegroup7" instance=ExtResource("10_84r6a")]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -45, 0, 0)
[node name="fence_part_02" parent="Fence/fencegroup7" instance=ExtResource("11_nmncb")]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -45, 0.036, 3.5)
[node name="fence_part_03" parent="Fence/fencegroup7" instance=ExtResource("12_ww4l5")]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -45, 0, -3.5)
[node name="fencegroup8" type="Node3D" parent="Fence"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -31.5)
[node name="fence_part_01" parent="Fence/fencegroup8" instance=ExtResource("10_84r6a")]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -45, 0, 0)
[node name="fence_part_02" parent="Fence/fencegroup8" instance=ExtResource("11_nmncb")]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -45, 0.036, 3.5)
[node name="fence_part_03" parent="Fence/fencegroup8" instance=ExtResource("12_ww4l5")]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -45, 0, -3.5)
[node name="fencegroup2" type="Node3D" parent="Fence"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 10.5)
[node name="fence_part_01" parent="Fence/fencegroup2" instance=ExtResource("10_84r6a")]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -45, 0, 0)
[node name="fence_part_02" parent="Fence/fencegroup2" instance=ExtResource("11_nmncb")]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -45, 0.036, 3.5)
[node name="fence_part_03" parent="Fence/fencegroup2" instance=ExtResource("12_ww4l5")]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -45, 0, -3.5)
[node name="fencegroup3" type="Node3D" parent="Fence"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 21)
[node name="fence_part_01" parent="Fence/fencegroup3" instance=ExtResource("10_84r6a")]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -45, 0, 0)
[node name="fence_part_02" parent="Fence/fencegroup3" instance=ExtResource("11_nmncb")]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -45, 0.036, 3.5)
[node name="fence_part_03" parent="Fence/fencegroup3" instance=ExtResource("12_ww4l5")]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -45, 0, -3.5)
[node name="fencegroup4" type="Node3D" parent="Fence"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 31.5)
[node name="fence_part_01" parent="Fence/fencegroup4" instance=ExtResource("10_84r6a")]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -45, 0, 0)
[node name="fence_part_02" parent="Fence/fencegroup4" instance=ExtResource("11_nmncb")]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -45, 0.036, 3.5)
[node name="fence_part_03" parent="Fence/fencegroup4" instance=ExtResource("12_ww4l5")]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -45, 0, -3.5)
[node name="fencegroup5" type="Node3D" parent="Fence"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 42)
[node name="fence_part_01" parent="Fence/fencegroup5" instance=ExtResource("10_84r6a")]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -45, 0, 0)
[node name="fence_part_02" parent="Fence/fencegroup5" instance=ExtResource("11_nmncb")]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -45, 0.036, 3.5)
[node name="fence_part_03" parent="Fence/fencegroup5" instance=ExtResource("12_ww4l5")]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -45, 0, -3.5)
[connection signal="Interacted" from="HoePickup" to="HoePickup/SpriteSwitcher Hoe" method="SwitchState"]
[connection signal="Switch" from="HoePickup/SpriteSwitcher Hoe" to="Player3d" method="ActivateHoe"]
[connection signal="Interacted" from="Watering Can Pickup" to="Watering Can Pickup/SpriteSwitcher Hoe" method="SwitchState"]
@@ -1,11 +1,11 @@
[gd_scene load_steps=12 format=3 uid="uid://dbxy2y85r1d8x"]
[ext_resource type="PackedScene" uid="uid://dbd1niu3tp8y5" path="res://prefabs/Player3D.tscn" id="1_pdc5e"]
[ext_resource type="PackedScene" uid="uid://biwd3jj65qrlh" path="res://prefabs/farming/base_field.tscn" id="2_741gk"]
[ext_resource type="PackedScene" uid="uid://biwd3jj65qrlh" path="res://prefabs/farm/base_field.tscn" id="2_741gk"]
[ext_resource type="PackedScene" uid="uid://5hltxpdxmqcq" path="res://prefabs/interactions/generic_item_on_ground.tscn" id="5_sjt6k"]
[ext_resource type="PackedScene" uid="uid://cgjc4wurbgimy" path="res://prefabs/UI/Inventory/Inventory.tscn" id="6_876p1"]
[ext_resource type="Resource" uid="uid://cndd64batns31" path="res://resources/items/bucket.tres" id="6_nvnpb"]
[ext_resource type="Script" uid="uid://d17si23dtlg72" path="res://scripts/CSharp/Common/Farming/FieldService.cs" id="7_3rkjv"]
[ext_resource type="Script" uid="uid://c6hh7m8wikv04" path="res://scripts/CSharp/Common/Farming/FieldService.cs" id="7_3rkjv"]
[ext_resource type="Resource" uid="uid://c5yg3lx756v4v" path="res://resources/items/hoe.tres" id="7_hv2km"]
[ext_resource type="Resource" uid="uid://d1uuxp1lp4aro" path="res://resources/items/tomato_seed.tres" id="8_hv2km"]
@@ -1 +1 @@
uid://xm0um640aes7
uid://bblprbhnbyv77
@@ -1,5 +1,8 @@
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using Godot;
using Godot.Collections;
namespace Babushka.scripts.CSharp.Common.Farming;
@@ -10,6 +13,7 @@ public partial class FarmingControls : Node3D
[Export] private Sprite3D _wateringCanSprite;
[Export] private PackedScene _fieldPrefab;
[Export] private Node3D _movingPlayer;
[Export] private Camera3D _camera;
public FieldService FieldParent;
@@ -42,45 +46,63 @@ public partial class FarmingControls : Node3D
public override void _Input(InputEvent @event)
{
if (@event.IsActionPressed("click") && _hoeInHand)
{
MakeField();
}
Vector2 mousePosition = GetViewport().GetMousePosition();
var dropPlane = new Plane(new Vector3(0, 0, 10), 10);
Vector3? position3D = dropPlane.IntersectsRay(_camera.ProjectRayOrigin(mousePosition),
_camera.ProjectRayNormal(mousePosition));
Debug.Print(position3D.ToString());
if (@event.IsActionPressed("click") && _waterCanInHand)
if (position3D.HasValue)
{
WaterTheField();
Vector2I adjustedPosition = new Vector2I(AdjustValue(position3D.Value.X), AdjustValue(position3D.Value.Y));
if (@event.IsActionPressed("click") && _hoeInHand)
{
MakeField(adjustedPosition);
}
if (@event.IsActionPressed("click") && _waterCanInHand)
{
WaterTheField(adjustedPosition);
}
}
}
private void WaterTheField()
private void WaterTheField(Vector2I fieldPosition)
{
FieldBehaviour field = FieldParent.Get(fieldPosition);
if (field == null)
return;
field.Water();
}
private void MakeField()
private void MakeField(Vector2I fieldPosition)
{
if(FieldParent == null || _fieldPrefab == null)
return;
Node fieldInstance = _fieldPrefab.Instantiate();
if (fieldInstance is Node3D field3d)
// only instantiate a field if there isn't one already.
if(FieldParent.Get(fieldPosition) == null)
{
Vector3 playerPos = _movingPlayer.GlobalPosition;
playerPos = new Vector3(AdjustValue(playerPos.X), 0.1f, AdjustValue(playerPos.Z));
field3d.Position = playerPos;
Vector2I intPosition = new Vector2I((int) playerPos.X, (int) playerPos.Z);
FieldParent.AddEntry(intPosition, FieldState.Tilled);
Node fieldInstance = _fieldPrefab.Instantiate();
if (fieldInstance is Node3D field3d)
{
// add dictionary entry for the field
Array<Node> fields = field3d.FindChildren("*", nameof(FieldBehaviour));
if (fields.Count > 0)
FieldParent.TryAddEntry(fieldPosition, fields[0] as FieldBehaviour);
// reposition and reparent the instance
field3d.Position = new Vector3(fieldPosition.X, 0.1f, fieldPosition.Y * -1);;
FieldParent.AddChild(fieldInstance);
}
}
FieldParent.AddChild(fieldInstance);
}
private float AdjustValue(float value)
private int AdjustValue(float value)
{
return Mathf.Floor(value);
return (int) Mathf.Floor(value);
}
}
+54 -49
View File
@@ -1,54 +1,59 @@
using System.Diagnostics;
using Godot;
namespace Babushka.scripts.CSharp.Common.Farming;
public enum FieldState
namespace Babushka.scripts.CSharp.Common.Farming
{
Empty = 0,
Tilled = 1,
Planted = 2,
Watered = 3
public enum FieldState
{
Empty = 0,
Tilled = 1,
Planted = 2,
Watered = 3,
NotFound = 99
}
[GlobalClass]
public partial class FieldBehaviour : Sprite3D
{
[Export] private Texture2D Tilled;
[Export] private Texture2D Watered;
[Export] public FieldState FieldState = FieldState.Empty;
public Vector2 FieldPosition;
public override void _Ready()
{
Texture = Tilled;
base._Ready();
}
public void Water()
{
FieldState = FieldState.Watered;
Texture = Watered;
}
/// <summary>
/// Called when the player enters the field'S interaction area and presses <E>.
/// </summary>
public void Farm()
{
switch (FieldState)
{
case FieldState.Empty:
Texture = Tilled;
FieldState = FieldState.Tilled;
break;
case FieldState.Tilled:
FieldState = FieldState.Planted;
break;
case FieldState.Planted:
break;
default:
break;
}
}
}
}
public partial class FieldBehaviour : Sprite3D
{
[Export] private Texture2D Tilled;
[Export] private Texture2D Watered;
[Export] private FieldState FieldState = FieldState.Empty;
public Vector2 FieldPosition;
public override void _Ready()
{
Texture = Tilled;
base._Ready();
}
public void Water()
{
FieldState = FieldState.Watered;
Texture = Watered;
}
/// <summary>
/// Called when the player enters the field'S interaction area and presses <E>.
/// </summary>
public void Farm()
{
switch (FieldState)
{
case FieldState.Empty:
Texture = Tilled;
FieldState = FieldState.Tilled;
break;
case FieldState.Tilled:
FieldState = FieldState.Planted;
break;
case FieldState.Planted:
break;
default:
break;
}
}
}
+17 -9
View File
@@ -1,3 +1,4 @@
using System.Diagnostics;
using Godot;
using Godot.Collections;
@@ -6,32 +7,39 @@ namespace Babushka.scripts.CSharp.Common.Farming;
[GlobalClass]
public partial class FieldService : Node3D
{
[Export] private Dictionary<Vector2I, FieldState> fields = new Dictionary<Vector2I, FieldState>();
[Export] private Dictionary<Vector2I, FieldBehaviour> fields = new Dictionary<Vector2I, FieldBehaviour>();
//Create
public void AddEntry(Vector2I key, FieldState state)
public bool TryAddEntry(Vector2I key, FieldBehaviour field)
{
fields.Add(key, state);
if (!fields.ContainsKey(key))
{
fields.Add(key, field);
return true;
}
return false;
}
// Read
public FieldState Get(Vector2I key)
public FieldBehaviour Get(Vector2I key)
{
return fields[key];
if (fields.TryGetValue(key, out FieldBehaviour field))
return field;
return null;
}
//Update
public void UpdateEntry(Vector2I fieldPosition, FieldState state)
public void UpdateEntry(Vector2I fieldPosition, FieldBehaviour state)
{
if (fields.ContainsKey(fieldPosition))
{
fields[fieldPosition] = state;
}
else
{
AddEntry(fieldPosition, state);
TryAddEntry(fieldPosition, state);
}
}
@@ -1 +1 @@
uid://12hleqx8amr8
uid://c6hh7m8wikv04
@@ -1 +0,0 @@
uid://b7vlkecrn0t5c
@@ -0,0 +1 @@
uid://hg7jay2kt441