diff --git a/Cirno.csproj b/Cirno.csproj index ff0cdeff..afde3cb6 100644 --- a/Cirno.csproj +++ b/Cirno.csproj @@ -1,4 +1,4 @@ - + net8.0 true diff --git a/Resources/RogueliteMaps/Beginner1.tres b/Resources/RogueliteMaps/Beginner1.tres index f70f980b..a500a9e8 100644 --- a/Resources/RogueliteMaps/Beginner1.tres +++ b/Resources/RogueliteMaps/Beginner1.tres @@ -8,6 +8,7 @@ RoomName = &"Beginning" Type = 0 ScenePath = &"uid://24wh7h2dbljf" Size = Vector2i(1, 1) +StartShrouded = false DoorGridPositions = Array[Vector2i]([Vector2i(0, -1)]) SpawnableEnemies = [] DoorDirections = 30 diff --git a/Resources/RogueliteMaps/Factory_Theme.tres b/Resources/RogueliteMaps/Factory_Theme.tres index cd7d2700..006ea50d 100644 --- a/Resources/RogueliteMaps/Factory_Theme.tres +++ b/Resources/RogueliteMaps/Factory_Theme.tres @@ -1,4 +1,4 @@ -[gd_resource type="Resource" script_class="RogueliteMapTheme" load_steps=54 format=3 uid="uid://cw6868vuvuynh"] +[gd_resource type="Resource" script_class="RogueliteMapTheme" load_steps=55 format=3 uid="uid://cw6868vuvuynh"] [ext_resource type="Script" uid="uid://bwtif3if3ea0u" path="res://Scripts/Resources/RogueliteMapTheme.cs" id="1_2rtdw"] [ext_resource type="Resource" uid="uid://cltxhkrqp055v" path="res://Resources/Items/Money_Pickup.tres" id="1_ae3bb"] @@ -45,6 +45,7 @@ [ext_resource type="PackedScene" uid="uid://cl7s06sk106uo" path="res://Scenes/Props/VendingMachine.tscn" id="30_exyjy"] [ext_resource type="Resource" uid="uid://bdpbekqhuuq4l" path="res://Resources/Items/Shield_Extend_Pickup.tres" id="41_tsgja"] [ext_resource type="Resource" uid="uid://ciybnocjfpshh" path="res://Resources/Items/Heart_Extend_Pickup.tres" id="42_qo6vk"] +[ext_resource type="PackedScene" uid="uid://c21m7w5ahpsd0" path="res://Scenes/Activable/Shroud.tscn" id="43_3kwn2"] [ext_resource type="Resource" uid="uid://bgcgeg187vg1h" path="res://Resources/Items/IcicleRepeater.tres" id="45_f7mru"] [ext_resource type="Resource" uid="uid://dau0s8ob7qnpc" path="res://Resources/Items/IceShotgun.tres" id="46_3kwn2"] [ext_resource type="Resource" uid="uid://brsukcuyoq364" path="res://Resources/Items/NuclearGunPickup.tres" id="47_to7mi"] @@ -81,6 +82,7 @@ KeyCardPrefab = ExtResource("4_qjf5s") ChestPrefab = ExtResource("1_modrh") VendingMachinePrefab = ExtResource("30_exyjy") KeyCardsPrefabs = Array[PackedScene]([ExtResource("5_0lwa1"), ExtResource("6_03ih2"), ExtResource("7_modrh"), ExtResource("8_exyjy")]) +ShroudPrefab = ExtResource("43_3kwn2") PointItemResource = ExtResource("5_ga54h") ChestChance = 5.0 EnemyDropChance = 10.0 diff --git a/Scenes/Activable/Shroud.tscn b/Scenes/Activable/Shroud.tscn index 6dcbdaa6..69f083ac 100644 --- a/Scenes/Activable/Shroud.tscn +++ b/Scenes/Activable/Shroud.tscn @@ -1,12 +1,21 @@ -[gd_scene load_steps=3 format=3 uid="uid://c21m7w5ahpsd0"] +[gd_scene load_steps=4 format=3 uid="uid://c21m7w5ahpsd0"] [ext_resource type="Texture2D" uid="uid://m32iqs21np0v" path="res://Sprites/BlackPixel.png" id="1_oowkm"] [ext_resource type="Script" uid="uid://bs6st2q4i0gum" path="res://Scripts/Activables/BlackCover.cs" id="2_qxoar"] +[sub_resource type="RectangleShape2D" id="RectangleShape2D_4wu5n"] +size = Vector2(1, 1) + [node name="Shroud" type="Sprite2D"] -visible = false z_index = 1 -position = Vector2(-920.5, 78.75) -scale = Vector2(127, 126.5) texture = ExtResource("1_oowkm") script = ExtResource("2_qxoar") + +[node name="Area2D" type="Area2D" parent="."] +collision_layer = 0 +collision_mask = 2 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] +shape = SubResource("RectangleShape2D_4wu5n") + +[connection signal="area_entered" from="Area2D" to="." method="OnAreaEntered"] diff --git a/Scenes/test.tscn b/Scenes/test.tscn index a4c4cfb1..f5523ca5 100644 --- a/Scenes/test.tscn +++ b/Scenes/test.tscn @@ -8,7 +8,6 @@ [ext_resource type="PackedScene" uid="uid://rp4jhx0tuh24" path="res://Scenes/fragola.tscn" id="4_s7wq6"] [ext_resource type="Resource" uid="uid://ct1fa2huvy34n" path="res://Resources/Items/Ammo1.tres" id="4_swym2"] [ext_resource type="Resource" uid="uid://cs3ihltcn2166" path="res://Resources/Items/IcicleGun.tres" id="5_nqier"] -[ext_resource type="Script" uid="uid://epnwjptvks3t" path="res://Scripts/Resources/LootItem.cs" id="6_8tdlb"] [ext_resource type="Resource" uid="uid://clr1gln7nxa1o" path="res://Resources/Items/Power_Pickup.tres" id="6_khabp"] [ext_resource type="Script" uid="uid://cfya7sndh7vy2" path="res://Scenes/CameraController.gd" id="6_t8ide"] [ext_resource type="PackedScene" uid="uid://crmwuwhltmdq7" path="res://Scenes/Props/MediumTank.tscn" id="7_lmrl1"] @@ -74,6 +73,7 @@ [ext_resource type="PackedScene" uid="uid://c5fiv1nioghfb" path="res://Scenes/Actors/Marisa.tscn" id="50_mp5ma"] [ext_resource type="Resource" uid="uid://37h0tjja4sns" path="res://Resources/Maps/RebelBase.tres" id="52_orkt3"] [ext_resource type="PackedScene" uid="uid://bqjcwxene73l2" path="res://Scenes/Actors/ActorEnemyTest.tscn" id="55_chha6"] +[ext_resource type="Script" uid="uid://b5fesrd4lv8t1" path="res://Scripts/Resources/Events/EventResource.cs" id="55_j86ly"] [ext_resource type="PackedScene" uid="uid://bjskkeb3ppcs8" path="res://Scenes/Actors/Turret360.tscn" id="62_h0jm4"] [ext_resource type="Script" uid="uid://v57xjmhi28kw" path="res://Scripts/Resources/Events/ControlActorEvent.cs" id="64_rphi8"] [ext_resource type="PackedScene" uid="uid://b0gpbkxdfbnjh" path="res://Scenes/Actors/ForceField_Horizontal.tscn" id="66_nxn3h"] @@ -674,7 +674,7 @@ position = Vector2(-1832, -99) [node name="Chest2" parent="Parallax2D/Factory Tilemaps/Debug Room" instance=ExtResource("25_4b2ed")] position = Vector2(-679, -408) -LootTable = Array[ExtResource("6_8tdlb")]([ExtResource("76_dskij"), ExtResource("77_wma5c"), ExtResource("6_khabp"), ExtResource("94_gd7x4"), ExtResource("94_gd7x4"), ExtResource("94_gd7x4"), ExtResource("94_gd7x4"), ExtResource("94_gd7x4"), ExtResource("94_gd7x4"), ExtResource("94_gd7x4"), ExtResource("94_gd7x4"), ExtResource("6_khabp"), ExtResource("6_khabp"), ExtResource("6_khabp"), ExtResource("6_khabp"), ExtResource("6_khabp"), ExtResource("77_wma5c"), ExtResource("77_wma5c"), ExtResource("77_wma5c"), ExtResource("77_wma5c"), ExtResource("76_dskij")]) +LootTable = [ExtResource("76_dskij"), ExtResource("77_wma5c"), ExtResource("6_khabp"), ExtResource("94_gd7x4"), ExtResource("94_gd7x4"), ExtResource("94_gd7x4"), ExtResource("94_gd7x4"), ExtResource("94_gd7x4"), ExtResource("94_gd7x4"), ExtResource("94_gd7x4"), ExtResource("94_gd7x4"), ExtResource("6_khabp"), ExtResource("6_khabp"), ExtResource("6_khabp"), ExtResource("6_khabp"), ExtResource("6_khabp"), ExtResource("77_wma5c"), ExtResource("77_wma5c"), ExtResource("77_wma5c"), ExtResource("77_wma5c"), ExtResource("76_dskij")] [node name="Valve" parent="Parallax2D/Factory Tilemaps/Debug Room" node_paths=PackedStringArray("Target") instance=ExtResource("48_8usll")] position = Vector2(-666, -545) @@ -793,7 +793,7 @@ Invisible = true metadata/_edit_group_ = true [node name="ScriptableAreaTrigger" parent="Parallax2D/Factory Tilemaps/LevelProps/DebugTeleporter" instance=ExtResource("43_kf3qc")] -Events = [SubResource("Resource_usuub")] +Events = Array[ExtResource("55_j86ly")]([SubResource("Resource_usuub")]) [node name="BlueKeycard2" parent="Parallax2D/Factory Tilemaps/LevelProps" instance=ExtResource("35_rblsn")] position = Vector2(-1032, -317) @@ -859,7 +859,7 @@ position = Vector2(-1488, -544) [node name="Chest" parent="Parallax2D/Factory Tilemaps/LevelProps" instance=ExtResource("25_4b2ed")] position = Vector2(-920, -424) -LootTable = Array[ExtResource("6_8tdlb")]([ExtResource("27_y1lom"), ExtResource("28_u0dff"), ExtResource("29_wb5l5"), ExtResource("30_0d2o6"), ExtResource("5_nqier")]) +LootTable = [ExtResource("27_y1lom"), ExtResource("28_u0dff"), ExtResource("29_wb5l5"), ExtResource("30_0d2o6"), ExtResource("5_nqier")] [node name="RedKeycard_Switch_2" parent="Parallax2D/Factory Tilemaps/LevelProps" node_paths=PackedStringArray("Target") instance=ExtResource("17_e3v0b")] position = Vector2(-1095, 132) @@ -989,7 +989,7 @@ position = Vector2(-1423, -188) [node name="LevelStartTrigger" parent="Parallax2D/Factory Tilemaps/LevelProps" instance=ExtResource("43_kf3qc")] position = Vector2(-762, -129) scale = Vector2(1.455, 1.455) -Events = [SubResource("Resource_5er5x"), SubResource("Resource_b25hy")] +Events = Array[ExtResource("55_j86ly")]([SubResource("Resource_5er5x"), SubResource("Resource_b25hy")]) [node name="AreaTrigger2" parent="Parallax2D/Factory Tilemaps/LevelProps" node_paths=PackedStringArray("Target") instance=ExtResource("28_6au4t")] position = Vector2(-435, -162) @@ -1032,7 +1032,7 @@ metadata/_edit_group_ = true [node name="Script2" type="Node2D" parent="Parallax2D/Factory Tilemaps/LevelProps/Computer2"] position = Vector2(120, 25) script = ExtResource("42_wigyb") -Events = [SubResource("Resource_wma5c")] +Events = Array[ExtResource("55_j86ly")]([SubResource("Resource_wma5c")]) [node name="Computer8" parent="Parallax2D/Factory Tilemaps/LevelProps" node_paths=PackedStringArray("Targets") instance=ExtResource("31_243ec")] position = Vector2(-2073, -215) @@ -1043,7 +1043,7 @@ metadata/_edit_group_ = true [node name="Script2" type="Node2D" parent="Parallax2D/Factory Tilemaps/LevelProps/Computer8"] position = Vector2(120, 25) script = ExtResource("42_wigyb") -Events = [SubResource("Resource_dferh")] +Events = Array[ExtResource("55_j86ly")]([SubResource("Resource_dferh")]) [node name="Computer6" parent="Parallax2D/Factory Tilemaps/LevelProps" node_paths=PackedStringArray("Targets") instance=ExtResource("31_243ec")] position = Vector2(-1113, -139) @@ -1053,7 +1053,7 @@ metadata/_edit_group_ = true [node name="Script2" type="Node2D" parent="Parallax2D/Factory Tilemaps/LevelProps/Computer6"] position = Vector2(0, 1) script = ExtResource("42_wigyb") -Events = [SubResource("Resource_cxj4w")] +Events = Array[ExtResource("55_j86ly")]([SubResource("Resource_cxj4w")]) [node name="Computer7" parent="Parallax2D/Factory Tilemaps/LevelProps" node_paths=PackedStringArray("Targets") instance=ExtResource("31_243ec")] position = Vector2(-1175.36, 213.708) @@ -1064,7 +1064,7 @@ metadata/_edit_group_ = true [node name="Computer7Script" type="Node2D" parent="Parallax2D/Factory Tilemaps/LevelProps/Computer7"] position = Vector2(0, 1) script = ExtResource("42_wigyb") -Events = [SubResource("Resource_tcc7d")] +Events = Array[ExtResource("55_j86ly")]([SubResource("Resource_tcc7d")]) [node name="Computer5" parent="Parallax2D/Factory Tilemaps/LevelProps" node_paths=PackedStringArray("Targets") instance=ExtResource("31_243ec")] position = Vector2(-1344, -251) @@ -1072,7 +1072,7 @@ Targets = [NodePath("Computer5Script")] [node name="Computer5Script" type="Node2D" parent="Parallax2D/Factory Tilemaps/LevelProps/Computer5"] script = ExtResource("42_wigyb") -Events = [SubResource("Resource_fasrq"), SubResource("Resource_mah4x"), SubResource("Resource_0bqta")] +Events = Array[ExtResource("55_j86ly")]([SubResource("Resource_fasrq"), SubResource("Resource_mah4x"), SubResource("Resource_0bqta")]) [node name="Computer3" parent="Parallax2D/Factory Tilemaps/LevelProps" node_paths=PackedStringArray("Target") instance=ExtResource("31_243ec")] position = Vector2(-612.57, -358.528) @@ -1080,7 +1080,7 @@ Target = NodePath("Script") [node name="Script" type="Node2D" parent="Parallax2D/Factory Tilemaps/LevelProps/Computer3"] script = ExtResource("42_wigyb") -Events = [SubResource("Resource_o2kpk")] +Events = Array[ExtResource("55_j86ly")]([SubResource("Resource_o2kpk")]) [node name="Computer4" parent="Parallax2D/Factory Tilemaps/LevelProps" node_paths=PackedStringArray("Target") instance=ExtResource("31_243ec")] position = Vector2(-791, -505) @@ -1088,7 +1088,7 @@ Target = NodePath("Node2D") [node name="Node2D" type="Node2D" parent="Parallax2D/Factory Tilemaps/LevelProps/Computer4"] script = ExtResource("42_wigyb") -Events = [SubResource("Resource_s3g2w")] +Events = Array[ExtResource("55_j86ly")]([SubResource("Resource_s3g2w")]) [node name="Label" type="Label" parent="Parallax2D/Factory Tilemaps/LevelProps/Computer4"] offset_left = -5.0 @@ -1117,11 +1117,11 @@ position = Vector2(-792, -407) [node name="BossBattleEndScript" type="Node2D" parent="Parallax2D/Factory Tilemaps/LevelProps"] position = Vector2(-1628.53, -477.628) script = ExtResource("42_wigyb") -Events = [SubResource("Resource_068l7"), SubResource("Resource_l3nop")] +Events = Array[ExtResource("55_j86ly")]([SubResource("Resource_068l7"), SubResource("Resource_l3nop")]) [node name="BossBattleStartScript" parent="Parallax2D/Factory Tilemaps/LevelProps" instance=ExtResource("43_kf3qc")] position = Vector2(-1487, -396) -Events = [SubResource("Resource_4f4id"), SubResource("Resource_s2o7m"), SubResource("Resource_b1dht"), SubResource("Resource_xrgpy"), SubResource("Resource_j86ly")] +Events = Array[ExtResource("55_j86ly")]([SubResource("Resource_4f4id"), SubResource("Resource_s2o7m"), SubResource("Resource_b1dht"), SubResource("Resource_xrgpy"), SubResource("Resource_j86ly")]) [node name="Enemy13" parent="Parallax2D/Factory Tilemaps/LevelProps" instance=ExtResource("47_u1ve6")] position = Vector2(-1657, -788) @@ -1141,6 +1141,8 @@ State = 1 position = Vector2(-1940, -648) [node name="Shroud" parent="Parallax2D/Factory Tilemaps/LevelProps" instance=ExtResource("74_oaf68")] +position = Vector2(-918.5, 82.5) +scale = Vector2(129, 119) [node name="Shroud4" parent="Parallax2D/Factory Tilemaps/LevelProps" instance=ExtResource("74_oaf68")] position = Vector2(-2098.5, -343) @@ -1312,35 +1314,35 @@ position = Vector2(-1624, -813) [node name="Chest3" parent="Parallax2D/Factory Tilemaps/LevelProps" instance=ExtResource("25_4b2ed")] position = Vector2(-376, 54) -LootTable = Array[ExtResource("6_8tdlb")]([ExtResource("6_khabp"), ExtResource("94_gd7x4"), ExtResource("95_srv0g")]) +LootTable = [ExtResource("6_khabp"), ExtResource("94_gd7x4"), ExtResource("95_srv0g")] [node name="Chest5" parent="Parallax2D/Factory Tilemaps/LevelProps" instance=ExtResource("25_4b2ed")] position = Vector2(-1048, -139) -LootTable = Array[ExtResource("6_8tdlb")]([ExtResource("6_khabp"), ExtResource("94_gd7x4"), ExtResource("95_srv0g"), ExtResource("4_swym2")]) +LootTable = [ExtResource("6_khabp"), ExtResource("94_gd7x4"), ExtResource("95_srv0g"), ExtResource("4_swym2")] [node name="Chest6" parent="Parallax2D/Factory Tilemaps/LevelProps" instance=ExtResource("25_4b2ed")] position = Vector2(-2104, -362) -LootTable = Array[ExtResource("6_8tdlb")]([ExtResource("6_khabp"), ExtResource("94_gd7x4"), ExtResource("95_srv0g"), ExtResource("4_swym2")]) +LootTable = [ExtResource("6_khabp"), ExtResource("94_gd7x4"), ExtResource("95_srv0g"), ExtResource("4_swym2")] [node name="Chest4" parent="Parallax2D/Factory Tilemaps/LevelProps" instance=ExtResource("25_4b2ed")] position = Vector2(-823, 67) -LootTable = Array[ExtResource("6_8tdlb")]([ExtResource("6_khabp"), ExtResource("94_gd7x4"), ExtResource("95_srv0g")]) +LootTable = [ExtResource("6_khabp"), ExtResource("94_gd7x4"), ExtResource("95_srv0g")] [node name="Chest7" parent="Parallax2D/Factory Tilemaps/LevelProps" instance=ExtResource("25_4b2ed")] position = Vector2(-1417, 326) -LootTable = Array[ExtResource("6_8tdlb")]([ExtResource("6_khabp"), ExtResource("94_gd7x4"), ExtResource("95_srv0g")]) +LootTable = [ExtResource("6_khabp"), ExtResource("94_gd7x4"), ExtResource("95_srv0g")] [node name="Chest10" parent="Parallax2D/Factory Tilemaps/LevelProps" instance=ExtResource("25_4b2ed")] position = Vector2(-1515, 408) -LootTable = Array[ExtResource("6_8tdlb")]([ExtResource("6_khabp"), ExtResource("94_gd7x4"), ExtResource("95_srv0g")]) +LootTable = [ExtResource("6_khabp"), ExtResource("94_gd7x4"), ExtResource("95_srv0g")] [node name="Chest8" parent="Parallax2D/Factory Tilemaps/LevelProps" instance=ExtResource("25_4b2ed")] position = Vector2(-1544, 552) -LootTable = Array[ExtResource("6_8tdlb")]([ExtResource("6_khabp"), ExtResource("94_gd7x4"), ExtResource("95_srv0g")]) +LootTable = [ExtResource("6_khabp"), ExtResource("94_gd7x4"), ExtResource("95_srv0g")] [node name="Chest9" parent="Parallax2D/Factory Tilemaps/LevelProps" instance=ExtResource("25_4b2ed")] position = Vector2(-1384, 231) -LootTable = Array[ExtResource("6_8tdlb")]([ExtResource("6_khabp"), ExtResource("94_gd7x4"), ExtResource("95_srv0g")]) +LootTable = [ExtResource("6_khabp"), ExtResource("94_gd7x4"), ExtResource("95_srv0g")] [node name="Ammo13" parent="Parallax2D/Factory Tilemaps/LevelProps" instance=ExtResource("34_17pjh")] position = Vector2(-392, 52) @@ -1436,7 +1438,7 @@ position = Vector2(-2232, -203) [node name="ScriptableAreaTrigger" parent="Parallax2D/Factory Tilemaps/LevelProps" instance=ExtResource("43_kf3qc")] position = Vector2(-2063, -232) -Events = [SubResource("Resource_l476f"), SubResource("Resource_dskij")] +Events = Array[ExtResource("55_j86ly")]([SubResource("Resource_l476f"), SubResource("Resource_dskij")]) [node name="ShieldExtendPickup" parent="Parallax2D/Factory Tilemaps/LevelProps" instance=ExtResource("103_0bqta")] position = Vector2(-1646, 38) @@ -1564,7 +1566,7 @@ position = Vector2(-1633, 391) [node name="MovementSensorLonger" parent="Parallax2D/Factory Tilemaps/LevelProps" instance=ExtResource("112_j86ly")] position = Vector2(-1495, 516) -Events = [SubResource("Resource_uslvo")] +Events = Array[ExtResource("55_j86ly")]([SubResource("Resource_uslvo")]) [node name="WallEmitter" parent="Parallax2D/Factory Tilemaps/LevelProps" instance=ExtResource("113_dferh")] position = Vector2(-1480, 451) diff --git a/Scripts/Activables/BlackCover.cs b/Scripts/Activables/BlackCover.cs index dd113420..f66fdbe5 100644 --- a/Scripts/Activables/BlackCover.cs +++ b/Scripts/Activables/BlackCover.cs @@ -7,6 +7,9 @@ public partial class BlackCover : Sprite2D, IActivable { [Export] public bool StartActive { get; private set; } = true; + + [Signal] + public delegate void DisabledEventHandler(); private bool _activated; @@ -47,7 +50,18 @@ public partial class BlackCover : Sprite2D, IActivable } else { + EmitSignalDisabled(); this.Hide(); } } + + private void OnAreaEntered(Area2D area) + { + if (area is not InteractionController interactionController) + { + return; + } + _activated = false; + UpdateSprite(); + } } \ No newline at end of file diff --git a/Scripts/Controllers/RogueliteRoom.cs b/Scripts/Controllers/RogueliteRoom.cs index 72a77401..26d9ced2 100644 --- a/Scripts/Controllers/RogueliteRoom.cs +++ b/Scripts/Controllers/RogueliteRoom.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using Cirno.Scripts.Activables; using Cirno.Scripts.Components.FSM.Enemy; using Cirno.Scripts.Enums; using Cirno.Scripts.Interactables; @@ -24,8 +25,11 @@ public partial class RogueliteRoom : Node2D public Vector2I BottomLeft => GridPosition + new Vector2I(0, RoomResource.Size.Y - 1); - private Vector2 BaseRoomSize => new Vector2(320, 160); + //private Vector2 BaseRoomSize => new Vector2(320, 160); + private Vector2 BaseRoomSize => MapTheme.TileSize * MapTheme.RoomSizeInTiles; + public Vector2 RoomSize => BaseRoomSize * RoomResource.Size; + public Vector2I RandomBottomExit() { return BottomLeft + new Vector2I(GD.RandRange(0, RoomResource.Size.X - 1), 0); @@ -63,6 +67,7 @@ public partial class RogueliteRoom : Node2D SpawnEnemies(); SpawnFeatures(); SpawnFixedWeapons(); + SpawnShroud(); //HandleDoors(connectionChecker); //AddDebugLabel(); return this; @@ -441,4 +446,16 @@ public partial class RogueliteRoom : Node2D } } } + + public void SpawnShroud() + { + if (!RoomResource.StartShrouded) return; + + var shroud = this.CreateChild(MapTheme.ShroudPrefab); + + shroud.Position = new Vector2(RoomSize.X / 2, RoomSize.Y / 2); + shroud.Scale = RoomSize; + + } + } \ No newline at end of file diff --git a/Scripts/Controllers/RogueliteRoomManager.cs b/Scripts/Controllers/RogueliteRoomManager.cs index b1fa18d7..8ddc1332 100644 --- a/Scripts/Controllers/RogueliteRoomManager.cs +++ b/Scripts/Controllers/RogueliteRoomManager.cs @@ -121,6 +121,9 @@ public partial class RogueliteRoomManager : Node2D var shuffledOffshoots = offshoots.Shuffle().ToList(); + // var offshootsQueue = new Queue(); + // offshootsQueue.EnqueueRange(shuffledOffshoots); + int currentOffshoot = 0; RogueliteRoom lastRoom = spawnedBeginRoom; diff --git a/Scripts/Resources/Roguelite/RogueliteRoomResource.cs b/Scripts/Resources/Roguelite/RogueliteRoomResource.cs index 8c3f8f06..5bcd109f 100644 --- a/Scripts/Resources/Roguelite/RogueliteRoomResource.cs +++ b/Scripts/Resources/Roguelite/RogueliteRoomResource.cs @@ -14,6 +14,7 @@ public partial class RogueliteRoomResource : Resource [Export] public StringName ScenePath { get; set; } [Export] public Vector2I Size { get; set; } = new(1, 1); + [Export] public bool StartShrouded { get; set; } = true; [Export] public Array DoorGridPositions { get; set; } = []; [Export] public Array SpawnableEnemies { get; set; } diff --git a/Scripts/Resources/RogueliteMapTheme.cs b/Scripts/Resources/RogueliteMapTheme.cs index 41dc6671..23b0d57d 100644 --- a/Scripts/Resources/RogueliteMapTheme.cs +++ b/Scripts/Resources/RogueliteMapTheme.cs @@ -1,4 +1,5 @@ -using Cirno.Scripts.Resources.Loot; +using Cirno.Scripts.Activables; +using Cirno.Scripts.Resources.Loot; using Cirno.Scripts.Resources.Roguelite; using Godot; using Godot.Collections; @@ -8,6 +9,10 @@ namespace Cirno.Scripts.Resources; [GlobalClass] public partial class RogueliteMapTheme : Resource { + [ExportCategory("Dimensions")] + [Export] public Vector2I TileSize { get; set; } = new Vector2I(16, 16); + [Export] public Vector2I RoomSizeInTiles { get; set; } = new Vector2I(20, 10); + [ExportGroup("Prefabs")] [Export] public PackedScene HorizontalDoorPrefab { get; set; } [Export] public PackedScene HorizontalWallPrefab { get; set; } @@ -18,8 +23,10 @@ public partial class RogueliteMapTheme : Resource [Export] public PackedScene ChestPrefab { get; set; } [Export] public PackedScene VendingMachinePrefab { get; set; } [Export] public Array KeyCardsPrefabs { get; set; } + [Export] public PackedScene ShroudPrefab { get; set; } [Export] public LootItem PointItemResource { get; set; } + [ExportGroup("Chances")] [Export] public double ChestChance { get; set; } [Export] public float EnemyDropChance { get; set; } diff --git a/Scripts/Utils/QueueExtensions.cs b/Scripts/Utils/QueueExtensions.cs new file mode 100644 index 00000000..42921a2b --- /dev/null +++ b/Scripts/Utils/QueueExtensions.cs @@ -0,0 +1,15 @@ +using System.Collections.Generic; + +namespace Cirno.Scripts.Utils; + +public static class QueueExtensions +{ + public static Queue EnqueueRange(this Queue queue, IEnumerable items) + { + foreach (var item in items) + { + queue.Enqueue(item); + } + return queue; + } +} \ No newline at end of file diff --git a/Scripts/Utils/QueueExtensions.cs.uid b/Scripts/Utils/QueueExtensions.cs.uid new file mode 100644 index 00000000..721f4cc0 --- /dev/null +++ b/Scripts/Utils/QueueExtensions.cs.uid @@ -0,0 +1 @@ +uid://cttwp4gofabln