From 59f98ebf0e185d38c8917c775b9dbbdec84e9e6c Mon Sep 17 00:00:00 2001 From: Marco Date: Fri, 11 Apr 2025 15:53:59 +0200 Subject: [PATCH] Random rooms --- .../SkyscraperTexture/SkyscraperTexture.png | 4 +- .../SkyscraperTexture/SkyscraperTexture.pxc | Bin 9209 -> 5003 bytes .../SkyscraperTexture/SkyscraperTexture.pxc1 | Bin 9146 -> 4996 bytes Resources/RogueliteMaps/TestRGMap.tres | 7 ++- Resources/RogueliteMaps/TestRGMap2.tres | 15 ++++++ Scenes/MainMenu.tscn | 6 +-- Scenes/Maps/Level4.tscn | 9 +--- Scenes/Maps/Roguelike.tscn | 5 +- Scenes/Maps/RogueliteMaps/Rg1.tscn | 20 ++++---- Scenes/Maps/RogueliteMaps/Rg2.tscn | 47 ++++++++++++++++++ Scripts/Controllers/RogueliteRoom.cs | 24 ++++++++- Scripts/Controllers/RogueliteRoomManager.cs | 10 ++-- .../Roguelite/RogueliteRoomResource.cs | 3 ++ 13 files changed, 121 insertions(+), 29 deletions(-) create mode 100644 Resources/RogueliteMaps/TestRGMap2.tres create mode 100644 Scenes/Maps/RogueliteMaps/Rg2.tscn diff --git a/ExternalMaterial/SkyscraperTexture/SkyscraperTexture.png b/ExternalMaterial/SkyscraperTexture/SkyscraperTexture.png index 69192428..fb75ad5d 100644 --- a/ExternalMaterial/SkyscraperTexture/SkyscraperTexture.png +++ b/ExternalMaterial/SkyscraperTexture/SkyscraperTexture.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:550ae894cd34c488fdcde288ef79f88da077597f7f8385a0fe0ccfcc6ae29b55 -size 2013 +oid sha256:e31fcc18dc24cdcbf120b3fd9d7144b8daf12c0d1539446e13820a66c65df5a2 +size 1916 diff --git a/ExternalMaterial/SkyscraperTexture/SkyscraperTexture.pxc b/ExternalMaterial/SkyscraperTexture/SkyscraperTexture.pxc index cd683281535ef29dd2f4e33fb53bad9847ffae51..7f2fbb70beb7e229ee66888c28ff268e465895d1 100644 GIT binary patch literal 5003 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 V2DDp?Q(z1H`Sa)h{vQggkVhr$$6Npa literal 9209 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 SpawnableEnemies => RoomResource.SpawnableEnemies; + + public void Spawn() + { + var enemySpawners = this.GetNode("EnemySpawners").GetChildren().Cast(); + + foreach (var spawner in enemySpawners) + { + + var index = GD.RandRange(0, SpawnableEnemies.Count - 1); + + var e = SpawnableEnemies[index]; + + var enemyScene = GD.Load(e.PrefabPath); + var spawnedEnemy = spawner.CreateChild(enemyScene); + } + + } } \ No newline at end of file diff --git a/Scripts/Controllers/RogueliteRoomManager.cs b/Scripts/Controllers/RogueliteRoomManager.cs index 82a59d5f..c44bcb4a 100644 --- a/Scripts/Controllers/RogueliteRoomManager.cs +++ b/Scripts/Controllers/RogueliteRoomManager.cs @@ -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(room.ScenePath); var spawnedScene = this.CreateChild(roomScene, position); + + spawnedScene.Spawn(); } } \ No newline at end of file diff --git a/Scripts/Resources/Roguelite/RogueliteRoomResource.cs b/Scripts/Resources/Roguelite/RogueliteRoomResource.cs index c4fadd3f..2625739b 100644 --- a/Scripts/Resources/Roguelite/RogueliteRoomResource.cs +++ b/Scripts/Resources/Roguelite/RogueliteRoomResource.cs @@ -1,4 +1,5 @@ using Godot; +using Godot.Collections; namespace Cirno.Scripts.Resources.Roguelite; @@ -8,4 +9,6 @@ public partial class RogueliteRoomResource : Resource [Export] public StringName RoomName { get; set; } [Export] public StringName ScenePath { get; set; } [Export] public Vector2 Size { get; set; } = new(20, 10); + + [Export] public Array SpawnableEnemies { get; set; } } \ No newline at end of file