using System.Linq; using Cirno.Scripts.Resources.Roguelite; using Godot; using Godot.Collections; namespace Cirno.Scripts.Controllers; public partial class RogueliteRoomManager : Node2D { [Export] public Array Rooms { get; set; } [Export] public Node2D SceneContainer { get; set; } public override void _Ready() { // Spawn first room } private void SpawnRoomsGrid() { //var firstRoom = Rooms.FirstOrDefault(); var origin = Vector2.Zero; var tileSize = new Vector2(16, 16); for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { 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); } private void RebakeNavigationDeferred() { GameManager.Instance.RebakeNavigation(); } private void SpawnRoom(RogueliteRoomResource room, Vector2 position) { var roomScene = GD.Load(room.ScenePath); var spawnedScene = this.CreateChild(roomScene, position); spawnedScene.Spawn(); } }