hnnngghh open door
This commit is contained in:
@@ -24,41 +24,40 @@ public partial class DungeonFloor : Node3D, IDungeonFloor
|
||||
|
||||
public void InitializeDungeon()
|
||||
{
|
||||
Rooms = [];
|
||||
Rooms = FindAllDungeonRooms([.. GetChildren()], Rooms);
|
||||
_playerSpawnPoint = RandomizePlayerSpawnPoint();
|
||||
var monsterRooms = Rooms.OfType<MonsterRoom>();
|
||||
foreach (var room in monsterRooms)
|
||||
room.SpawnEnemies(EnemyDatabase);
|
||||
DungeonGenerator.EmitSignal("done_generating");
|
||||
Rooms = [];
|
||||
Rooms = FindAllDungeonRooms([.. GetChildren()], Rooms);
|
||||
_playerSpawnPoint = RandomizePlayerSpawnPoint();
|
||||
var monsterRooms = Rooms.OfType<MonsterRoom>();
|
||||
foreach (var room in monsterRooms)
|
||||
room.SpawnEnemies(EnemyDatabase);
|
||||
DungeonGenerator.EmitSignal("done_generating");
|
||||
}
|
||||
|
||||
public Transform3D GetPlayerSpawnPoint() => new Transform3D(_playerSpawnPoint.Basis, new Vector3(_playerSpawnPoint.Origin.X, -1.75f, _playerSpawnPoint.Origin.Z));
|
||||
|
||||
private Transform3D RandomizePlayerSpawnPoint()
|
||||
{
|
||||
var randomSpawnLocations = Rooms
|
||||
.OfType<MonsterRoom>()
|
||||
.Select(x => x.PlayerSpawn);
|
||||
var godotCollection = new Godot.Collections.Array<Marker3D>(randomSpawnLocations);
|
||||
var result = godotCollection.PickRandom();
|
||||
return result.GlobalTransform;
|
||||
var randomSpawnLocations = Rooms
|
||||
.OfType<MonsterRoom>()
|
||||
.Select(x => x.PlayerSpawn);
|
||||
var godotCollection = new Godot.Collections.Array<Marker3D>(randomSpawnLocations);
|
||||
var result = godotCollection.PickRandom();
|
||||
return result.GlobalTransform;
|
||||
}
|
||||
|
||||
private static ImmutableList<IDungeonRoom> FindAllDungeonRooms(List<Node> nodesToSearch, ImmutableList<IDungeonRoom> roomsFound)
|
||||
{
|
||||
if (nodesToSearch.Count == 0)
|
||||
return roomsFound;
|
||||
if (nodesToSearch.Count == 0)
|
||||
return roomsFound;
|
||||
|
||||
foreach (var node in nodesToSearch)
|
||||
{
|
||||
if (node is IDungeonRoom dungeonRoom)
|
||||
roomsFound = roomsFound.Add(dungeonRoom);
|
||||
foreach (var node in nodesToSearch)
|
||||
{
|
||||
if (node is IDungeonRoom dungeonRoom)
|
||||
roomsFound = roomsFound.Add(dungeonRoom);
|
||||
if (node.HasSignal("dungeon_done_generating"))
|
||||
node.EmitSignal("dungeon_done_generating");
|
||||
}
|
||||
|
||||
if (node.HasSignal("dungeon_done_generating"))
|
||||
node.EmitSignal("dungeon_done_generating");
|
||||
}
|
||||
|
||||
return FindAllDungeonRooms(nodesToSearch.SelectMany(x => x.GetChildren()).ToList(), roomsFound);
|
||||
return FindAllDungeonRooms(nodesToSearch.SelectMany(x => x.GetChildren()).ToList(), roomsFound);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,11 +7,11 @@ func _ready():
|
||||
dungeon_done_generating.connect(remove_unused_doors_and_walls)
|
||||
|
||||
func remove_unused_doors_and_walls():
|
||||
if get_door_by_node($"Doors/DOOR?_F_CUT").get_room_leads_to() != null:
|
||||
$"Doors/DOOR?_F_CUT".queue_free()
|
||||
if get_door_by_node($"Doors/DOOR?_R_CUT").get_room_leads_to() != null:
|
||||
$"Doors/DOOR?_R_CUT".queue_free()
|
||||
if get_door_by_node($"Doors/DOOR?_B_CUT").get_room_leads_to() != null:
|
||||
$"Doors/DOOR?_B_CUT".queue_free()
|
||||
if get_door_by_node($"Doors/DOOR?_L_CUT").get_room_leads_to() != null:
|
||||
$"Doors/DOOR?_L_CUT".queue_free()
|
||||
if get_door_by_node($"Doors/DOOR?").get_room_leads_to() != null:
|
||||
$"Doors/DOOR?".queue_free()
|
||||
if get_door_by_node($"Doors/DOOR?2").get_room_leads_to() != null:
|
||||
$"Doors/DOOR?2".queue_free()
|
||||
if get_door_by_node($"Doors/DOOR?3").get_room_leads_to() != null:
|
||||
$"Doors/DOOR?3".queue_free()
|
||||
if get_door_by_node($"Doors/DOOR?4").get_room_leads_to() != null:
|
||||
$"Doors/DOOR?4".queue_free()
|
||||
|
||||
Reference in New Issue
Block a user