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;