mirror of
https://gitlab.com/MaddoScientisto/cirnogodot.git
synced 2026-06-01 11:15:33 +00:00
Door link
This commit is contained in:
parent
700be1e207
commit
d4b9a928db
6 changed files with 21 additions and 34 deletions
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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> { 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<Vector2I>();
|
||||
|
|
|
|||
1
Scripts/Controllers/RoomConnection.cs.uid
Normal file
1
Scripts/Controllers/RoomConnection.cs.uid
Normal file
|
|
@ -0,0 +1 @@
|
|||
uid://cll1kon3rc5j6
|
||||
Loading…
Add table
Add a link
Reference in a new issue