From d4b9a928dbe464df8a83e7fe0e53c96eb9e23d92 Mon Sep 17 00:00:00 2001 From: Marco Date: Thu, 17 Apr 2025 13:04:56 +0200 Subject: [PATCH] Door link --- Resources/Enemies/Thermathron.tres | 5 +++-- Scenes/Maps/Roguelike.tscn | 1 - Scenes/Maps/RogueliteMaps/Rg2.tscn | 2 +- Scripts/Controllers/RogueliteRoom.cs | 24 ++++++++++++++------- Scripts/Controllers/RogueliteRoomManager.cs | 22 ------------------- Scripts/Controllers/RoomConnection.cs.uid | 1 + 6 files changed, 21 insertions(+), 34 deletions(-) create mode 100644 Scripts/Controllers/RoomConnection.cs.uid diff --git a/Resources/Enemies/Thermathron.tres b/Resources/Enemies/Thermathron.tres index 2c2393c8..643bcbbe 100644 --- a/Resources/Enemies/Thermathron.tres +++ b/Resources/Enemies/Thermathron.tres @@ -1,5 +1,6 @@ -[gd_resource type="Resource" script_class="EnemyResource" load_steps=3 format=3 uid="uid://cfdvg162u65sr"] +[gd_resource type="Resource" script_class="EnemyResource" load_steps=4 format=3 uid="uid://cfdvg162u65sr"] +[ext_resource type="Script" uid="uid://cq65aed620ijo" path="res://Scripts/Resources/Loot/LootDrop.cs" id="1_f3huq"] [ext_resource type="Resource" uid="uid://cdfmedtgp2rcn" path="res://Resources/Weapons/EnemyWeapon.tres" id="7_filx8"] [ext_resource type="Script" uid="uid://cd5o0ceb50jki" path="res://Scripts/Resources/EnemyResource.cs" id="8_x8scf"] @@ -11,7 +12,7 @@ PrefabPath = &"uid://dky13otbks8cm" MaxHealth = 16.0 MovementSpeed = 38.0 Weapon = ExtResource("7_filx8") -LootDrops = [] +LootDrops = Array[ExtResource("1_f3huq")]([]) MotivationReward = 4.0 PlayerDetectionRange = 90.0 ViewRange = 120.0 diff --git a/Scenes/Maps/Roguelike.tscn b/Scenes/Maps/Roguelike.tscn index fbf3b673..61398b68 100644 --- a/Scenes/Maps/Roguelike.tscn +++ b/Scenes/Maps/Roguelike.tscn @@ -38,7 +38,6 @@ DungeonLength = 12 [node name="CameraController" type="Camera2D" parent="."] process_mode = 1 -zoom = Vector2(0.2, 0.2) script = ExtResource("8_y651a") pixel_snap = false enable_smoothing = false diff --git a/Scenes/Maps/RogueliteMaps/Rg2.tscn b/Scenes/Maps/RogueliteMaps/Rg2.tscn index d3bbf8b4..82ec510e 100644 --- a/Scenes/Maps/RogueliteMaps/Rg2.tscn +++ b/Scenes/Maps/RogueliteMaps/Rg2.tscn @@ -68,7 +68,7 @@ position = Vector2(159, 23) script = ExtResource("5_2djm0") [node name="South" type="Marker2D" parent="Doors"] -position = Vector2(159.196, 149.348) +position = Vector2(159, 161) script = ExtResource("5_2djm0") Direction = 1 diff --git a/Scripts/Controllers/RogueliteRoom.cs b/Scripts/Controllers/RogueliteRoom.cs index 974a4986..27e777ad 100644 --- a/Scripts/Controllers/RogueliteRoom.cs +++ b/Scripts/Controllers/RogueliteRoom.cs @@ -92,10 +92,18 @@ public partial class RogueliteRoom : Node2D _doors.Add(door); - if (connection.FromDoor is null) connection.FromDoor = door; - else if (connection.ToDoor is null) connection.ToDoor = door; - else - GD.Print("Door connection was full"); + if (connection.FromDoor is null && connection.ToDoor != door) + { + connection.FromDoor = door; + } + else if (connection.ToDoor is null && connection.FromDoor != door) + { + connection.ToDoor = door; + } + else + { + GD.Print($"Door {door} connection was full: {connection.From} {connection.FromDoor} to {connection.To} {connection.ToDoor}"); + } _connections.Add(connection); @@ -155,8 +163,8 @@ public partial class RogueliteRoom : Node2D { foreach (var connection in _connections) { - connection.FromDoor?.Activate(ActivationType.Open); - connection.ToDoor?.Activate(ActivationType.Open); + connection.FromDoor?.Open(); + connection.ToDoor?.Open(); } } @@ -164,8 +172,8 @@ public partial class RogueliteRoom : Node2D { foreach (var connection in _connections) { - connection.FromDoor?.Activate(ActivationType.Close); - connection.ToDoor?.Activate(ActivationType.Close); + connection.FromDoor?.Close(); + connection.ToDoor?.Close(); } } diff --git a/Scripts/Controllers/RogueliteRoomManager.cs b/Scripts/Controllers/RogueliteRoomManager.cs index 9dc3c46c..3679d694 100644 --- a/Scripts/Controllers/RogueliteRoomManager.cs +++ b/Scripts/Controllers/RogueliteRoomManager.cs @@ -186,28 +186,6 @@ public partial class RogueliteRoomManager : Node2D //CallDeferred(MethodName.OpenStartDoorsDeferred, spawnedBeginRoom); } - private Vector2I? FindValidBossRoomLocation(Vector2I from, int maxSteps = 10) - { - var directions = new List { Vector2I.Right, Vector2I.Left, Vector2I.Up, Vector2I.Down }; - - for (int step = 0; step < maxSteps; step++) - { - directions = directions.OrderBy(_ => GD.Randi()).ToList(); - - foreach (var dir in directions) - { - var pos = from + dir; - var bossRoom = Rooms.FirstOrDefault(r => r.Type == RoomType.Boss); - if (bossRoom != null && CanPlaceRoom(pos, bossRoom.Size)) - return pos; - - from += dir; - } - } - - return null; - } - private Vector2I GetNextPosition(Vector2I current, Vector2I target) { var possibleDirs = new List(); diff --git a/Scripts/Controllers/RoomConnection.cs.uid b/Scripts/Controllers/RoomConnection.cs.uid new file mode 100644 index 00000000..99579197 --- /dev/null +++ b/Scripts/Controllers/RoomConnection.cs.uid @@ -0,0 +1 @@ +uid://cll1kon3rc5j6