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 cd683281..7f2fbb70 100644 Binary files a/ExternalMaterial/SkyscraperTexture/SkyscraperTexture.pxc and b/ExternalMaterial/SkyscraperTexture/SkyscraperTexture.pxc differ diff --git a/ExternalMaterial/SkyscraperTexture/SkyscraperTexture.pxc1 b/ExternalMaterial/SkyscraperTexture/SkyscraperTexture.pxc1 index c65ff8b2..cc037971 100644 Binary files a/ExternalMaterial/SkyscraperTexture/SkyscraperTexture.pxc1 and b/ExternalMaterial/SkyscraperTexture/SkyscraperTexture.pxc1 differ diff --git a/Resources/RogueliteMaps/TestRGMap.tres b/Resources/RogueliteMaps/TestRGMap.tres index 1fbd4657..bd58b981 100644 --- a/Resources/RogueliteMaps/TestRGMap.tres +++ b/Resources/RogueliteMaps/TestRGMap.tres @@ -1,10 +1,15 @@ -[gd_resource type="Resource" script_class="RogueliteRoomResource" load_steps=2 format=3 uid="uid://b5x83li01qrav"] +[gd_resource type="Resource" script_class="RogueliteRoomResource" load_steps=6 format=3 uid="uid://b5x83li01qrav"] [ext_resource type="Script" uid="uid://bl2ne8w12e3a" path="res://Scripts/Resources/Roguelite/RogueliteRoomResource.cs" id="1_keg4c"] +[ext_resource type="Resource" uid="uid://cocl3qontm3be" path="res://Resources/Enemies/Base_Fairy.tres" id="1_qx515"] +[ext_resource type="Resource" uid="uid://cqfyuurvqb8m6" path="res://Resources/Enemies/Base_Fairy_Special.tres" id="2_46i28"] +[ext_resource type="Resource" uid="uid://qbo6avc7x64b" path="res://Resources/Enemies/Fairy_Guard.tres" id="3_g4rpe"] +[ext_resource type="Resource" uid="uid://cfdvg162u65sr" path="res://Resources/Enemies/Thermathron.tres" id="4_wvuta"] [resource] script = ExtResource("1_keg4c") RoomName = &"Test" ScenePath = &"uid://da7hmajaaiohm" Size = Vector2(20, 10) +SpawnableEnemies = Array[Object]([ExtResource("1_qx515"), ExtResource("2_46i28"), ExtResource("3_g4rpe"), ExtResource("4_wvuta")]) metadata/_custom_type_script = "uid://bl2ne8w12e3a" diff --git a/Resources/RogueliteMaps/TestRGMap2.tres b/Resources/RogueliteMaps/TestRGMap2.tres new file mode 100644 index 00000000..c7e67d0b --- /dev/null +++ b/Resources/RogueliteMaps/TestRGMap2.tres @@ -0,0 +1,15 @@ +[gd_resource type="Resource" script_class="RogueliteRoomResource" load_steps=6 format=3 uid="uid://ly8l7asedjpx"] + +[ext_resource type="Resource" uid="uid://cocl3qontm3be" path="res://Resources/Enemies/Base_Fairy.tres" id="1_1ns8k"] +[ext_resource type="Resource" uid="uid://cqfyuurvqb8m6" path="res://Resources/Enemies/Base_Fairy_Special.tres" id="2_8dyfa"] +[ext_resource type="Resource" uid="uid://qbo6avc7x64b" path="res://Resources/Enemies/Fairy_Guard.tres" id="3_3kq4c"] +[ext_resource type="Resource" uid="uid://cfdvg162u65sr" path="res://Resources/Enemies/Thermathron.tres" id="4_010mx"] +[ext_resource type="Script" uid="uid://bl2ne8w12e3a" path="res://Scripts/Resources/Roguelite/RogueliteRoomResource.cs" id="5_myanx"] + +[resource] +script = ExtResource("5_myanx") +RoomName = &"Test2" +ScenePath = &"uid://dcxrdhq1yw5c7" +Size = Vector2(20, 10) +SpawnableEnemies = Array[Object]([ExtResource("1_1ns8k"), ExtResource("2_8dyfa"), ExtResource("3_3kq4c"), ExtResource("4_010mx")]) +metadata/_custom_type_script = "uid://bl2ne8w12e3a" diff --git a/Scenes/MainMenu.tscn b/Scenes/MainMenu.tscn index 60df194d..bca44dfb 100644 --- a/Scenes/MainMenu.tscn +++ b/Scenes/MainMenu.tscn @@ -21,9 +21,9 @@ [ext_resource type="Resource" uid="uid://byo74ews118nl" path="res://Resources/Music/No_Reason.tres" id="13_fh7cp"] [ext_resource type="FontFile" uid="uid://cyk27h5aox1n7" path="res://fonts/sector_034.ttf" id="14_yxkem"] -[sub_resource type="AtlasTexture" id="AtlasTexture_quqih"] +[sub_resource type="AtlasTexture" id="AtlasTexture_ljnfb"] atlas = ExtResource("9_riqfo") -region = Rect2(576, 0, 32, 16) +region = Rect2(128, 0, 32, 16) [sub_resource type="Theme" id="Theme_c7h4d"] @@ -69,7 +69,7 @@ offset_top = 40.995 offset_right = 186.42 offset_bottom = 56.995 rotation = 3.14159 -texture = SubResource("AtlasTexture_quqih") +texture = SubResource("AtlasTexture_ljnfb") [node name="MarginContainer" type="MarginContainer" parent="."] anchors_preset = 15 diff --git a/Scenes/Maps/Level4.tscn b/Scenes/Maps/Level4.tscn index cce26f1e..a65039e5 100644 --- a/Scenes/Maps/Level4.tscn +++ b/Scenes/Maps/Level4.tscn @@ -1,9 +1,8 @@ -[gd_scene load_steps=14 format=4 uid="uid://8ppagfume46d"] +[gd_scene load_steps=12 format=4 uid="uid://8ppagfume46d"] [ext_resource type="Script" uid="uid://doxmbokehw8ci" path="res://Scripts/GameManager.cs" id="1_hx5ph"] [ext_resource type="PackedScene" uid="uid://c4pr2707hbeph" path="res://Scenes/Actors/fsm_player.tscn" id="2_r7f28"] [ext_resource type="Resource" uid="uid://b6per1p85bqpn" path="res://Resources/Maps/Level4.tres" id="2_wvpxs"] -[ext_resource type="Script" uid="uid://mja0rk7n2kln" path="res://Scripts/Resources/MapStartDataResource.cs" id="4_4wg3n"] [ext_resource type="TileSet" uid="uid://6k28roiljylj" path="res://Tilesets/factory_tileset.tres" id="5_e10oj"] [ext_resource type="Script" uid="uid://krean0uywtms" path="res://Scripts/TilemapAvoidance.cs" id="6_4t7ma"] [ext_resource type="Script" uid="uid://cfya7sndh7vy2" path="res://Scenes/CameraController.gd" id="9_0x0w0"] @@ -13,11 +12,6 @@ [ext_resource type="Script" uid="uid://cnkipcolyj61w" path="res://Scripts/AlarmManager.cs" id="13_lxaeu"] [ext_resource type="PackedScene" uid="uid://b3tyacxxw88lx" path="res://Scenes/Utils/StreamPlayerWithName.tscn" id="14_x7uby"] -[sub_resource type="Resource" id="Resource_6wo78"] -script = ExtResource("4_4wg3n") -EggIndex = 0 -StartingEquipment = [] - [node name="GameScene" type="Node2D"] process_mode = 3 script = ExtResource("1_hx5ph") @@ -26,7 +20,6 @@ PlayerTemplate = ExtResource("2_r7f28") SpawnMarkers = Dictionary[int, NodePath]({ 0: NodePath("PlayerStartPosition") }) -MapStartData = SubResource("Resource_6wo78") [node name="Parallax2D" type="Parallax2D" parent="."] diff --git a/Scenes/Maps/Roguelike.tscn b/Scenes/Maps/Roguelike.tscn index 55d90cfd..6db70ba9 100644 --- a/Scenes/Maps/Roguelike.tscn +++ b/Scenes/Maps/Roguelike.tscn @@ -1,10 +1,11 @@ -[gd_scene load_steps=13 format=3 uid="uid://bf1kqr3o6r6d4"] +[gd_scene load_steps=14 format=3 uid="uid://bf1kqr3o6r6d4"] [ext_resource type="Script" uid="uid://doxmbokehw8ci" path="res://Scripts/GameManager.cs" id="1_wbqvu"] [ext_resource type="PackedScene" uid="uid://c4pr2707hbeph" path="res://Scenes/Actors/fsm_player.tscn" id="2_3fyis"] [ext_resource type="Resource" uid="uid://6ek4lmtuij4t" path="res://Resources/Maps/Roguelite.tres" id="2_k5t51"] [ext_resource type="Script" uid="uid://bt2qjgnf1wc2r" path="res://Scripts/Controllers/RogueliteRoomManager.cs" id="4_jtlua"] [ext_resource type="Resource" uid="uid://b5x83li01qrav" path="res://Resources/RogueliteMaps/TestRGMap.tres" id="5_gwtv6"] +[ext_resource type="Resource" uid="uid://ly8l7asedjpx" path="res://Resources/RogueliteMaps/TestRGMap2.tres" id="6_gwtv6"] [ext_resource type="Script" uid="uid://cfya7sndh7vy2" path="res://Scenes/CameraController.gd" id="8_y651a"] [ext_resource type="Script" uid="uid://c5nxsq3tyxcx6" path="res://Scripts/InventoryManager.cs" id="9_vhvs2"] [ext_resource type="PackedScene" uid="uid://dkwi1hu1bixoe" path="res://Scenes/HUD/HUD.tscn" id="10_6gk3e"] @@ -32,7 +33,7 @@ NavigationRegion = NodePath("NavigationRegion2D") [node name="Maps" type="Node2D" parent="." groups=["navigation_polygon_source_geometry_group"]] process_mode = 1 script = ExtResource("4_jtlua") -Rooms = Array[Object]([ExtResource("5_gwtv6")]) +Rooms = Array[Object]([ExtResource("5_gwtv6"), ExtResource("6_gwtv6")]) [node name="CameraController" type="Camera2D" parent="."] process_mode = 1 diff --git a/Scenes/Maps/RogueliteMaps/Rg1.tscn b/Scenes/Maps/RogueliteMaps/Rg1.tscn index 824ba42f..a0683e19 100644 --- a/Scenes/Maps/RogueliteMaps/Rg1.tscn +++ b/Scenes/Maps/RogueliteMaps/Rg1.tscn @@ -1,11 +1,9 @@ -[gd_scene load_steps=7 format=4 uid="uid://da7hmajaaiohm"] +[gd_scene load_steps=5 format=4 uid="uid://da7hmajaaiohm"] [ext_resource type="Script" uid="uid://b2j00riayxkit" path="res://Scripts/Controllers/RogueliteRoom.cs" id="1_dm6kf"] [ext_resource type="Resource" uid="uid://b5x83li01qrav" path="res://Resources/RogueliteMaps/TestRGMap.tres" id="2_5s4nm"] -[ext_resource type="PackedScene" uid="uid://clieeuln36a7a" path="res://Scenes/Actors/Fairy_FSM.tscn" id="5_b5lqw"] [ext_resource type="TileSet" uid="uid://6k28roiljylj" path="res://Tilesets/factory_tileset.tres" id="5_q5p8k"] [ext_resource type="Script" uid="uid://krean0uywtms" path="res://Scripts/TilemapAvoidance.cs" id="6_81nvh"] -[ext_resource type="PackedScene" uid="uid://bb32f4p5e671j" path="res://Scenes/Actors/Fairy_Guard_FSM.tscn" id="6_rlq0q"] [node name="Tilemaps" type="Node2D"] process_mode = 1 @@ -34,11 +32,15 @@ metadata/_edit_lock_ = true [node name="Actors" type="Node2D" parent="."] metadata/_edit_lock_ = true -[node name="FairyFsm" parent="." instance=ExtResource("5_b5lqw")] -position = Vector2(68, 74) +[node name="EnemySpawners" type="Node2D" parent="."] -[node name="FairyFsm2" parent="." instance=ExtResource("5_b5lqw")] -position = Vector2(245, 105) +[node name="RogueliteEnemySpawner" type="Marker2D" parent="EnemySpawners"] +position = Vector2(57, 67) -[node name="FairyGuardFsm" parent="." instance=ExtResource("6_rlq0q")] -position = Vector2(186, 65) +[node name="RogueliteEnemySpawner2" type="Marker2D" parent="EnemySpawners"] +position = Vector2(88, 126) + +[node name="RogueliteEnemySpawner3" type="Marker2D" parent="EnemySpawners"] +position = Vector2(266, 122) + +[node name="Doors" type="Node2D" parent="."] diff --git a/Scenes/Maps/RogueliteMaps/Rg2.tscn b/Scenes/Maps/RogueliteMaps/Rg2.tscn new file mode 100644 index 00000000..93697ba3 --- /dev/null +++ b/Scenes/Maps/RogueliteMaps/Rg2.tscn @@ -0,0 +1,47 @@ +[gd_scene load_steps=5 format=4 uid="uid://dcxrdhq1yw5c7"] + +[ext_resource type="Script" uid="uid://b2j00riayxkit" path="res://Scripts/Controllers/RogueliteRoom.cs" id="1_cak6m"] +[ext_resource type="Resource" uid="uid://ly8l7asedjpx" path="res://Resources/RogueliteMaps/TestRGMap2.tres" id="2_cak6m"] +[ext_resource type="TileSet" uid="uid://6k28roiljylj" path="res://Tilesets/factory_tileset.tres" id="3_f7qjl"] +[ext_resource type="Script" uid="uid://krean0uywtms" path="res://Scripts/TilemapAvoidance.cs" id="4_wtdf1"] + +[node name="Tilemaps" type="Node2D"] +process_mode = 1 +script = ExtResource("1_cak6m") +RoomResource = ExtResource("2_cak6m") + +[node name="Floor" type="TileMapLayer" parent="." node_paths=PackedStringArray("_solidLayers") groups=["Solid"]] +tile_map_data = PackedByteArray("AAAAAAIAAAAFAAAAAAAAAAMAAAAFAAAAAAAAAAQAAAAFAAAAAAAAAAUAAAAFAAAAAAAAAAYAAAAFAAAAAAAAAAcAAAAFAAAAAAAAAAgAAAAFAAAAAAAAAAkAAAAFAAAAAAABAAIAAAAFAAAAAAABAAMAAAAFAAAAAAABAAQAAAAFAAAAAAABAAUAAAAFAAAAAAABAAYAAAAFAAAAAAABAAcAAAAFAAAAAAABAAgAAAAFAAAAAAABAAkAAAAFAAAAAAACAAIAAAAFAAAAAAACAAMAAAAFAAAAAAACAAQAAAAFAAAAAAACAAUAAAAFAAAAAAACAAYAAAAFAAAAAAACAAcAAAAFAAAAAAACAAgAAAAFAAAAAAACAAkAAAAFAAAAAAADAAIAAAAFAAAAAAADAAMAAAAFAAAAAAADAAQAAAAFAAAAAAADAAUAAAAFAAAAAAADAAYAAAAFAAAAAAADAAcAAAAFAAAAAAADAAgAAAAFAAAAAAADAAkAAAAFAAAAAAAEAAIAAAAFAAAAAAAEAAMAAAAFAAAAAAAEAAQAAAAFAAAAAAAEAAUAAAAFAAAAAAAEAAYAAAAFAAAAAAAEAAcAAAAFAAAAAAAEAAgAAAAFAAAAAAAEAAkAAAAFAAAAAAAFAAIAAAAFAAAAAAAFAAMAAAAFAAAAAAAFAAQAAAAFAAAAAAAFAAUAAAAFAAAAAAAFAAYAAAAFAAAAAAAFAAcAAAAFAAAAAAAFAAgAAAAFAAAAAAAFAAkAAAAFAAAAAAAGAAIAAAAFAAAAAAAGAAMAAAAFAAAAAAAGAAQAAAAFAAAAAAAGAAUAAAAFAAAAAAAGAAYAAAAFAAAAAAAGAAcAAAAFAAAAAAAGAAgAAAAFAAAAAAAGAAkAAAAFAAAAAAAHAAIAAAAFAAAAAAAHAAMAAAAFAAAAAAAHAAQAAAAFAAAAAAAHAAUAAAAFAAAAAAAHAAYAAAAFAAAAAAAHAAcAAAAFAAAAAAAHAAgAAAAFAAAAAAAHAAkAAAAFAAAAAAAIAAIAAAAFAAAAAAAIAAMAAAAFAAAAAAAIAAQAAAAFAAAAAAAIAAUAAAAFAAAAAAAIAAYAAAAFAAAAAAAIAAcAAAAFAAAAAAAIAAgAAAAFAAAAAAAIAAkAAAAFAAAAAAAJAAIAAAAFAAAAAAAJAAMAAAAFAAAAAAAJAAQAAAAFAAAAAAAJAAgAAAAFAAAAAAAJAAkAAAAFAAAAAAAKAAIAAAAFAAAAAAAKAAMAAAAFAAAAAAAKAAQAAAAFAAAAAAAKAAgAAAAFAAAAAAAKAAkAAAAFAAAAAAALAAIAAAAFAAAAAAALAAUAAAAFAAAAAAALAAYAAAAFAAAAAAALAAcAAAAFAAAAAAALAAgAAAAFAAAAAAALAAkAAAAFAAAAAAAMAAIAAAAFAAAAAAAMAAUAAAAFAAAAAAAMAAYAAAAFAAAAAAAMAAcAAAAFAAAAAAAMAAgAAAAFAAAAAAAMAAkAAAAFAAAAAAANAAIAAAAFAAAAAAANAAMAAAAFAAAAAAANAAQAAAAFAAAAAAANAAUAAAAFAAAAAAANAAYAAAAFAAAAAAANAAcAAAAFAAAAAAANAAgAAAAFAAAAAAANAAkAAAAFAAAAAAAOAAIAAAAFAAAAAAAOAAMAAAAFAAAAAAAOAAQAAAAFAAAAAAAOAAUAAAAFAAAAAAAOAAYAAAAFAAAAAAAOAAcAAAAFAAAAAAAOAAgAAAAFAAAAAAAOAAkAAAAFAAAAAAAPAAIAAAAFAAAAAAAPAAMAAAAFAAAAAAAPAAQAAAAFAAAAAAAPAAUAAAAFAAAAAAAPAAYAAAAFAAAAAAAPAAcAAAAFAAAAAAAPAAgAAAAFAAAAAAAPAAkAAAAFAAAAAAAQAAIAAAAFAAAAAAAQAAMAAAAFAAAAAAAQAAQAAAAFAAAAAAAQAAUAAAAFAAAAAAAQAAYAAAAFAAAAAAAQAAcAAAAFAAAAAAAQAAgAAAAFAAAAAAAQAAkAAAAFAAAAAAARAAIAAAAFAAAAAAARAAMAAAAFAAAAAAARAAQAAAAFAAAAAAARAAUAAAAFAAAAAAARAAYAAAAFAAAAAAARAAcAAAAFAAAAAAARAAgAAAAFAAAAAAARAAkAAAAFAAAAAAASAAIAAAAFAAAAAAASAAMAAAAFAAAAAAASAAQAAAAFAAAAAAASAAUAAAAFAAAAAAASAAYAAAAFAAAAAAASAAcAAAAFAAAAAAASAAgAAAAFAAAAAAASAAkAAAAFAAAAAAATAAIAAAAFAAAAAAATAAMAAAAFAAAAAAATAAQAAAAFAAAAAAATAAUAAAAFAAAAAAATAAYAAAAFAAAAAAATAAcAAAAFAAAAAAATAAgAAAAFAAAAAAATAAkAAAAFAAAAAAAAAAAAAAAFAAAAAAAAAAEAAAAFAAAAAAABAAAAAAAFAAAAAAABAAEAAAAFAAAAAAACAAAAAAAFAAAAAAACAAEAAAAFAAAAAAADAAAAAAAFAAAAAAADAAEAAAAFAAAAAAAEAAAAAAAFAAAAAAAEAAEAAAAFAAAAAAAFAAAAAAAFAAAAAAAFAAEAAAAFAAAAAAAGAAAAAAAFAAAAAAAGAAEAAAAFAAAAAAAHAAAAAAAFAAAAAAAHAAEAAAAFAAAAAAAIAAAAAAAFAAAAAAAIAAEAAAAFAAAAAAAJAAAAAAAFAAAAAAAJAAEAAAAFAAAAAAAKAAAAAAAFAAAAAAAKAAEAAAAFAAAAAAALAAAAAAAFAAAAAAALAAEAAAAFAAAAAAALAAMAAAAFAAAAAAALAAQAAAAFAAAAAAAMAAAAAAAFAAAAAAAMAAEAAAAFAAAAAAAMAAMAAAAFAAAAAAAMAAQAAAAFAAAAAAANAAAAAAAFAAAAAAANAAEAAAAFAAAAAAAOAAAAAAAFAAAAAAAOAAEAAAAFAAAAAAAPAAAAAAAFAAAAAAAPAAEAAAAFAAAAAAAQAAAAAAAFAAAAAAAQAAEAAAAFAAAAAAARAAAAAAAFAAAAAAARAAEAAAAFAAAAAAASAAAAAAAFAAAAAAASAAEAAAAFAAAAAAATAAAAAAAFAAAAAAATAAEAAAAFAAAAAAAJAAUAAAAFAAAAAAAJAAYAAAAFAAAAAAAJAAcAAAAFAAAAAAAKAAUAAAAFAAAAAAAKAAYAAAAFAAAAAAAKAAcAAAAFAAAAAAA=") +tile_set = ExtResource("3_f7qjl") +navigation_enabled = false +script = ExtResource("4_wtdf1") +_solidLayers = [NodePath("../Solid"), NodePath("../Props")] +metadata/_edit_lock_ = true + +[node name="Solid" type="TileMapLayer" parent="." groups=["Solid"]] +tile_map_data = PackedByteArray("AAATAAAAAAABAAsAAAASAAAAAAABAAQAAAARAAAAAAABAAQAAAAQAAAAAAABAAQAAAAPAAAAAAABAAQAAAAOAAAAAAABAAQAAAANAAAAAAABAAQAAAAMAAAAAAABAAQAAAALAAAAAAACAAQAAAAIAAAAAAADAAQAAAAHAAAAAAABAAQAAAAGAAAAAAABAAQAAAAFAAAAAAABAAQAAAAEAAAAAAABAAQAAAADAAAAAAABAAQAAAACAAAAAAABAAQAAAABAAAAAAABAAQAAAAAAAAAAAAAAAsAAAATAAIAAAAEAAQAAAATAAEAAAAAAAQAAAAAAAIAAAAEAAQAAAAAAAEAAAAAAAQAAAAAAAkAAAAAAAwAAAAAAAgAAAAAAAQAAAAAAAcAAAAAAAQAAAAAAAYAAAAFAAQAAAATAAkAAAABAAwAAAASAAkAAAABAAQAAAARAAkAAAABAAQAAAAQAAkAAAABAAQAAAAPAAkAAAABAAQAAAAOAAkAAAABAAQAAAANAAkAAAABAAQAAAAMAAkAAAABAAQAAAALAAkAAAACAAQAAAAIAAkAAAADAAQAAAAHAAkAAAABAAQAAAAGAAkAAAABAAQAAAAFAAkAAAABAAQAAAAEAAkAAAABAAQAAAADAAkAAAABAAQAAAACAAkAAAABAAQAAAABAAkAAAABAAQAAAATAAgAAAAAAAQAAAATAAcAAAAAAAQAAAATAAYAAAAFAAQAAAATAAMAAAAMAAAAAAATAAQAAAAMAAEAAAALAAEAAAAMAAAAAAALAAIAAAAMAAEAAAAMAAEAAAAMAAAAAAAMAAIAAAAMAAEAAAANAAEAAAAMAAAAAAANAAIAAAAMAAEAAAAOAAEAAAAMAAAAAAAOAAIAAAAMAAEAAAAPAAEAAAAMAAAAAAAPAAIAAAAMAAEAAAAQAAEAAAAMAAAAAAAQAAIAAAAMAAEAAAARAAEAAAAMAAAAAAARAAIAAAAMAAEAAAASAAEAAAAMAAAAAAASAAIAAAAMAAEAAAABAAEAAAAMAAAAAAABAAIAAAAMAAEAAAACAAEAAAAMAAAAAAACAAIAAAAMAAEAAAADAAEAAAAMAAAAAAADAAIAAAAMAAEAAAAEAAEAAAAMAAAAAAAEAAIAAAAMAAEAAAAFAAEAAAAMAAAAAAAFAAIAAAAMAAEAAAAGAAEAAAAMAAAAAAAGAAIAAAAMAAEAAAAHAAEAAAAMAAAAAAAHAAIAAAAMAAEAAAAIAAEAAAAMAAAAAAAIAAIAAAAMAAEAAAAAAAMAAAAMAAAAAAAAAAQAAAAMAAEAAAAJAAUAAAAMAAAAAAAJAAYAAAAMAAEAAAAKAAUAAAAMAAAAAAAKAAYAAAAMAAEAAAAJAAQAAAACAAQAAAAKAAQAAAADAAQAAAA=") +tile_set = ExtResource("3_f7qjl") +navigation_enabled = false +metadata/_edit_lock_ = true + +[node name="Props" type="TileMapLayer" parent="." groups=["Solid"]] +tile_map_data = PackedByteArray("AAAJAAUAAAAJAAwAAAAJAAYAAAAJAA0AAAAKAAUAAAAKAAwAAAAKAAYAAAAKAA0AAAAAAAMAAAAKAAwAAAAAAAQAAAAKAA0AAAAIAAEAAAAKAAwAAAAIAAIAAAAKAA0AAAALAAEAAAAJAAwAAAALAAIAAAAJAA0AAAATAAMAAAAJAAwAAAATAAQAAAAJAA0AAAA=") +tile_set = ExtResource("3_f7qjl") +navigation_enabled = false +metadata/_edit_lock_ = true + +[node name="Actors" type="Node2D" parent="."] +metadata/_edit_lock_ = true + +[node name="EnemySpawners" type="Node2D" parent="."] + +[node name="RogueliteEnemySpawner" type="Marker2D" parent="EnemySpawners"] +position = Vector2(57, 67) + +[node name="RogueliteEnemySpawner2" type="Marker2D" parent="EnemySpawners"] +position = Vector2(233, 63) + +[node name="RogueliteEnemySpawner3" type="Marker2D" parent="EnemySpawners"] +position = Vector2(266, 122) + +[node name="Doors" type="Node2D" parent="."] diff --git a/Scripts/Controllers/RogueliteRoom.cs b/Scripts/Controllers/RogueliteRoom.cs index 18d39bb5..85b1ebe2 100644 --- a/Scripts/Controllers/RogueliteRoom.cs +++ b/Scripts/Controllers/RogueliteRoom.cs @@ -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 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