mirror of
https://gitlab.com/MaddoScientisto/cirnogodot.git
synced 2026-06-04 09:35:54 +00:00
Random rooms
This commit is contained in:
parent
75ee779c37
commit
59f98ebf0e
13 changed files with 121 additions and 29 deletions
|
|
@ -1,9 +1,31 @@
|
|||
using Cirno.Scripts.Resources.Roguelite;
|
||||
using System.Linq;
|
||||
using Cirno.Scripts.Resources;
|
||||
using Cirno.Scripts.Resources.Roguelite;
|
||||
using Godot;
|
||||
using Godot.Collections;
|
||||
|
||||
namespace Cirno.Scripts.Controllers;
|
||||
|
||||
public partial class RogueliteRoom : Node2D
|
||||
{
|
||||
[Export] public RogueliteRoomResource RoomResource { get; set; }
|
||||
|
||||
private Array<EnemyResource> SpawnableEnemies => RoomResource.SpawnableEnemies;
|
||||
|
||||
public void Spawn()
|
||||
{
|
||||
var enemySpawners = this.GetNode("EnemySpawners").GetChildren().Cast<Marker2D>();
|
||||
|
||||
foreach (var spawner in enemySpawners)
|
||||
{
|
||||
|
||||
var index = GD.RandRange(0, SpawnableEnemies.Count - 1);
|
||||
|
||||
var e = SpawnableEnemies[index];
|
||||
|
||||
var enemyScene = GD.Load<PackedScene>(e.PrefabPath);
|
||||
var spawnedEnemy = spawner.CreateChild<Node2D>(enemyScene);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -19,7 +19,7 @@ public partial class RogueliteRoomManager : Node2D
|
|||
|
||||
private void SpawnRoomsGrid()
|
||||
{
|
||||
var firstRoom = Rooms.FirstOrDefault();
|
||||
//var firstRoom = Rooms.FirstOrDefault();
|
||||
|
||||
var origin = Vector2.Zero;
|
||||
var tileSize = new Vector2(16, 16);
|
||||
|
|
@ -28,11 +28,13 @@ public partial class RogueliteRoomManager : Node2D
|
|||
{
|
||||
for (int j = 0; j < 10; j++)
|
||||
{
|
||||
SpawnRoom(firstRoom, origin + (firstRoom.Size * new Vector2(i, j) * tileSize));
|
||||
var roomIndex = GD.RandRange(0, Rooms.Count - 1);
|
||||
var room = Rooms[roomIndex];
|
||||
SpawnRoom(room, origin + (room.Size * new Vector2(i, j) * tileSize));
|
||||
}
|
||||
}
|
||||
|
||||
CallDeferred(MethodName.RebakeNavigationDeferred);
|
||||
//CallDeferred(MethodName.RebakeNavigationDeferred);
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -46,5 +48,7 @@ public partial class RogueliteRoomManager : Node2D
|
|||
var roomScene = GD.Load<PackedScene>(room.ScenePath);
|
||||
|
||||
var spawnedScene = this.CreateChild<RogueliteRoom>(roomScene, position);
|
||||
|
||||
spawnedScene.Spawn();
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue