From ce5d2b65d34bb50937935e84dffd416f7f063719 Mon Sep 17 00:00:00 2001 From: kziolkowski Date: Sun, 13 Apr 2025 14:35:14 +0200 Subject: [PATCH] Separated farming controls from vesna behvaiour and adjusted the setup --- prefabs/Player3D.tscn | 18 ++++++++----- .../CharacterControls/VesnaBehaviour.cs | 25 +++++++++++++++++++ .../CSharp/Common/Farming/FarmingControls.cs | 8 +++--- 3 files changed, 42 insertions(+), 9 deletions(-) create mode 100644 scripts/CSharp/Common/CharacterControls/VesnaBehaviour.cs diff --git a/prefabs/Player3D.tscn b/prefabs/Player3D.tscn index 22822e0..8a6d342 100644 --- a/prefabs/Player3D.tscn +++ b/prefabs/Player3D.tscn @@ -1,6 +1,7 @@ -[gd_scene load_steps=302 format=3 uid="uid://dbd1niu3tp8y5"] +[gd_scene load_steps=303 format=3 uid="uid://dbd1niu3tp8y5"] [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="Script" uid="uid://r5tahuqvbucy" path="res://scripts/CSharp/Common/Camera/CameraPivot.cs" id="3_3trg2"] @@ -1210,11 +1211,9 @@ animations = [{ "speed": 25.0 }] -[node name="Player3d" type="Node3D" node_paths=PackedStringArray("_hoeSprite", "_movingPlayer")] -script = ExtResource("4_q5t2e") -_hoeSprite = NodePath("CharacterBody3D/Farming/Hoe") -_fieldPrefab = ExtResource("2_oq5hi") -_movingPlayer = NodePath("CharacterBody3D") +[node name="Player3d" type="Node3D" node_paths=PackedStringArray("_farmingControls")] +script = ExtResource("1_pkl5l") +_farmingControls = NodePath("FarmingControls") [node name="CharacterBody3D" type="CharacterBody3D" parent="." node_paths=PackedStringArray("_camera", "_frontSpritesAnimated", "_sideSpritesAnimated", "_backSpritesAnimated")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.000654221, 0.102765, -0.00300497) @@ -1330,3 +1329,10 @@ render_priority = 50 sprite_frames = SubResource("SpriteFrames_4q8ml") autoplay = "default" frame_progress = 0.481133 + +[node name="FarmingControls" type="Node3D" parent="." node_paths=PackedStringArray("_hoeSprite", "_movingPlayer")] +script = ExtResource("4_q5t2e") +_hoeSprite = NodePath("../CharacterBody3D/Farming/Hoe") +_fieldPrefab = ExtResource("2_oq5hi") +_movingPlayer = NodePath("../CharacterBody3D") +metadata/_custom_type_script = "uid://b1sscdr4ptec8" diff --git a/scripts/CSharp/Common/CharacterControls/VesnaBehaviour.cs b/scripts/CSharp/Common/CharacterControls/VesnaBehaviour.cs new file mode 100644 index 0000000..7a8e700 --- /dev/null +++ b/scripts/CSharp/Common/CharacterControls/VesnaBehaviour.cs @@ -0,0 +1,25 @@ +using Babushka.scripts.CSharp.Common.Farming; +using Godot; + +namespace Babushka.scripts.CSharp.Common.CharacterControls; + +public partial class VesnaBehaviour : Node +{ + [ExportGroup("Farming")] + [Export] private Node _fieldParent; + [Export] private FarmingControls _farmingControls; + + public override void _Ready() + { + _farmingControls.FieldParent = _fieldParent; + } + + #region Farming + + public void ActivateHoe(bool activate) + { + _farmingControls.ActivateHoe(activate); + } + + #endregion +} \ No newline at end of file diff --git a/scripts/CSharp/Common/Farming/FarmingControls.cs b/scripts/CSharp/Common/Farming/FarmingControls.cs index d70d56a..2973a51 100644 --- a/scripts/CSharp/Common/Farming/FarmingControls.cs +++ b/scripts/CSharp/Common/Farming/FarmingControls.cs @@ -2,13 +2,15 @@ using Godot; namespace Babushka.scripts.CSharp.Common.Farming; +[GlobalClass] public partial class FarmingControls : Node3D { [Export] private Sprite3D _hoeSprite; [Export] private PackedScene _fieldPrefab; - [Export] private Node _fieldParent; [Export] private Node3D _movingPlayer; + public Node FieldParent; + private bool _hoeInHand = false; public void ActivateHoe(bool activate) { @@ -26,7 +28,7 @@ public partial class FarmingControls : Node3D private void MakeField() { - if(_fieldParent == null || _fieldPrefab == null) + if(FieldParent == null || _fieldPrefab == null) return; Node fieldInstance = _fieldPrefab.Instantiate(); @@ -36,7 +38,7 @@ public partial class FarmingControls : Node3D field3d.Position = _movingPlayer.GlobalPosition; } - _fieldParent.AddChild(fieldInstance); + FieldParent.AddChild(fieldInstance); }