From 1b77718b9b297b4c96fb99fffcaecb3e4efc16a5 Mon Sep 17 00:00:00 2001 From: jonathan Date: Wed, 4 Feb 2026 20:25:54 +0100 Subject: [PATCH] Added basic vesna entity --- prefabs/characters/Vesna.tscn | 4 ++-- prefabs/entity_placer/VesnaPlacer.tscn | 17 ++++++++++++++ prefabs/entity_system/entity_manager.tscn | 6 +++-- scenes/entity_scenes/farm_outside.tscn | 8 +++---- .../CSharp/Common/Farming/VesnaBehaviour2D.cs | 2 +- .../CSharp/GameEntity/Entities/VesnaEntity.cs | 18 +++++++++++++++ .../GameEntity/Entities/VesnaEntity.cs.uid | 1 + .../EntityPlacer/VesnaEntityPlacer.cs | 23 +++++++++++++++++++ .../EntityPlacer/VesnaEntityPlacer.cs.uid | 1 + 9 files changed, 70 insertions(+), 10 deletions(-) create mode 100644 prefabs/entity_placer/VesnaPlacer.tscn create mode 100644 scripts/CSharp/GameEntity/Entities/VesnaEntity.cs create mode 100644 scripts/CSharp/GameEntity/Entities/VesnaEntity.cs.uid create mode 100644 scripts/CSharp/GameEntity/EntityPlacer/VesnaEntityPlacer.cs create mode 100644 scripts/CSharp/GameEntity/EntityPlacer/VesnaEntityPlacer.cs.uid diff --git a/prefabs/characters/Vesna.tscn b/prefabs/characters/Vesna.tscn index cc9009f..71b5a9d 100644 --- a/prefabs/characters/Vesna.tscn +++ b/prefabs/characters/Vesna.tscn @@ -2098,11 +2098,11 @@ stream_0/stream = ExtResource("484_jb7tm") stream_1/stream = ExtResource("485_fn3kd") stream_2/stream = ExtResource("486_ux0r8") -[node name="Vesna" type="Node2D" node_paths=PackedStringArray("_farmingControls", "_player2d", "_vesnaAnimations")] +[node name="Vesna" type="Node2D" node_paths=PackedStringArray("_farmingControls", "player2d", "_vesnaAnimations")] y_sort_enabled = true script = ExtResource("1_yd5ep") _farmingControls = NodePath("FarmingControls") -_player2d = NodePath("CharacterBody2D") +player2d = NodePath("CharacterBody2D") _vesnaAnimations = NodePath("CharacterBody2D/visuals") _hoe = ExtResource("2_dnm27") _wateringCan = ExtResource("3_e04c3") diff --git a/prefabs/entity_placer/VesnaPlacer.tscn b/prefabs/entity_placer/VesnaPlacer.tscn new file mode 100644 index 0000000..3abd595 --- /dev/null +++ b/prefabs/entity_placer/VesnaPlacer.tscn @@ -0,0 +1,17 @@ +[gd_scene load_steps=4 format=3 uid="uid://cv7trh2b3dyiv"] + +[ext_resource type="Script" uid="uid://dcn4giw1auva4" path="res://scripts/CSharp/GameEntity/EntityPlacer/VesnaEntityPlacer.cs" id="1_nq5fu"] +[ext_resource type="Script" uid="uid://n7oihifvqp23" path="res://scripts/CSharp/Common/Animation/VesnaAnimations.cs" id="2_cpdud"] +[ext_resource type="Texture2D" uid="uid://cloe0etis2lcu" path="res://art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Gießkanne/0001.png" id="451_d8nvl"] + +[node name="VesnaPlacer" type="Node2D"] +script = ExtResource("1_nq5fu") + +[node name="visuals" type="Node2D" parent="." node_paths=PackedStringArray("_sprite")] +position = Vector2(0, -374) +script = ExtResource("2_cpdud") +_sprite = NodePath("") + +[node name="0001" type="Sprite2D" parent="visuals"] +position = Vector2(1, 0) +texture = ExtResource("451_d8nvl") diff --git a/prefabs/entity_system/entity_manager.tscn b/prefabs/entity_system/entity_manager.tscn index 92dd554..36226ce 100644 --- a/prefabs/entity_system/entity_manager.tscn +++ b/prefabs/entity_system/entity_manager.tscn @@ -1,8 +1,9 @@ -[gd_scene load_steps=4 format=3 uid="uid://hdfejdnmp8sl"] +[gd_scene load_steps=5 format=3 uid="uid://hdfejdnmp8sl"] [ext_resource type="Script" uid="uid://umop2b1m1qm8" path="res://scripts/CSharp/GameEntity/Management/EntityManager.cs" id="1_2bwns"] [ext_resource type="Script" uid="uid://bogqp274y1pgr" path="res://scripts/CSharp/GameEntity/Management/EntityNodeCreator.cs" id="2_8m173"] [ext_resource type="PackedScene" uid="uid://sbf12hin4kes" path="res://prefabs/Interactables/trash_object.tscn" id="3_v3vdc"] +[ext_resource type="PackedScene" uid="uid://c25udixd5m6l0" path="res://prefabs/characters/Vesna.tscn" id="4_8m173"] [node name="EntityManager" type="Node" node_paths=PackedStringArray("_nodeCreator")] script = ExtResource("1_2bwns") @@ -11,5 +12,6 @@ _nodeCreator = NodePath("EntityCreator") [node name="EntityCreator" type="Node" parent="."] script = ExtResource("2_8m173") _entityPrefabs = Dictionary[String, PackedScene]({ -"TrashEntity": ExtResource("3_v3vdc") +"TrashEntity": ExtResource("3_v3vdc"), +"VesnaEntity": ExtResource("4_8m173") }) diff --git a/scenes/entity_scenes/farm_outside.tscn b/scenes/entity_scenes/farm_outside.tscn index 6c92e2a..fcc5cf2 100644 --- a/scenes/entity_scenes/farm_outside.tscn +++ b/scenes/entity_scenes/farm_outside.tscn @@ -26,7 +26,7 @@ [ext_resource type="Texture2D" uid="uid://btea6eyucsyxj" path="res://art/farm/farming/farmobjekte/zaun/tilable fence middle part.png" id="24_hr375"] [ext_resource type="Texture2D" uid="uid://3ed3dgq3irn2" path="res://art/farm/farming/farmobjekte/zaun/tilable fence end part2.png" id="25_e15ep"] [ext_resource type="PackedScene" uid="uid://dfvgp1my5rydh" path="res://prefabs/characters/Yeli.tscn" id="26_hp2qi"] -[ext_resource type="PackedScene" uid="uid://c25udixd5m6l0" path="res://prefabs/characters/Vesna.tscn" id="27_slkey"] +[ext_resource type="PackedScene" uid="uid://cv7trh2b3dyiv" path="res://prefabs/entity_placer/VesnaPlacer.tscn" id="27_nqcah"] [ext_resource type="Resource" uid="uid://dlcmqfjvgphqu" path="res://resources/items/rake.tres" id="28_678ve"] [ext_resource type="Texture2D" uid="uid://dg7rlugnq0t45" path="res://art/farm/farming/farmobjekte/brünnen.png" id="29_6crsp"] [ext_resource type="Script" uid="uid://boehox1ydbcnx" path="res://scripts/CSharp/Common/Farming/WellBehaviour.cs" id="30_1l41q"] @@ -951,10 +951,8 @@ y_sort_enabled = true position = Vector2(6403, 3362) _timelinesToPlay = PackedStringArray("yeli_quest_select") -[node name="Vesna" parent="YSorted" instance=ExtResource("27_slkey")] -z_index = 1 -position = Vector2(9322, 2018) -_hoe = ExtResource("28_678ve") +[node name="VesnaPlacer" parent="YSorted" instance=ExtResource("27_nqcah")] +position = Vector2(9178, 2365) [node name="Well" type="Sprite2D" parent="YSorted" node_paths=PackedStringArray("_interactionArea")] z_index = 1 diff --git a/scripts/CSharp/Common/Farming/VesnaBehaviour2D.cs b/scripts/CSharp/Common/Farming/VesnaBehaviour2D.cs index 0fcf55c..44e171c 100644 --- a/scripts/CSharp/Common/Farming/VesnaBehaviour2D.cs +++ b/scripts/CSharp/Common/Farming/VesnaBehaviour2D.cs @@ -10,7 +10,7 @@ public partial class VesnaBehaviour2D : Node2D // EntityNode { [ExportGroup("Farming")] [Export] private FarmingControls2D _farmingControls; - [Export] private PlayerMovement _player2d; + [Export] public PlayerMovement player2d; [Export] private VesnaAnimations _vesnaAnimations; [Export] private ItemResource _hoe; [Export] private ItemResource _wateringCan; diff --git a/scripts/CSharp/GameEntity/Entities/VesnaEntity.cs b/scripts/CSharp/GameEntity/Entities/VesnaEntity.cs new file mode 100644 index 0000000..31c9d55 --- /dev/null +++ b/scripts/CSharp/GameEntity/Entities/VesnaEntity.cs @@ -0,0 +1,18 @@ +using Babushka.scripts.CSharp.Common.Farming; +using Babushka.scripts.CSharp.GameEntity.Management; +using Godot; + +namespace Babushka.scripts.CSharp.GameEntity.Entities; + +public class VesnaEntity : PositionalEntity +{ + public override string EntityType => OWN_TYPE_NAME; + public const string OWN_TYPE_NAME = "VesnaEntity"; + + public override void InstantiateEntityNode(Node2D parent) + { + var node = (VesnaBehaviour2D) EntityManager.Instance.NodeCreator.InstantiateNode(OWN_TYPE_NAME); + node.player2d.GlobalPosition = position; + parent.AddChild(node); + } +} \ No newline at end of file diff --git a/scripts/CSharp/GameEntity/Entities/VesnaEntity.cs.uid b/scripts/CSharp/GameEntity/Entities/VesnaEntity.cs.uid new file mode 100644 index 0000000..2db9706 --- /dev/null +++ b/scripts/CSharp/GameEntity/Entities/VesnaEntity.cs.uid @@ -0,0 +1 @@ +uid://c7e45co1valv3 diff --git a/scripts/CSharp/GameEntity/EntityPlacer/VesnaEntityPlacer.cs b/scripts/CSharp/GameEntity/EntityPlacer/VesnaEntityPlacer.cs new file mode 100644 index 0000000..495e143 --- /dev/null +++ b/scripts/CSharp/GameEntity/EntityPlacer/VesnaEntityPlacer.cs @@ -0,0 +1,23 @@ +using Babushka.scripts.CSharp.GameEntity.Entities; +using Babushka.scripts.CSharp.GameEntity.Management; +using Godot; + +namespace Babushka.scripts.CSharp.GameEntity.EntityPlacer; + +public partial class VesnaEntityPlacer : Node2D +{ + public override void _Ready() + { + var sceneName = EntityManager.Instance.CurrentEntitySceneContainer!.sceneName; + var loadedScenesEntity = EntityManager.Instance.GetUniqueEntity(); + + if (!loadedScenesEntity.WasSceneLoaded(sceneName)) + { + var entity = EntityManager.Instance.GetUniqueEntity(); + entity.position = GlobalPosition; + entity.sceneName = sceneName; + } + + QueueFree(); + } +} \ No newline at end of file diff --git a/scripts/CSharp/GameEntity/EntityPlacer/VesnaEntityPlacer.cs.uid b/scripts/CSharp/GameEntity/EntityPlacer/VesnaEntityPlacer.cs.uid new file mode 100644 index 0000000..30e8440 --- /dev/null +++ b/scripts/CSharp/GameEntity/EntityPlacer/VesnaEntityPlacer.cs.uid @@ -0,0 +1 @@ +uid://dcn4giw1auva4