diff --git a/Cirno.sln.DotSettings.user b/Cirno.sln.DotSettings.user index a96154b9..962a2ec8 100644 --- a/Cirno.sln.DotSettings.user +++ b/Cirno.sln.DotSettings.user @@ -18,6 +18,7 @@ ForceIncluded ForceIncluded ForceIncluded + ForceIncluded ForceIncluded ForceIncluded ForceIncluded diff --git a/Resources/Debug/DebugLevels.tres b/Resources/Debug/DebugLevels.tres index 702ee4ab..3a40e9bc 100644 --- a/Resources/Debug/DebugLevels.tres +++ b/Resources/Debug/DebugLevels.tres @@ -1,4 +1,4 @@ -[gd_resource type="Resource" script_class="DebugMapSelectData" load_steps=37 format=3 uid="uid://d1lc8lhq1b05p"] +[gd_resource type="Resource" script_class="DebugMapSelectData" load_steps=40 format=3 uid="uid://d1lc8lhq1b05p"] [ext_resource type="Script" uid="uid://durmwwyw3dnm6" path="res://Scripts/Resources/DebugMenu/DebugMapSelectData.cs" id="1_6kwth"] [ext_resource type="Script" uid="uid://mja0rk7n2kln" path="res://Scripts/Resources/MapStartDataResource.cs" id="1_ov731"] @@ -9,6 +9,8 @@ [ext_resource type="Resource" uid="uid://cj5aa7btaw6q0" path="res://Resources/Items/Blue_Keycard.tres" id="5_em757"] [ext_resource type="Resource" uid="uid://clr1gln7nxa1o" path="res://Resources/Items/Power_Pickup.tres" id="6_sdmg8"] [ext_resource type="Resource" uid="uid://cs3ihltcn2166" path="res://Resources/Items/IcicleGun.tres" id="7_b3oo5"] +[ext_resource type="Resource" uid="uid://6ek4lmtuij4t" path="res://Resources/Maps/Roguelite.tres" id="9_ognca"] +[ext_resource type="Resource" uid="uid://cn8tu4jct04rp" path="res://Resources/StartData/Pistol_Start.tres" id="10_olpjo"] [sub_resource type="Resource" id="Resource_qnbi6"] script = ExtResource("2_tnajf") @@ -19,8 +21,8 @@ _name = "Intro" [sub_resource type="Resource" id="Resource_cfhv5"] script = ExtResource("1_ov731") EggIndex = 0 -StartingEquipment = Array[ExtResource("2_bkci5")]([]) -RemoveEquipment = Array[ExtResource("2_bkci5")]([]) +StartingEquipment = [] +RemoveEquipment = [] [sub_resource type="Resource" id="Resource_0k62o"] script = ExtResource("2_tnajf") @@ -32,8 +34,8 @@ StartData = SubResource("Resource_cfhv5") [sub_resource type="Resource" id="Resource_tpb7s"] script = ExtResource("1_ov731") EggIndex = 0 -StartingEquipment = Array[ExtResource("2_bkci5")]([]) -RemoveEquipment = Array[ExtResource("2_bkci5")]([]) +StartingEquipment = [] +RemoveEquipment = [] [sub_resource type="Resource" id="Resource_edoov"] script = ExtResource("2_tnajf") @@ -45,8 +47,8 @@ StartData = SubResource("Resource_tpb7s") [sub_resource type="Resource" id="Resource_1sw5g"] script = ExtResource("1_ov731") EggIndex = 255 -StartingEquipment = Array[ExtResource("2_bkci5")]([]) -RemoveEquipment = Array[ExtResource("2_bkci5")]([]) +StartingEquipment = [] +RemoveEquipment = [] [sub_resource type="Resource" id="Resource_47bot"] script = ExtResource("2_tnajf") @@ -59,7 +61,7 @@ StartData = SubResource("Resource_1sw5g") script = ExtResource("1_ov731") EggIndex = 2 StartingEquipment = Array[ExtResource("2_bkci5")]([ExtResource("3_fydgr"), ExtResource("4_38yta"), ExtResource("5_em757"), ExtResource("6_sdmg8")]) -RemoveEquipment = Array[ExtResource("2_bkci5")]([]) +RemoveEquipment = [] [sub_resource type="Resource" id="Resource_mgdm6"] script = ExtResource("2_tnajf") @@ -77,8 +79,8 @@ _name = "Rebel Base" [sub_resource type="Resource" id="Resource_maxpt"] script = ExtResource("1_ov731") EggIndex = 0 -StartingEquipment = Array[ExtResource("2_bkci5")]([]) -RemoveEquipment = Array[ExtResource("2_bkci5")]([]) +StartingEquipment = [] +RemoveEquipment = [] [sub_resource type="Resource" id="Resource_pein5"] script = ExtResource("2_tnajf") @@ -115,7 +117,7 @@ _name = "Default Scene" script = ExtResource("1_ov731") EggIndex = 0 StartingEquipment = Array[ExtResource("2_bkci5")]([ExtResource("7_b3oo5")]) -RemoveEquipment = Array[ExtResource("2_bkci5")]([]) +RemoveEquipment = [] [sub_resource type="Resource" id="Resource_6ijnv"] script = ExtResource("2_tnajf") @@ -134,8 +136,8 @@ metadata/_custom_type_script = "uid://dnthdjrx78u6m" [sub_resource type="Resource" id="Resource_7sue8"] script = ExtResource("1_ov731") EggIndex = 255 -StartingEquipment = Array[ExtResource("2_bkci5")]([]) -RemoveEquipment = Array[ExtResource("2_bkci5")]([]) +StartingEquipment = [] +RemoveEquipment = [] metadata/_custom_type_script = "uid://mja0rk7n2kln" [sub_resource type="Resource" id="Resource_ognca"] @@ -149,8 +151,8 @@ metadata/_custom_type_script = "uid://dnthdjrx78u6m" [sub_resource type="Resource" id="Resource_olpjo"] script = ExtResource("1_ov731") EggIndex = 0 -StartingEquipment = Array[ExtResource("2_bkci5")]([]) -RemoveEquipment = Array[ExtResource("2_bkci5")]([]) +StartingEquipment = [] +RemoveEquipment = [] metadata/_custom_type_script = "uid://mja0rk7n2kln" [sub_resource type="Resource" id="Resource_nbnej"] @@ -189,6 +191,15 @@ Path = "uid://bitld8jkjkflo" _name = "Spell Card Test" metadata/_custom_type_script = "uid://dnthdjrx78u6m" +[sub_resource type="Resource" id="Resource_gkp3t"] +script = ExtResource("2_tnajf") +Enabled = true +Map = ExtResource("9_ognca") +Path = "" +_name = "Roguelite" +StartData = ExtResource("10_olpjo") +metadata/_custom_type_script = "uid://dnthdjrx78u6m" + [resource] script = ExtResource("1_6kwth") -Maps = Array[Object]([SubResource("Resource_qnbi6"), SubResource("Resource_0k62o"), SubResource("Resource_edoov"), SubResource("Resource_47bot"), SubResource("Resource_mgdm6"), SubResource("Resource_v2as6"), SubResource("Resource_pein5"), SubResource("Resource_6wrc7"), SubResource("Resource_x3w7w"), SubResource("Resource_ajht5"), SubResource("Resource_7vmdn"), SubResource("Resource_6ijnv"), SubResource("Resource_bkci5"), SubResource("Resource_ognca"), SubResource("Resource_nbnej"), SubResource("Resource_w7lsm"), SubResource("Resource_vq1um"), SubResource("Resource_hougo"), SubResource("Resource_xhgge")]) +Maps = Array[Object]([SubResource("Resource_qnbi6"), SubResource("Resource_0k62o"), SubResource("Resource_edoov"), SubResource("Resource_47bot"), SubResource("Resource_mgdm6"), SubResource("Resource_v2as6"), SubResource("Resource_pein5"), SubResource("Resource_6wrc7"), SubResource("Resource_x3w7w"), SubResource("Resource_ajht5"), SubResource("Resource_7vmdn"), SubResource("Resource_6ijnv"), SubResource("Resource_bkci5"), SubResource("Resource_ognca"), SubResource("Resource_nbnej"), SubResource("Resource_w7lsm"), SubResource("Resource_vq1um"), SubResource("Resource_hougo"), SubResource("Resource_xhgge"), SubResource("Resource_gkp3t")]) diff --git a/Resources/RogueliteMaps/Boss1.tres b/Resources/RogueliteMaps/Boss1.tres index 25b8b5af..efb3b9ee 100644 --- a/Resources/RogueliteMaps/Boss1.tres +++ b/Resources/RogueliteMaps/Boss1.tres @@ -10,7 +10,7 @@ script = ExtResource("5_2u7yj") RoomName = &"Boss" Type = 4 -ScenePath = &"uid://da7hmajaaiohm" +ScenePath = &"uid://brytwc48xpj78" Size = Vector2i(1, 1) DoorGridPositions = Array[Vector2i]([Vector2i(0, 1)]) SpawnableEnemies = Array[Object]([ExtResource("1_j16nh"), ExtResource("2_dneml"), ExtResource("3_m2ese"), ExtResource("4_fojtq")]) diff --git a/Scenes/Maps/Roguelike.tscn b/Scenes/Maps/Roguelike.tscn index 8b5b5c5a..87fbd08b 100644 --- a/Scenes/Maps/Roguelike.tscn +++ b/Scenes/Maps/Roguelike.tscn @@ -16,7 +16,7 @@ [ext_resource type="Script" uid="uid://cnkipcolyj61w" path="res://Scripts/AlarmManager.cs" id="12_eoca5"] [ext_resource type="PackedScene" uid="uid://b3tyacxxw88lx" path="res://Scenes/Utils/StreamPlayerWithName.tscn" id="13_4n7t6"] -[node name="GameScene" type="Node2D" node_paths=PackedStringArray("NavigationRegion")] +[node name="GameScene" type="Node2D"] process_mode = 3 script = ExtResource("1_wbqvu") MapResource = ExtResource("2_k5t51") @@ -24,12 +24,12 @@ PlayerTemplate = ExtResource("2_3fyis") SpawnMarkers = Dictionary[int, NodePath]({ 0: NodePath("PlayerStartPosition") }) -NavigationRegion = NodePath("") [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"), ExtResource("6_gwtv6"), ExtResource("7_wbqvu"), ExtResource("8_3fyis"), ExtResource("9_go1yg")]) +DungeonLength = 4 [node name="CameraController" type="Camera2D" parent="."] process_mode = 1 diff --git a/Scripts/Controllers/RogueliteRoomManager.cs b/Scripts/Controllers/RogueliteRoomManager.cs index eb87497f..2b88b160 100644 --- a/Scripts/Controllers/RogueliteRoomManager.cs +++ b/Scripts/Controllers/RogueliteRoomManager.cs @@ -37,7 +37,7 @@ public partial class RogueliteRoomManager : Node2D public void InitSpawning() { - GenerateDungeon(); + GenerateStraightLineDungeon(); } private void SpawnRoomsGrid() @@ -67,6 +67,64 @@ public partial class RogueliteRoomManager : Node2D private List _mainPath = new(); private List _connections = new(); + private void GenerateStraightLineDungeon() + { + Vector2I origin = Vector2I.Zero; + var starterRoom = Rooms.Where(r => r.Type == RoomType.Starter).PickRandom(); + SpawnRoom(starterRoom, origin); + _mainPath.Add(origin); + + var currentPos = origin; + Vector2I nextPos; + + for (int i = 0; i < DungeonLength; i++) + { + nextPos = currentPos + new Vector2I(0, 1); + + var roomToSpawn = Rooms.Where(x => x.Type == RoomType.Regular).PickRandom(); + + if (!SpawnRoom(roomToSpawn, nextPos)) break; + + _mainPath.Add(nextPos); + + + if (roomToSpawn.Size.Y > 1) + { + nextPos += new Vector2I(0, roomToSpawn.Size.Y - 1); + } + + _connections.Add(new RoomConnection(currentPos, nextPos)); + + currentPos = nextPos; + } + + nextPos = currentPos + new Vector2I(0, 1); + + var bossRoom = BossRooms.PickRandom(); + + if (SpawnRoom(bossRoom, nextPos)) + { + _mainPath.Add(nextPos); + + if (bossRoom.Size.Y > 1) + { + nextPos += new Vector2I(0, bossRoom.Size.Y - 1); + } + + _connections.Add(new RoomConnection(currentPos, nextPos)); + } + + foreach (var roomEntry in _roomGrid) + { + var room = roomEntry.Value; + room.HandleDoors(pos => + { + var neighborPos = room.GridPosition + pos; + return _roomGrid.ContainsKey(neighborPos); + }); + } + } + private void GenerateDungeon() { Vector2I origin = Vector2I.Zero;