diff --git a/Resources/RogueliteMaps/BigLarge.tres b/Resources/RogueliteMaps/BigLarge.tres new file mode 100644 index 00000000..41a445dd --- /dev/null +++ b/Resources/RogueliteMaps/BigLarge.tres @@ -0,0 +1,17 @@ +[gd_resource type="Resource" script_class="RogueliteRoomResource" load_steps=6 format=3 uid="uid://n6nb5yco60gi"] + +[ext_resource type="Resource" uid="uid://cocl3qontm3be" path="res://Resources/Enemies/Base_Fairy.tres" id="1_ch23e"] +[ext_resource type="Resource" uid="uid://cqfyuurvqb8m6" path="res://Resources/Enemies/Base_Fairy_Special.tres" id="2_l64su"] +[ext_resource type="Resource" uid="uid://qbo6avc7x64b" path="res://Resources/Enemies/Fairy_Guard.tres" id="3_0b7uq"] +[ext_resource type="Resource" uid="uid://cfdvg162u65sr" path="res://Resources/Enemies/Thermathron.tres" id="4_iwrey"] +[ext_resource type="Script" uid="uid://bl2ne8w12e3a" path="res://Scripts/Resources/Roguelite/RogueliteRoomResource.cs" id="5_yivs1"] + +[resource] +script = ExtResource("5_yivs1") +RoomName = &"Test" +Type = 1 +ScenePath = &"uid://c3x64n451f3mk" +Size = Vector2i(3, 2) +DoorGridPositions = Array[Vector2i]([Vector2i(0, -1), Vector2i(0, 1), Vector2i(1, 0), Vector2i(-1, 0)]) +SpawnableEnemies = Array[Object]([ExtResource("1_ch23e"), ExtResource("2_l64su"), ExtResource("3_0b7uq"), ExtResource("4_iwrey")]) +metadata/_custom_type_script = "uid://bl2ne8w12e3a" diff --git a/Scenes/Maps/Roguelike.tscn b/Scenes/Maps/Roguelike.tscn index 58cb3be4..6a691ac1 100644 --- a/Scenes/Maps/Roguelike.tscn +++ b/Scenes/Maps/Roguelike.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=20 format=3 uid="uid://bf1kqr3o6r6d4"] +[gd_scene load_steps=21 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"] @@ -18,6 +18,7 @@ [ext_resource type="Resource" uid="uid://cmgiqsmujujss" path="res://Resources/RogueliteMaps/TestMapLongX3.tres" id="12_83bvc"] [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"] +[ext_resource type="Resource" uid="uid://n6nb5yco60gi" path="res://Resources/RogueliteMaps/BigLarge.tres" id="13_y651a"] [ext_resource type="Script" uid="uid://3v6q0p5krqn7" path="res://Scripts/UI/Minimap.cs" id="16_pfafs"] [node name="GameScene" type="Node2D"] @@ -32,7 +33,7 @@ SpawnMarkers = Dictionary[int, 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"), ExtResource("5_pfafs"), ExtResource("11_68lig"), ExtResource("12_83bvc")]) +Rooms = Array[Object]([ExtResource("5_gwtv6"), ExtResource("6_gwtv6"), ExtResource("7_wbqvu"), ExtResource("8_3fyis"), ExtResource("9_go1yg"), ExtResource("5_pfafs"), ExtResource("11_68lig"), ExtResource("12_83bvc"), ExtResource("13_y651a")]) [node name="CameraController" type="Camera2D" parent="."] process_mode = 1 diff --git a/Scenes/Maps/RogueliteMaps/Beginner1.tscn b/Scenes/Maps/RogueliteMaps/Beginner1.tscn index 52d477d6..ec7c71fd 100644 --- a/Scenes/Maps/RogueliteMaps/Beginner1.tscn +++ b/Scenes/Maps/RogueliteMaps/Beginner1.tscn @@ -44,7 +44,7 @@ position = Vector2(159, 23) script = ExtResource("5_mqiea") [node name="South" type="Marker2D" parent="Doors"] -position = Vector2(159.196, 149.348) +position = Vector2(159, 160) script = ExtResource("5_mqiea") Direction = 1 diff --git a/Scenes/Maps/RogueliteMaps/RgBigLarge.tscn b/Scenes/Maps/RogueliteMaps/RgBigLarge.tscn new file mode 100644 index 00000000..fbae99f4 --- /dev/null +++ b/Scenes/Maps/RogueliteMaps/RgBigLarge.tscn @@ -0,0 +1,104 @@ +[gd_scene load_steps=9 format=4 uid="uid://c3x64n451f3mk"] + +[ext_resource type="Script" uid="uid://b2j00riayxkit" path="res://Scripts/Controllers/RogueliteRoom.cs" id="1_u4oyu"] +[ext_resource type="Resource" uid="uid://n6nb5yco60gi" path="res://Resources/RogueliteMaps/BigLarge.tres" id="2_u4oyu"] +[ext_resource type="PackedScene" uid="uid://l84on3kv2s52" path="res://Scenes/Door_Horizontal.tscn" id="3_6wahx"] +[ext_resource type="PackedScene" uid="uid://b0k2grrc8xp1l" path="res://Scenes/Props/BigTank.tscn" id="4_3d7yv"] +[ext_resource type="TileSet" uid="uid://6k28roiljylj" path="res://Tilesets/factory_tileset.tres" id="5_kigg1"] +[ext_resource type="Script" uid="uid://krean0uywtms" path="res://Scripts/TilemapAvoidance.cs" id="6_tgkll"] +[ext_resource type="Script" uid="uid://ddry5kjj3fr6c" path="res://Scripts/Controllers/DoorMarker.cs" id="7_67kci"] + +[sub_resource type="NavigationPolygon" id="NavigationPolygon_rlq0q"] +vertices = PackedVector2Array(474, 58, 474, 10, 486, 10, 486, 58, 794, 58, 794, 10, 806, 10, 806, 58, 934, 58, 934, 134, 806, 134, 794, 134, 806, 150, 794, 150, 486, 134, 474, 134, 486, 150, 474, 150, 166, 58, 166, 134, 166, 150, 154, 150, 154, 134, 154, 58, 26, 134, 26, 58, 166, 10, 154, 10) +polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3), PackedInt32Array(4, 5, 6, 7), PackedInt32Array(7, 8, 9, 10), PackedInt32Array(4, 7, 10, 11), PackedInt32Array(10, 12, 13, 11), PackedInt32Array(3, 4, 11, 14), PackedInt32Array(0, 3, 14, 15), PackedInt32Array(14, 16, 17, 15), PackedInt32Array(18, 0, 15, 19), PackedInt32Array(19, 20, 21, 22), PackedInt32Array(18, 19, 22, 23), PackedInt32Array(22, 24, 25, 23), PackedInt32Array(26, 18, 23, 27)]) +outlines = Array[PackedVector2Array]([PackedVector2Array(17, 36, 14, 12, 47, 15, 49, 34)]) +parsed_collision_mask = 353 +source_geometry_mode = 1 + +[node name="Map" type="Node2D"] +process_mode = 1 +script = ExtResource("1_u4oyu") +RoomResource = ExtResource("2_u4oyu") +DoorPrefab = ExtResource("3_6wahx") +WallPrefab = ExtResource("4_3d7yv") + +[node name="Tilemaps" type="Node2D" parent="." groups=["navigation_polygon_source_geometry_group"]] + +[node name="Floor" type="TileMapLayer" parent="Tilemaps" node_paths=PackedStringArray("_solidLayers") groups=["Solid"]] +tile_map_data = PackedByteArray("AAAAAAIAAAAIAAQAAAAAAAMAAAAIAAQAAAAAAAQAAAAIAAQAAAAAAAUAAAAIAAQAAAAAAAYAAAAIAAQAAAAAAAcAAAAIAAQAAAAAAAgAAAAIAAQAAAAAAAkAAAAIAAQAAAABAAIAAAAIAAQAAAABAAMAAAAIAAQAAAABAAQAAAAIAAQAAAABAAUAAAAIAAQAAAABAAYAAAAIAAQAAAABAAcAAAAIAAQAAAABAAgAAAAIAAQAAAABAAkAAAAIAAQAAAACAAIAAAAIAAQAAAACAAMAAAAIAAQAAAACAAQAAAAIAAQAAAACAAUAAAAIAAQAAAACAAYAAAAIAAQAAAACAAcAAAAIAAQAAAACAAgAAAAIAAQAAAACAAkAAAAIAAQAAAADAAIAAAAIAAQAAAADAAMAAAAIAAQAAAADAAQAAAAIAAQAAAADAAUAAAAIAAQAAAADAAYAAAAIAAQAAAADAAcAAAAIAAQAAAADAAgAAAAIAAQAAAADAAkAAAAIAAQAAAAEAAIAAAAIAAQAAAAEAAMAAAAIAAQAAAAEAAQAAAAIAAQAAAAEAAUAAAAIAAQAAAAEAAYAAAAIAAQAAAAEAAcAAAAIAAQAAAAEAAgAAAAIAAQAAAAEAAkAAAAIAAQAAAAFAAIAAAAIAAQAAAAFAAMAAAAIAAQAAAAFAAQAAAAIAAQAAAAFAAUAAAAIAAQAAAAFAAYAAAAIAAQAAAAFAAcAAAAIAAQAAAAFAAgAAAAIAAQAAAAFAAkAAAAIAAQAAAAGAAIAAAAIAAQAAAAGAAMAAAAIAAQAAAAGAAQAAAAIAAQAAAAGAAUAAAAIAAQAAAAGAAYAAAAIAAQAAAAGAAcAAAAIAAQAAAAGAAgAAAAIAAQAAAAGAAkAAAAIAAQAAAAHAAIAAAAIAAQAAAAHAAMAAAAIAAQAAAAHAAQAAAAIAAQAAAAHAAUAAAAIAAQAAAAHAAYAAAAIAAQAAAAHAAcAAAAIAAQAAAAHAAgAAAAIAAQAAAAHAAkAAAAIAAQAAAAIAAIAAAAIAAQAAAAIAAMAAAAIAAQAAAAIAAQAAAAIAAQAAAAIAAUAAAAIAAQAAAAIAAYAAAAIAAQAAAAIAAcAAAAIAAQAAAAIAAgAAAAIAAQAAAAIAAkAAAAIAAQAAAAJAAIAAAAIAAQAAAAJAAMAAAAIAAQAAAAJAAQAAAAIAAQAAAAJAAUAAAAIAAQAAAAJAAYAAAAIAAQAAAAJAAcAAAAIAAQAAAAJAAgAAAAIAAQAAAAJAAkAAAAIAAQAAAAKAAIAAAAIAAQAAAAKAAMAAAAIAAQAAAAKAAQAAAAIAAQAAAAKAAUAAAAIAAQAAAAKAAYAAAAIAAQAAAAKAAcAAAAIAAQAAAAKAAgAAAAIAAQAAAAKAAkAAAAIAAQAAAALAAIAAAAIAAQAAAALAAUAAAAIAAQAAAALAAYAAAAIAAQAAAALAAcAAAAIAAQAAAALAAgAAAAIAAQAAAALAAkAAAAIAAQAAAAMAAIAAAAIAAQAAAAMAAUAAAAIAAQAAAAMAAYAAAAIAAQAAAAMAAcAAAAIAAQAAAAMAAgAAAAIAAQAAAAMAAkAAAAIAAQAAAANAAIAAAAIAAQAAAANAAMAAAAIAAQAAAANAAQAAAAIAAQAAAANAAUAAAAIAAQAAAANAAYAAAAIAAQAAAANAAcAAAAIAAQAAAANAAgAAAAIAAQAAAANAAkAAAAIAAQAAAAOAAIAAAAIAAQAAAAOAAMAAAAIAAQAAAAOAAQAAAAIAAQAAAAOAAUAAAAIAAQAAAAOAAYAAAAIAAQAAAAOAAcAAAAIAAQAAAAOAAgAAAAIAAQAAAAOAAkAAAAIAAQAAAAPAAIAAAAIAAQAAAAPAAMAAAAIAAQAAAAPAAQAAAAIAAQAAAAPAAUAAAAIAAQAAAAPAAYAAAAIAAQAAAAPAAcAAAAIAAQAAAAPAAgAAAAIAAQAAAAPAAkAAAAIAAQAAAAQAAIAAAAIAAQAAAAQAAMAAAAIAAQAAAAQAAQAAAAIAAQAAAAQAAUAAAAIAAQAAAAQAAYAAAAIAAQAAAAQAAcAAAAIAAQAAAAQAAgAAAAIAAQAAAAQAAkAAAAIAAQAAAARAAIAAAAIAAQAAAARAAMAAAAIAAQAAAARAAQAAAAIAAQAAAARAAUAAAAIAAQAAAARAAYAAAAIAAQAAAARAAcAAAAIAAQAAAARAAgAAAAIAAQAAAARAAkAAAAIAAQAAAASAAIAAAAIAAQAAAASAAMAAAAIAAQAAAASAAQAAAAIAAQAAAASAAUAAAAIAAQAAAASAAYAAAAIAAQAAAASAAcAAAAIAAQAAAASAAgAAAAIAAQAAAASAAkAAAAIAAQAAAATAAIAAAAIAAQAAAATAAMAAAAIAAQAAAATAAQAAAAIAAQAAAATAAUAAAAIAAQAAAATAAYAAAAIAAQAAAATAAcAAAAIAAQAAAATAAgAAAAIAAQAAAATAAkAAAAIAAQAAAAAAAAAAAAIAAQAAAAAAAEAAAAIAAQAAAABAAAAAAAIAAQAAAABAAEAAAAIAAQAAAACAAAAAAAIAAQAAAACAAEAAAAIAAQAAAADAAAAAAAIAAQAAAADAAEAAAAIAAQAAAAEAAAAAAAIAAQAAAAEAAEAAAAIAAQAAAAFAAAAAAAIAAQAAAAFAAEAAAAIAAQAAAAGAAAAAAAIAAQAAAAGAAEAAAAIAAQAAAAHAAAAAAAIAAQAAAAHAAEAAAAIAAQAAAAIAAAAAAAIAAQAAAAIAAEAAAAIAAQAAAAJAAAAAAAIAAQAAAAJAAEAAAAIAAQAAAAKAAAAAAAIAAQAAAAKAAEAAAAIAAQAAAALAAAAAAAIAAQAAAALAAEAAAAIAAQAAAALAAMAAAAIAAQAAAALAAQAAAAIAAQAAAAMAAAAAAAIAAQAAAAMAAEAAAAIAAQAAAAMAAMAAAAIAAQAAAAMAAQAAAAIAAQAAAANAAAAAAAIAAQAAAANAAEAAAAIAAQAAAAOAAAAAAAIAAQAAAAOAAEAAAAIAAQAAAAPAAAAAAAIAAQAAAAPAAEAAAAIAAQAAAAQAAAAAAAIAAQAAAAQAAEAAAAIAAQAAAARAAAAAAAIAAQAAAARAAEAAAAIAAQAAAASAAAAAAAIAAQAAAASAAEAAAAIAAQAAAATAAAAAAAIAAQAAAATAAEAAAAIAAQAAAAUAAAAAAAIAAQAAAAUAAEAAAAIAAQAAAAUAAIAAAAIAAQAAAAUAAMAAAAIAAQAAAAUAAQAAAAIAAQAAAAUAAUAAAAIAAQAAAAUAAYAAAAIAAQAAAAUAAcAAAAIAAQAAAAUAAgAAAAIAAQAAAAUAAkAAAAIAAQAAAAVAAAAAAAIAAQAAAAVAAEAAAAIAAQAAAAVAAIAAAAIAAQAAAAVAAMAAAAIAAQAAAAVAAQAAAAIAAQAAAAVAAUAAAAIAAQAAAAVAAYAAAAIAAQAAAAVAAcAAAAIAAQAAAAVAAgAAAAIAAQAAAAVAAkAAAAIAAQAAAAWAAAAAAAIAAQAAAAWAAEAAAAIAAQAAAAWAAIAAAAIAAQAAAAWAAMAAAAIAAQAAAAWAAQAAAAIAAQAAAAWAAUAAAAIAAQAAAAWAAYAAAAIAAQAAAAWAAcAAAAIAAQAAAAWAAgAAAAIAAQAAAAWAAkAAAAIAAQAAAAXAAAAAAAIAAQAAAAXAAEAAAAIAAQAAAAXAAIAAAAIAAQAAAAXAAMAAAAIAAQAAAAXAAQAAAAIAAQAAAAXAAUAAAAIAAQAAAAXAAYAAAAIAAQAAAAXAAcAAAAIAAQAAAAXAAgAAAAIAAQAAAAXAAkAAAAIAAQAAAAYAAAAAAAIAAQAAAAYAAEAAAAIAAQAAAAYAAIAAAAIAAQAAAAYAAMAAAAIAAQAAAAYAAQAAAAIAAQAAAAYAAUAAAAIAAQAAAAYAAYAAAAIAAQAAAAYAAcAAAAIAAQAAAAYAAgAAAAIAAQAAAAYAAkAAAAIAAQAAAAZAAAAAAAIAAQAAAAZAAEAAAAIAAQAAAAZAAIAAAAIAAQAAAAZAAMAAAAIAAQAAAAZAAQAAAAIAAQAAAAZAAUAAAAIAAQAAAAZAAYAAAAIAAQAAAAZAAcAAAAIAAQAAAAZAAgAAAAIAAQAAAAZAAkAAAAIAAQAAAAaAAAAAAAIAAQAAAAaAAEAAAAIAAQAAAAaAAIAAAAIAAQAAAAaAAMAAAAIAAQAAAAaAAQAAAAIAAQAAAAaAAUAAAAIAAQAAAAaAAYAAAAIAAQAAAAaAAcAAAAIAAQAAAAaAAgAAAAIAAQAAAAaAAkAAAAIAAQAAAAbAAAAAAAIAAQAAAAbAAEAAAAIAAQAAAAbAAIAAAAIAAQAAAAbAAMAAAAIAAQAAAAbAAQAAAAIAAQAAAAbAAUAAAAIAAQAAAAbAAYAAAAIAAQAAAAbAAcAAAAIAAQAAAAbAAgAAAAIAAQAAAAbAAkAAAAIAAQAAAAcAAAAAAAIAAQAAAAcAAEAAAAIAAQAAAAcAAIAAAAIAAQAAAAcAAMAAAAIAAQAAAAcAAQAAAAIAAQAAAAcAAUAAAAIAAQAAAAcAAYAAAAIAAQAAAAcAAcAAAAIAAQAAAAcAAgAAAAIAAQAAAAcAAkAAAAIAAQAAAAdAAAAAAAIAAQAAAAdAAEAAAAIAAQAAAAdAAIAAAAIAAQAAAAdAAMAAAAIAAQAAAAdAAQAAAAIAAQAAAAdAAUAAAAIAAQAAAAdAAYAAAAIAAQAAAAdAAcAAAAIAAQAAAAdAAgAAAAIAAQAAAAdAAkAAAAIAAQAAAAeAAAAAAAIAAQAAAAeAAEAAAAIAAQAAAAeAAIAAAAIAAQAAAAeAAMAAAAIAAQAAAAeAAQAAAAIAAQAAAAeAAUAAAAIAAQAAAAeAAYAAAAIAAQAAAAeAAcAAAAIAAQAAAAeAAgAAAAIAAQAAAAeAAkAAAAIAAQAAAAfAAAAAAAIAAQAAAAfAAEAAAAIAAQAAAAfAAIAAAAIAAQAAAAfAAMAAAAIAAQAAAAfAAQAAAAIAAQAAAAfAAUAAAAIAAQAAAAfAAYAAAAIAAQAAAAfAAcAAAAIAAQAAAAfAAgAAAAIAAQAAAAfAAkAAAAIAAQAAAAgAAAAAAAIAAQAAAAgAAEAAAAIAAQAAAAgAAIAAAAIAAQAAAAgAAMAAAAIAAQAAAAgAAQAAAAIAAQAAAAgAAUAAAAIAAQAAAAgAAYAAAAIAAQAAAAgAAcAAAAIAAQAAAAgAAgAAAAIAAQAAAAgAAkAAAAIAAQAAAAhAAAAAAAIAAQAAAAhAAEAAAAIAAQAAAAhAAIAAAAIAAQAAAAhAAMAAAAIAAQAAAAhAAQAAAAIAAQAAAAhAAUAAAAIAAQAAAAhAAYAAAAIAAQAAAAhAAcAAAAIAAQAAAAhAAgAAAAIAAQAAAAhAAkAAAAIAAQAAAAiAAAAAAAIAAQAAAAiAAEAAAAIAAQAAAAiAAIAAAAIAAQAAAAiAAMAAAAIAAQAAAAiAAQAAAAIAAQAAAAiAAUAAAAIAAQAAAAiAAYAAAAIAAQAAAAiAAcAAAAIAAQAAAAiAAgAAAAIAAQAAAAiAAkAAAAIAAQAAAAjAAAAAAAIAAQAAAAjAAEAAAAIAAQAAAAjAAIAAAAIAAQAAAAjAAMAAAAIAAQAAAAjAAQAAAAIAAQAAAAjAAUAAAAIAAQAAAAjAAYAAAAIAAQAAAAjAAcAAAAIAAQAAAAjAAgAAAAIAAQAAAAjAAkAAAAIAAQAAAAkAAAAAAAIAAQAAAAkAAEAAAAIAAQAAAAkAAIAAAAIAAQAAAAkAAMAAAAIAAQAAAAkAAQAAAAIAAQAAAAkAAUAAAAIAAQAAAAkAAYAAAAIAAQAAAAkAAcAAAAIAAQAAAAkAAgAAAAIAAQAAAAkAAkAAAAIAAQAAAAlAAAAAAAIAAQAAAAlAAEAAAAIAAQAAAAlAAIAAAAIAAQAAAAlAAMAAAAIAAQAAAAlAAQAAAAIAAQAAAAlAAUAAAAIAAQAAAAlAAYAAAAIAAQAAAAlAAcAAAAIAAQAAAAlAAgAAAAIAAQAAAAlAAkAAAAIAAQAAAAmAAAAAAAIAAQAAAAmAAEAAAAIAAQAAAAmAAIAAAAIAAQAAAAmAAMAAAAIAAQAAAAmAAQAAAAIAAQAAAAmAAUAAAAIAAQAAAAmAAYAAAAIAAQAAAAmAAcAAAAIAAQAAAAmAAgAAAAIAAQAAAAmAAkAAAAIAAQAAAAnAAAAAAAIAAQAAAAnAAEAAAAIAAQAAAAnAAIAAAAIAAQAAAAnAAMAAAAIAAQAAAAnAAQAAAAIAAQAAAAnAAUAAAAIAAQAAAAnAAYAAAAIAAQAAAAnAAcAAAAIAAQAAAAnAAgAAAAIAAQAAAAnAAkAAAAIAAQAAAAoAAAAAAAIAAQAAAAoAAEAAAAIAAQAAAAoAAIAAAAIAAQAAAAoAAMAAAAIAAQAAAAoAAQAAAAIAAQAAAAoAAUAAAAIAAQAAAAoAAYAAAAIAAQAAAAoAAcAAAAIAAQAAAAoAAgAAAAIAAQAAAAoAAkAAAAIAAQAAAApAAAAAAAIAAQAAAApAAEAAAAIAAQAAAApAAIAAAAIAAQAAAApAAMAAAAIAAQAAAApAAQAAAAIAAQAAAApAAUAAAAIAAQAAAApAAYAAAAIAAQAAAApAAcAAAAIAAQAAAApAAgAAAAIAAQAAAApAAkAAAAIAAQAAAAqAAAAAAAIAAQAAAAqAAEAAAAIAAQAAAAqAAIAAAAIAAQAAAAqAAMAAAAIAAQAAAAqAAQAAAAIAAQAAAAqAAUAAAAIAAQAAAAqAAYAAAAIAAQAAAAqAAcAAAAIAAQAAAAqAAgAAAAIAAQAAAAqAAkAAAAIAAQAAAArAAAAAAAIAAQAAAArAAEAAAAIAAQAAAArAAIAAAAIAAQAAAArAAMAAAAIAAQAAAArAAQAAAAIAAQAAAArAAUAAAAIAAQAAAArAAYAAAAIAAQAAAArAAcAAAAIAAQAAAArAAgAAAAIAAQAAAArAAkAAAAIAAQAAAAsAAAAAAAIAAQAAAAsAAEAAAAIAAQAAAAsAAIAAAAIAAQAAAAsAAMAAAAIAAQAAAAsAAQAAAAIAAQAAAAsAAUAAAAIAAQAAAAsAAYAAAAIAAQAAAAsAAcAAAAIAAQAAAAsAAgAAAAIAAQAAAAsAAkAAAAIAAQAAAAtAAAAAAAIAAQAAAAtAAEAAAAIAAQAAAAtAAIAAAAIAAQAAAAtAAMAAAAIAAQAAAAtAAQAAAAIAAQAAAAtAAUAAAAIAAQAAAAtAAYAAAAIAAQAAAAtAAcAAAAIAAQAAAAtAAgAAAAIAAQAAAAtAAkAAAAIAAQAAAAuAAAAAAAIAAQAAAAuAAEAAAAIAAQAAAAuAAIAAAAIAAQAAAAuAAMAAAAIAAQAAAAuAAQAAAAIAAQAAAAuAAUAAAAIAAQAAAAuAAYAAAAIAAQAAAAuAAcAAAAIAAQAAAAuAAgAAAAIAAQAAAAuAAkAAAAIAAQAAAAvAAAAAAAIAAQAAAAvAAEAAAAIAAQAAAAvAAIAAAAIAAQAAAAvAAMAAAAIAAQAAAAvAAQAAAAIAAQAAAAvAAUAAAAIAAQAAAAvAAYAAAAIAAQAAAAvAAcAAAAIAAQAAAAvAAgAAAAIAAQAAAAvAAkAAAAIAAQAAAAwAAAAAAAIAAQAAAAwAAEAAAAIAAQAAAAwAAIAAAAIAAQAAAAwAAMAAAAIAAQAAAAwAAQAAAAIAAQAAAAwAAUAAAAIAAQAAAAwAAYAAAAIAAQAAAAwAAcAAAAIAAQAAAAwAAgAAAAIAAQAAAAwAAkAAAAIAAQAAAAxAAAAAAAIAAQAAAAxAAEAAAAIAAQAAAAxAAIAAAAIAAQAAAAxAAMAAAAIAAQAAAAxAAQAAAAIAAQAAAAxAAUAAAAIAAQAAAAxAAYAAAAIAAQAAAAxAAcAAAAIAAQAAAAxAAgAAAAIAAQAAAAxAAkAAAAIAAQAAAAyAAAAAAAIAAQAAAAyAAEAAAAIAAQAAAAyAAIAAAAIAAQAAAAyAAMAAAAIAAQAAAAyAAQAAAAIAAQAAAAyAAUAAAAIAAQAAAAyAAYAAAAIAAQAAAAyAAcAAAAIAAQAAAAyAAgAAAAIAAQAAAAyAAkAAAAIAAQAAAAzAAAAAAAIAAQAAAAzAAEAAAAIAAQAAAAzAAIAAAAIAAQAAAAzAAMAAAAIAAQAAAAzAAQAAAAIAAQAAAAzAAUAAAAIAAQAAAAzAAYAAAAIAAQAAAAzAAcAAAAIAAQAAAAzAAgAAAAIAAQAAAAzAAkAAAAIAAQAAAA0AAAAAAAIAAQAAAA0AAEAAAAIAAQAAAA0AAIAAAAIAAQAAAA0AAMAAAAIAAQAAAA0AAQAAAAIAAQAAAA0AAUAAAAIAAQAAAA0AAYAAAAIAAQAAAA0AAcAAAAIAAQAAAA0AAgAAAAIAAQAAAA0AAkAAAAIAAQAAAA1AAAAAAAIAAQAAAA1AAEAAAAIAAQAAAA1AAIAAAAIAAQAAAA1AAMAAAAIAAQAAAA1AAQAAAAIAAQAAAA1AAUAAAAIAAQAAAA1AAYAAAAIAAQAAAA1AAcAAAAIAAQAAAA1AAgAAAAIAAQAAAA1AAkAAAAIAAQAAAA2AAAAAAAIAAQAAAA2AAEAAAAIAAQAAAA2AAIAAAAIAAQAAAA2AAMAAAAIAAQAAAA2AAQAAAAIAAQAAAA2AAUAAAAIAAQAAAA2AAYAAAAIAAQAAAA2AAcAAAAIAAQAAAA2AAgAAAAIAAQAAAA2AAkAAAAIAAQAAAA3AAAAAAAIAAQAAAA3AAEAAAAIAAQAAAA3AAIAAAAIAAQAAAA3AAMAAAAIAAQAAAA3AAQAAAAIAAQAAAA3AAUAAAAIAAQAAAA3AAYAAAAIAAQAAAA3AAcAAAAIAAQAAAA3AAgAAAAIAAQAAAA3AAkAAAAIAAQAAAA4AAAAAAAIAAQAAAA4AAEAAAAIAAQAAAA4AAIAAAAIAAQAAAA4AAMAAAAIAAQAAAA4AAQAAAAIAAQAAAA4AAUAAAAIAAQAAAA4AAYAAAAIAAQAAAA4AAcAAAAIAAQAAAA4AAgAAAAIAAQAAAA4AAkAAAAIAAQAAAA5AAAAAAAIAAQAAAA5AAEAAAAIAAQAAAA5AAIAAAAIAAQAAAA5AAMAAAAIAAQAAAA5AAQAAAAIAAQAAAA5AAUAAAAIAAQAAAA5AAYAAAAIAAQAAAA5AAcAAAAIAAQAAAA5AAgAAAAIAAQAAAA5AAkAAAAIAAQAAAA6AAAAAAAIAAQAAAA6AAEAAAAIAAQAAAA6AAIAAAAIAAQAAAA6AAMAAAAIAAQAAAA6AAQAAAAIAAQAAAA6AAUAAAAIAAQAAAA6AAYAAAAIAAQAAAA6AAcAAAAIAAQAAAA6AAgAAAAIAAQAAAA6AAkAAAAIAAQAAAA7AAAAAAAIAAQAAAA7AAEAAAAIAAQAAAA7AAIAAAAIAAQAAAA7AAMAAAAIAAQAAAA7AAQAAAAIAAQAAAA7AAUAAAAIAAQAAAA7AAYAAAAIAAQAAAA7AAcAAAAIAAQAAAA7AAgAAAAIAAQAAAA7AAkAAAAIAAQAAAAAAAoAAAAIAAQAAAAAAAsAAAAIAAQAAAAAAAwAAAAIAAQAAAAAAA0AAAAIAAQAAAAAAA4AAAAIAAQAAAAAAA8AAAAIAAQAAAAAABAAAAAIAAQAAAAAABEAAAAIAAQAAAAAABIAAAAIAAQAAAABAAoAAAAIAAQAAAABAAsAAAAIAAQAAAABAAwAAAAIAAQAAAABAA0AAAAIAAQAAAABAA4AAAAIAAQAAAABAA8AAAAIAAQAAAABABAAAAAIAAQAAAABABEAAAAIAAQAAAABABIAAAAIAAQAAAACAAoAAAAIAAQAAAACAAsAAAAIAAQAAAACAAwAAAAIAAQAAAACAA0AAAAIAAQAAAACAA4AAAAIAAQAAAACAA8AAAAIAAQAAAACABAAAAAIAAQAAAACABEAAAAIAAQAAAACABIAAAAIAAQAAAADAAoAAAAIAAQAAAADAAsAAAAIAAQAAAADAAwAAAAIAAQAAAADAA0AAAAIAAQAAAADAA4AAAAIAAQAAAADAA8AAAAIAAQAAAADABAAAAAIAAQAAAADABEAAAAIAAQAAAADABIAAAAIAAQAAAAEAAoAAAAIAAQAAAAEAAsAAAAIAAQAAAAEAAwAAAAIAAQAAAAEAA0AAAAIAAQAAAAEAA4AAAAIAAQAAAAEAA8AAAAIAAQAAAAEABAAAAAIAAQAAAAEABEAAAAIAAQAAAAEABIAAAAIAAQAAAAFAAoAAAAIAAQAAAAFAAsAAAAIAAQAAAAFAAwAAAAIAAQAAAAFAA0AAAAIAAQAAAAFAA4AAAAIAAQAAAAFAA8AAAAIAAQAAAAFABAAAAAIAAQAAAAFABEAAAAIAAQAAAAFABIAAAAIAAQAAAAGAAoAAAAIAAQAAAAGAAsAAAAIAAQAAAAGAAwAAAAIAAQAAAAGAA0AAAAIAAQAAAAGAA4AAAAIAAQAAAAGAA8AAAAIAAQAAAAGABAAAAAIAAQAAAAGABEAAAAIAAQAAAAGABIAAAAIAAQAAAAHAAoAAAAIAAQAAAAHAAsAAAAIAAQAAAAHAAwAAAAIAAQAAAAHAA0AAAAIAAQAAAAHAA4AAAAIAAQAAAAHAA8AAAAIAAQAAAAHABAAAAAIAAQAAAAHABEAAAAIAAQAAAAHABIAAAAIAAQAAAAIAAoAAAAIAAQAAAAIAAsAAAAIAAQAAAAIAAwAAAAIAAQAAAAIAA0AAAAIAAQAAAAIAA4AAAAIAAQAAAAIAA8AAAAIAAQAAAAIABAAAAAIAAQAAAAIABEAAAAIAAQAAAAIABIAAAAIAAQAAAAJAAoAAAAIAAQAAAAJAAsAAAAIAAQAAAAJAAwAAAAIAAQAAAAJAA0AAAAIAAQAAAAJAA4AAAAIAAQAAAAJAA8AAAAIAAQAAAAJABAAAAAIAAQAAAAJABEAAAAIAAQAAAAJABIAAAAIAAQAAAAKAAoAAAAIAAQAAAAKAAsAAAAIAAQAAAAKAAwAAAAIAAQAAAAKAA0AAAAIAAQAAAAKAA4AAAAIAAQAAAAKAA8AAAAIAAQAAAAKABAAAAAIAAQAAAAKABEAAAAIAAQAAAAKABIAAAAIAAQAAAALAAoAAAAIAAQAAAALAAsAAAAIAAQAAAALAAwAAAAIAAQAAAALAA0AAAAIAAQAAAALAA4AAAAIAAQAAAALAA8AAAAIAAQAAAALABAAAAAIAAQAAAALABEAAAAIAAQAAAALABIAAAAIAAQAAAAMAAoAAAAIAAQAAAAMAAsAAAAIAAQAAAAMAAwAAAAIAAQAAAAMAA0AAAAIAAQAAAAMAA4AAAAIAAQAAAAMAA8AAAAIAAQAAAAMABAAAAAIAAQAAAAMABEAAAAIAAQAAAAMABIAAAAIAAQAAAANAAoAAAAIAAQAAAANAAsAAAAIAAQAAAANAAwAAAAIAAQAAAANAA0AAAAIAAQAAAANAA4AAAAIAAQAAAANAA8AAAAIAAQAAAANABAAAAAIAAQAAAANABEAAAAIAAQAAAANABIAAAAIAAQAAAAOAAoAAAAIAAQAAAAOAAsAAAAIAAQAAAAOAAwAAAAIAAQAAAAOAA0AAAAIAAQAAAAOAA4AAAAIAAQAAAAOAA8AAAAIAAQAAAAOABAAAAAIAAQAAAAOABEAAAAIAAQAAAAOABIAAAAIAAQAAAAPAAoAAAAIAAQAAAAPAAsAAAAIAAQAAAAPAAwAAAAIAAQAAAAPAA0AAAAIAAQAAAAPAA4AAAAIAAQAAAAPAA8AAAAIAAQAAAAPABAAAAAIAAQAAAAPABEAAAAIAAQAAAAPABIAAAAIAAQAAAAQAAoAAAAIAAQAAAAQAAsAAAAIAAQAAAAQAAwAAAAIAAQAAAAQAA0AAAAIAAQAAAAQAA4AAAAIAAQAAAAQAA8AAAAIAAQAAAAQABAAAAAIAAQAAAAQABEAAAAIAAQAAAAQABIAAAAIAAQAAAARAAoAAAAIAAQAAAARAAsAAAAIAAQAAAARAAwAAAAIAAQAAAARAA0AAAAIAAQAAAARAA4AAAAIAAQAAAARAA8AAAAIAAQAAAARABAAAAAIAAQAAAARABEAAAAIAAQAAAARABIAAAAIAAQAAAASAAoAAAAIAAQAAAASAAsAAAAIAAQAAAASAAwAAAAIAAQAAAASAA0AAAAIAAQAAAASAA4AAAAIAAQAAAASAA8AAAAIAAQAAAASABAAAAAIAAQAAAASABEAAAAIAAQAAAASABIAAAAIAAQAAAATAAoAAAAIAAQAAAATAAsAAAAIAAQAAAATAAwAAAAIAAQAAAATAA0AAAAIAAQAAAATAA4AAAAIAAQAAAATAA8AAAAIAAQAAAATABAAAAAIAAQAAAATABEAAAAIAAQAAAATABIAAAAIAAQAAAAUAAoAAAAIAAQAAAAUAAsAAAAIAAQAAAAUAAwAAAAIAAQAAAAUAA0AAAAIAAQAAAAUAA4AAAAIAAQAAAAUAA8AAAAIAAQAAAAUABAAAAAIAAQAAAAUABEAAAAIAAQAAAAUABIAAAAIAAQAAAAVAAoAAAAIAAQAAAAVAAsAAAAIAAQAAAAVAAwAAAAIAAQAAAAVAA0AAAAIAAQAAAAVAA4AAAAIAAQAAAAVAA8AAAAIAAQAAAAVABAAAAAIAAQAAAAVABEAAAAIAAQAAAAVABIAAAAIAAQAAAAWAAoAAAAIAAQAAAAWAAsAAAAIAAQAAAAWAAwAAAAIAAQAAAAWAA0AAAAIAAQAAAAWAA4AAAAIAAQAAAAWAA8AAAAIAAQAAAAWABAAAAAIAAQAAAAWABEAAAAIAAQAAAAWABIAAAAIAAQAAAAXAAoAAAAIAAQAAAAXAAsAAAAIAAQAAAAXAAwAAAAIAAQAAAAXAA0AAAAIAAQAAAAXAA4AAAAIAAQAAAAXAA8AAAAIAAQAAAAXABAAAAAIAAQAAAAXABEAAAAIAAQAAAAXABIAAAAIAAQAAAAYAAoAAAAIAAQAAAAYAAsAAAAIAAQAAAAYAAwAAAAIAAQAAAAYAA0AAAAIAAQAAAAYAA4AAAAIAAQAAAAYAA8AAAAIAAQAAAAYABAAAAAIAAQAAAAYABEAAAAIAAQAAAAYABIAAAAIAAQAAAAZAAoAAAAIAAQAAAAZAAsAAAAIAAQAAAAZAAwAAAAIAAQAAAAZAA0AAAAIAAQAAAAZAA4AAAAIAAQAAAAZAA8AAAAIAAQAAAAZABAAAAAIAAQAAAAZABEAAAAIAAQAAAAZABIAAAAIAAQAAAAaAAoAAAAIAAQAAAAaAAsAAAAIAAQAAAAaAAwAAAAIAAQAAAAaAA0AAAAIAAQAAAAaAA4AAAAIAAQAAAAaAA8AAAAIAAQAAAAaABAAAAAIAAQAAAAaABEAAAAIAAQAAAAaABIAAAAIAAQAAAAbAAoAAAAIAAQAAAAbAAsAAAAIAAQAAAAbAAwAAAAIAAQAAAAbAA0AAAAIAAQAAAAbAA4AAAAIAAQAAAAbAA8AAAAIAAQAAAAbABAAAAAIAAQAAAAbABEAAAAIAAQAAAAbABIAAAAIAAQAAAAcAAoAAAAIAAQAAAAcAAsAAAAIAAQAAAAcAAwAAAAIAAQAAAAcAA0AAAAIAAQAAAAcAA4AAAAIAAQAAAAcAA8AAAAIAAQAAAAcABAAAAAIAAQAAAAcABEAAAAIAAQAAAAcABIAAAAIAAQAAAAdAAoAAAAIAAQAAAAdAAsAAAAIAAQAAAAdAAwAAAAIAAQAAAAdAA0AAAAIAAQAAAAdAA4AAAAIAAQAAAAdAA8AAAAIAAQAAAAdABAAAAAIAAQAAAAdABEAAAAIAAQAAAAdABIAAAAIAAQAAAAeAAoAAAAIAAQAAAAeAAsAAAAIAAQAAAAeAAwAAAAIAAQAAAAeAA0AAAAIAAQAAAAeAA4AAAAIAAQAAAAeAA8AAAAIAAQAAAAeABAAAAAIAAQAAAAeABEAAAAIAAQAAAAeABIAAAAIAAQAAAAfAAoAAAAIAAQAAAAfAAsAAAAIAAQAAAAfAAwAAAAIAAQAAAAfAA0AAAAIAAQAAAAfAA4AAAAIAAQAAAAfAA8AAAAIAAQAAAAfABAAAAAIAAQAAAAfABEAAAAIAAQAAAAfABIAAAAIAAQAAAAgAAoAAAAIAAQAAAAgAAsAAAAIAAQAAAAgAAwAAAAIAAQAAAAgAA0AAAAIAAQAAAAgAA4AAAAIAAQAAAAgAA8AAAAIAAQAAAAgABAAAAAIAAQAAAAgABEAAAAIAAQAAAAgABIAAAAIAAQAAAAhAAoAAAAIAAQAAAAhAAsAAAAIAAQAAAAhAAwAAAAIAAQAAAAhAA0AAAAIAAQAAAAhAA4AAAAIAAQAAAAhAA8AAAAIAAQAAAAhABAAAAAIAAQAAAAhABEAAAAIAAQAAAAhABIAAAAIAAQAAAAiAAoAAAAIAAQAAAAiAAsAAAAIAAQAAAAiAAwAAAAIAAQAAAAiAA0AAAAIAAQAAAAiAA4AAAAIAAQAAAAiAA8AAAAIAAQAAAAiABAAAAAIAAQAAAAiABEAAAAIAAQAAAAiABIAAAAIAAQAAAAjAAoAAAAIAAQAAAAjAAsAAAAIAAQAAAAjAAwAAAAIAAQAAAAjAA0AAAAIAAQAAAAjAA4AAAAIAAQAAAAjAA8AAAAIAAQAAAAjABAAAAAIAAQAAAAjABEAAAAIAAQAAAAjABIAAAAIAAQAAAAkAAoAAAAIAAQAAAAkAAsAAAAIAAQAAAAkAAwAAAAIAAQAAAAkAA0AAAAIAAQAAAAkAA4AAAAIAAQAAAAkAA8AAAAIAAQAAAAkABAAAAAIAAQAAAAkABEAAAAIAAQAAAAkABIAAAAIAAQAAAAlAAoAAAAIAAQAAAAlAAsAAAAIAAQAAAAlAAwAAAAIAAQAAAAlAA0AAAAIAAQAAAAlAA4AAAAIAAQAAAAlAA8AAAAIAAQAAAAlABAAAAAIAAQAAAAlABEAAAAIAAQAAAAlABIAAAAIAAQAAAAmAAoAAAAIAAQAAAAmAAsAAAAIAAQAAAAmAAwAAAAIAAQAAAAmAA0AAAAIAAQAAAAmAA4AAAAIAAQAAAAmAA8AAAAIAAQAAAAmABAAAAAIAAQAAAAmABEAAAAIAAQAAAAmABIAAAAIAAQAAAAnAAoAAAAIAAQAAAAnAAsAAAAIAAQAAAAnAAwAAAAIAAQAAAAnAA0AAAAIAAQAAAAnAA4AAAAIAAQAAAAnAA8AAAAIAAQAAAAnABAAAAAIAAQAAAAnABEAAAAIAAQAAAAnABIAAAAIAAQAAAAoAAoAAAAIAAQAAAAoAAsAAAAIAAQAAAAoAAwAAAAIAAQAAAAoAA0AAAAIAAQAAAAoAA4AAAAIAAQAAAAoAA8AAAAIAAQAAAAoABAAAAAIAAQAAAAoABEAAAAIAAQAAAAoABIAAAAIAAQAAAApAAoAAAAIAAQAAAApAAsAAAAIAAQAAAApAAwAAAAIAAQAAAApAA0AAAAIAAQAAAApAA4AAAAIAAQAAAApAA8AAAAIAAQAAAApABAAAAAIAAQAAAApABEAAAAIAAQAAAApABIAAAAIAAQAAAAqAAoAAAAIAAQAAAAqAAsAAAAIAAQAAAAqAAwAAAAIAAQAAAAqAA0AAAAIAAQAAAAqAA4AAAAIAAQAAAAqAA8AAAAIAAQAAAAqABAAAAAIAAQAAAAqABEAAAAIAAQAAAAqABIAAAAIAAQAAAArAAoAAAAIAAQAAAArAAsAAAAIAAQAAAArAAwAAAAIAAQAAAArAA0AAAAIAAQAAAArAA4AAAAIAAQAAAArAA8AAAAIAAQAAAArABAAAAAIAAQAAAArABEAAAAIAAQAAAArABIAAAAIAAQAAAAsAAoAAAAIAAQAAAAsAAsAAAAIAAQAAAAsAAwAAAAIAAQAAAAsAA0AAAAIAAQAAAAsAA4AAAAIAAQAAAAsAA8AAAAIAAQAAAAsABAAAAAIAAQAAAAsABEAAAAIAAQAAAAsABIAAAAIAAQAAAAtAAoAAAAIAAQAAAAtAAsAAAAIAAQAAAAtAAwAAAAIAAQAAAAtAA0AAAAIAAQAAAAtAA4AAAAIAAQAAAAtAA8AAAAIAAQAAAAtABAAAAAIAAQAAAAtABEAAAAIAAQAAAAtABIAAAAIAAQAAAAuAAoAAAAIAAQAAAAuAAsAAAAIAAQAAAAuAAwAAAAIAAQAAAAuAA0AAAAIAAQAAAAuAA4AAAAIAAQAAAAuAA8AAAAIAAQAAAAuABAAAAAIAAQAAAAuABEAAAAIAAQAAAAuABIAAAAIAAQAAAAvAAoAAAAIAAQAAAAvAAsAAAAIAAQAAAAvAAwAAAAIAAQAAAAvAA0AAAAIAAQAAAAvAA4AAAAIAAQAAAAvAA8AAAAIAAQAAAAvABAAAAAIAAQAAAAvABEAAAAIAAQAAAAvABIAAAAIAAQAAAAwAAoAAAAIAAQAAAAwAAsAAAAIAAQAAAAwAAwAAAAIAAQAAAAwAA0AAAAIAAQAAAAwAA4AAAAIAAQAAAAwAA8AAAAIAAQAAAAwABAAAAAIAAQAAAAwABEAAAAIAAQAAAAwABIAAAAIAAQAAAAxAAoAAAAIAAQAAAAxAAsAAAAIAAQAAAAxAAwAAAAIAAQAAAAxAA0AAAAIAAQAAAAxAA4AAAAIAAQAAAAxAA8AAAAIAAQAAAAxABAAAAAIAAQAAAAxABEAAAAIAAQAAAAxABIAAAAIAAQAAAAyAAoAAAAIAAQAAAAyAAsAAAAIAAQAAAAyAAwAAAAIAAQAAAAyAA0AAAAIAAQAAAAyAA4AAAAIAAQAAAAyAA8AAAAIAAQAAAAyABAAAAAIAAQAAAAyABEAAAAIAAQAAAAyABIAAAAIAAQAAAAzAAoAAAAIAAQAAAAzAAsAAAAIAAQAAAAzAAwAAAAIAAQAAAAzAA0AAAAIAAQAAAAzAA4AAAAIAAQAAAAzAA8AAAAIAAQAAAAzABAAAAAIAAQAAAAzABEAAAAIAAQAAAAzABIAAAAIAAQAAAA0AAoAAAAIAAQAAAA0AAsAAAAIAAQAAAA0AAwAAAAIAAQAAAA0AA0AAAAIAAQAAAA0AA4AAAAIAAQAAAA0AA8AAAAIAAQAAAA0ABAAAAAIAAQAAAA0ABEAAAAIAAQAAAA0ABIAAAAIAAQAAAA1AAoAAAAIAAQAAAA1AAsAAAAIAAQAAAA1AAwAAAAIAAQAAAA1AA0AAAAIAAQAAAA1AA4AAAAIAAQAAAA1AA8AAAAIAAQAAAA1ABAAAAAIAAQAAAA1ABEAAAAIAAQAAAA1ABIAAAAIAAQAAAA2AAoAAAAIAAQAAAA2AAsAAAAIAAQAAAA2AAwAAAAIAAQAAAA2AA0AAAAIAAQAAAA2AA4AAAAIAAQAAAA2AA8AAAAIAAQAAAA2ABAAAAAIAAQAAAA2ABEAAAAIAAQAAAA2ABIAAAAIAAQAAAA3AAoAAAAIAAQAAAA3AAsAAAAIAAQAAAA3AAwAAAAIAAQAAAA3AA0AAAAIAAQAAAA3AA4AAAAIAAQAAAA3AA8AAAAIAAQAAAA3ABAAAAAIAAQAAAA3ABEAAAAIAAQAAAA3ABIAAAAIAAQAAAA4AAoAAAAIAAQAAAA4AAsAAAAIAAQAAAA4AAwAAAAIAAQAAAA4AA0AAAAIAAQAAAA4AA4AAAAIAAQAAAA4AA8AAAAIAAQAAAA4ABAAAAAIAAQAAAA4ABEAAAAIAAQAAAA4ABIAAAAIAAQAAAA5AAoAAAAIAAQAAAA5AAsAAAAIAAQAAAA5AAwAAAAIAAQAAAA5AA0AAAAIAAQAAAA5AA4AAAAIAAQAAAA5AA8AAAAIAAQAAAA5ABAAAAAIAAQAAAA5ABEAAAAIAAQAAAA5ABIAAAAIAAQAAAA6AAoAAAAIAAQAAAA6AAsAAAAIAAQAAAA6AAwAAAAIAAQAAAA6AA0AAAAIAAQAAAA6AA4AAAAIAAQAAAA6AA8AAAAIAAQAAAA6ABAAAAAIAAQAAAA6ABEAAAAIAAQAAAA6ABIAAAAIAAQAAAA7AAoAAAAIAAQAAAA7AAsAAAAIAAQAAAA7AAwAAAAIAAQAAAA7AA0AAAAIAAQAAAA7AA4AAAAIAAQAAAA7AA8AAAAIAAQAAAA7ABAAAAAIAAQAAAA7ABEAAAAIAAQAAAA7ABIAAAAIAAQAAAAAABMAAAAIAAQAAAABABMAAAAIAAQAAAACABMAAAAIAAQAAAADABMAAAAIAAQAAAAEABMAAAAIAAQAAAAFABMAAAAIAAQAAAAGABMAAAAIAAQAAAAHABMAAAAIAAQAAAAIABMAAAAIAAQAAAAJABMAAAAIAAQAAAAKABMAAAAIAAQAAAALABMAAAAIAAQAAAAMABMAAAAIAAQAAAANABMAAAAIAAQAAAAOABMAAAAIAAQAAAAPABMAAAAIAAQAAAAQABMAAAAIAAQAAAARABMAAAAIAAQAAAASABMAAAAIAAQAAAATABMAAAAIAAQAAAAUABMAAAAIAAQAAAAVABMAAAAIAAQAAAAWABMAAAAIAAQAAAAXABMAAAAIAAQAAAAYABMAAAAIAAQAAAAZABMAAAAIAAQAAAAaABMAAAAIAAQAAAAbABMAAAAIAAQAAAAcABMAAAAIAAQAAAAdABMAAAAIAAQAAAAeABMAAAAIAAQAAAAfABMAAAAIAAQAAAAgABMAAAAIAAQAAAAhABMAAAAIAAQAAAAiABMAAAAIAAQAAAAjABMAAAAIAAQAAAAkABMAAAAIAAQAAAAlABMAAAAIAAQAAAAmABMAAAAIAAQAAAAnABMAAAAIAAQAAAAoABMAAAAIAAQAAAApABMAAAAIAAQAAAAqABMAAAAIAAQAAAArABMAAAAIAAQAAAAsABMAAAAIAAQAAAAtABMAAAAIAAQAAAAuABMAAAAIAAQAAAAvABMAAAAIAAQAAAAwABMAAAAIAAQAAAAxABMAAAAIAAQAAAAyABMAAAAIAAQAAAAzABMAAAAIAAQAAAA0ABMAAAAIAAQAAAA1ABMAAAAIAAQAAAA2ABMAAAAIAAQAAAA3ABMAAAAIAAQAAAA4ABMAAAAIAAQAAAA5ABMAAAAIAAQAAAA6ABMAAAAIAAQAAAA7ABMAAAAIAAQAAAA=") +tile_set = ExtResource("5_kigg1") +navigation_enabled = false +script = ExtResource("6_tgkll") +_solidLayers = [NodePath("../Solid"), NodePath("../Props")] +metadata/_edit_lock_ = true + +[node name="Solid" type="TileMapLayer" parent="Tilemaps" groups=["Solid"]] +tile_map_data = PackedByteArray("AAATAAAAAAABAAsAAAASAAAAAAABAAQAAAARAAAAAAABAAQAAAAQAAAAAAABAAQAAAAPAAAAAAABAAQAAAAOAAAAAAABAAQAAAANAAAAAAABAAQAAAAMAAAAAAABAAQAAAALAAAAAAACAAQAAAAIAAAAAAADAAQAAAAHAAAAAAABAAQAAAAGAAAAAAABAAQAAAAFAAAAAAABAAQAAAAEAAAAAAABAAQAAAADAAAAAAABAAQAAAACAAAAAAABAAQAAAABAAAAAAABAAQAAAAAAAAAAAAAAAsAAAATAAIAAAAEAAQAAAATAAEAAAAAAAQAAAAAAAIAAAAEAAQAAAAAAAEAAAAAAAQAAAAAAAkAAAAEAAQAAAAAAAgAAAAAAAQAAAAAAAcAAAAAAAQAAAAAAAYAAAAFAAQAAAALAAEAAAAKAAgAAAALAAIAAAAKAAkAAAAMAAEAAAAKAAgAAAAMAAIAAAAKAAkAAAANAAEAAAAKAAgAAAANAAIAAAAKAAkAAAAOAAEAAAAKAAgAAAAOAAIAAAAKAAkAAAAPAAEAAAAKAAgAAAAPAAIAAAAKAAkAAAAQAAEAAAAKAAgAAAAQAAIAAAAKAAkAAAARAAEAAAAKAAgAAAARAAIAAAAKAAkAAAASAAEAAAAKAAgAAAASAAIAAAAKAAkAAAABAAEAAAAKAAgAAAABAAIAAAAKAAkAAAACAAEAAAAKAAgAAAACAAIAAAAKAAkAAAADAAEAAAAKAAgAAAADAAIAAAAKAAkAAAAEAAEAAAAKAAgAAAAEAAIAAAAKAAkAAAAFAAEAAAAKAAgAAAAFAAIAAAAKAAkAAAAGAAEAAAAKAAgAAAAGAAIAAAAKAAkAAAAHAAEAAAAKAAgAAAAHAAIAAAAKAAkAAAAIAAEAAAAKAAgAAAAIAAIAAAAKAAkAAAAAAAMAAAAKAAgAAAAAAAQAAAAKAAkAAAAUAAAAAAAAAAsAAAAUAAEAAAAAAAQAAAAUAAIAAAAEAAQAAAAVAAAAAAABAAQAAAAVAAEAAAAKAAgAAAAVAAIAAAAKAAkAAAAWAAAAAAABAAQAAAAWAAEAAAAKAAgAAAAWAAIAAAAKAAkAAAAXAAAAAAABAAQAAAAXAAEAAAAKAAgAAAAXAAIAAAAKAAkAAAAYAAAAAAABAAQAAAAYAAEAAAAKAAgAAAAYAAIAAAAKAAkAAAAZAAAAAAABAAQAAAAZAAEAAAAKAAgAAAAZAAIAAAAKAAkAAAAaAAAAAAABAAQAAAAaAAEAAAAKAAgAAAAaAAIAAAAKAAkAAAAbAAAAAAABAAQAAAAbAAEAAAAKAAgAAAAbAAIAAAAKAAkAAAAcAAAAAAADAAQAAAAcAAEAAAAKAAgAAAAcAAIAAAAKAAkAAAAfAAAAAAACAAQAAAAfAAEAAAAKAAgAAAAfAAIAAAAKAAkAAAAgAAAAAAABAAQAAAAgAAEAAAAKAAgAAAAgAAIAAAAKAAkAAAAhAAAAAAABAAQAAAAhAAEAAAAKAAgAAAAhAAIAAAAKAAkAAAAiAAAAAAABAAQAAAAiAAEAAAAKAAgAAAAiAAIAAAAKAAkAAAAjAAAAAAABAAQAAAAjAAEAAAAKAAgAAAAjAAIAAAAKAAkAAAAkAAAAAAABAAQAAAAkAAEAAAAKAAgAAAAkAAIAAAAKAAkAAAAlAAAAAAABAAQAAAAlAAEAAAAKAAgAAAAlAAIAAAAKAAkAAAAmAAAAAAABAAQAAAAmAAEAAAAKAAgAAAAmAAIAAAAKAAkAAAAnAAAAAAABAAsAAAAnAAEAAAAAAAQAAAAnAAIAAAAEAAQAAAAoAAAAAAAAAAsAAAAoAAEAAAAAAAQAAAAoAAIAAAAEAAQAAAApAAAAAAABAAQAAAApAAEAAAAKAAgAAAApAAIAAAAKAAkAAAAqAAAAAAABAAQAAAAqAAEAAAAKAAgAAAAqAAIAAAAKAAkAAAArAAAAAAABAAQAAAArAAEAAAAKAAgAAAArAAIAAAAKAAkAAAAsAAAAAAABAAQAAAAsAAEAAAAKAAgAAAAsAAIAAAAKAAkAAAAtAAAAAAABAAQAAAAtAAEAAAAKAAgAAAAtAAIAAAAKAAkAAAAuAAAAAAABAAQAAAAuAAEAAAAKAAgAAAAuAAIAAAAKAAkAAAAvAAAAAAABAAQAAAAvAAEAAAAKAAgAAAAvAAIAAAAKAAkAAAAwAAAAAAADAAQAAAAwAAEAAAAKAAgAAAAwAAIAAAAKAAkAAAAzAAAAAAACAAQAAAAzAAEAAAAKAAgAAAAzAAIAAAAKAAkAAAA0AAAAAAABAAQAAAA0AAEAAAAKAAgAAAA0AAIAAAAKAAkAAAA1AAAAAAABAAQAAAA1AAEAAAAKAAgAAAA1AAIAAAAKAAkAAAA2AAAAAAABAAQAAAA2AAEAAAAKAAgAAAA2AAIAAAAKAAkAAAA3AAAAAAABAAQAAAA3AAEAAAAKAAgAAAA3AAIAAAAKAAkAAAA4AAAAAAABAAQAAAA4AAEAAAAKAAgAAAA4AAIAAAAKAAkAAAA5AAAAAAABAAQAAAA5AAEAAAAKAAgAAAA5AAIAAAAKAAkAAAA6AAAAAAABAAQAAAA6AAEAAAAKAAgAAAA6AAIAAAAKAAkAAAA7AAAAAAABAAsAAAA7AAEAAAAAAAQAAAA7AAIAAAAEAAQAAAA7AAMAAAAKAAgAAAA7AAQAAAAKAAkAAAA7AAYAAAAFAAQAAAA7AAcAAAAAAAQAAAA7AAgAAAAAAAQAAAA7AAkAAAAEAAQAAAAAAAoAAAAFAAQAAAAAAAsAAAAAAAQAAAAAAAwAAAAEAAQAAAAAAA0AAAAKAAgAAAAAAA4AAAAKAAkAAAAAABAAAAAFAAQAAAAAABEAAAAAAAQAAAAAABIAAAAAAAQAAAAAABMAAAAAAAwAAAABABMAAAABAAQAAAACABMAAAABAAQAAAADABMAAAABAAQAAAAEABMAAAABAAQAAAAFABMAAAABAAQAAAAGABMAAAABAAQAAAAHABMAAAABAAQAAAAIABMAAAADAAQAAAALABMAAAACAAQAAAAMABMAAAABAAQAAAANABMAAAABAAQAAAAOABMAAAABAAQAAAAPABMAAAABAAQAAAAQABMAAAABAAQAAAARABMAAAABAAQAAAASABMAAAABAAQAAAATABMAAAADAAQAAAAUABMAAAACAAQAAAAVABMAAAABAAQAAAAWABMAAAABAAQAAAAXABMAAAABAAQAAAAYABMAAAABAAQAAAAZABMAAAABAAQAAAAaABMAAAABAAQAAAAbABMAAAABAAQAAAAcABMAAAADAAQAAAAfABMAAAACAAQAAAAgABMAAAABAAQAAAAhABMAAAABAAQAAAAiABMAAAABAAQAAAAjABMAAAABAAQAAAAkABMAAAABAAQAAAAlABMAAAABAAQAAAAmABMAAAABAAQAAAAnABMAAAADAAQAAAAoABMAAAACAAQAAAApABMAAAABAAQAAAAqABMAAAABAAQAAAArABMAAAABAAQAAAAsABMAAAABAAQAAAAtABMAAAABAAQAAAAuABMAAAABAAQAAAAvABMAAAABAAQAAAAwABMAAAADAAQAAAAzABMAAAACAAQAAAA0ABMAAAABAAQAAAA1ABMAAAABAAQAAAA2ABMAAAABAAQAAAA3ABMAAAABAAQAAAA4ABMAAAABAAQAAAA5ABMAAAABAAQAAAA6ABMAAAABAAQAAAA7AAoAAAAFAAQAAAA7AAsAAAAAAAQAAAA7AAwAAAAEAAQAAAA7AA0AAAAKAAgAAAA7AA4AAAAKAAkAAAA7ABAAAAAFAAQAAAA7ABEAAAAAAAQAAAA7ABIAAAAAAAQAAAA7ABMAAAABAAwAAAA=") +tile_set = ExtResource("5_kigg1") +navigation_enabled = false +metadata/_edit_lock_ = true + +[node name="Props" type="TileMapLayer" parent="Tilemaps" groups=["Solid"]] +tile_set = ExtResource("5_kigg1") +navigation_enabled = false +metadata/_edit_lock_ = true + +[node name="Actors" type="Node2D" parent="Tilemaps"] +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(88, 126) + +[node name="RogueliteEnemySpawner3" type="Marker2D" parent="EnemySpawners"] +position = Vector2(266, 122) + +[node name="Doors" type="Node2D" parent="."] + +[node name="North" type="Marker2D" parent="Doors"] +position = Vector2(159, 23) +script = ExtResource("7_67kci") + +[node name="North2" type="Marker2D" parent="Doors"] +position = Vector2(479.257, 20.6745) +script = ExtResource("7_67kci") +WallIndex = 1 + +[node name="North3" type="Marker2D" parent="Doors"] +position = Vector2(794.686, 18.3888) +script = ExtResource("7_67kci") +WallIndex = 2 + +[node name="South" type="Marker2D" parent="Doors"] +position = Vector2(159.196, 149.348) +script = ExtResource("7_67kci") +Direction = 1 + +[node name="South2" type="Marker2D" parent="Doors"] +position = Vector2(479.86, 149.81) +script = ExtResource("7_67kci") +Direction = 1 +WallIndex = 1 + +[node name="South3" type="Marker2D" parent="Doors"] +position = Vector2(798.847, 148.522) +script = ExtResource("7_67kci") +Direction = 1 +WallIndex = 2 + +[node name="East" type="Marker2D" parent="Doors"] +position = Vector2(312, 87) +script = ExtResource("7_67kci") +Direction = 2 + +[node name="West" type="Marker2D" parent="Doors"] +position = Vector2(8.1806, 87.7693) +script = ExtResource("7_67kci") +Direction = 3 + +[node name="NavigationRegion2D" type="NavigationRegion2D" parent="."] +navigation_polygon = SubResource("NavigationPolygon_rlq0q") diff --git a/Scripts/Controllers/RogueliteRoomManager.cs b/Scripts/Controllers/RogueliteRoomManager.cs index eb74d00b..6182640d 100644 --- a/Scripts/Controllers/RogueliteRoomManager.cs +++ b/Scripts/Controllers/RogueliteRoomManager.cs @@ -19,7 +19,7 @@ public partial class RogueliteRoomManager : Node2D private Godot.Collections.Dictionary _roomGrid = new(); public Godot.Collections.Dictionary RoomGrid => _roomGrid; - + public List SpawnedRooms { get; private set; } = []; [Export] public Vector2I SpawnOrigin { get; private set; } = Vector2I.Zero; @@ -31,12 +31,13 @@ public partial class RogueliteRoomManager : Node2D [Export] public int DungeonWidth = 10; [Export] public int DungeonHeight = 10; [Export] public int MaxRooms = 12; - //[Export] public int Seed = -1; + [Export] public ulong Seed = 0; [Export] public Vector2I TileSize { get; set; } = new Vector2I(16, 16); [Export] public Vector2I RoomSizeInTiles { get; set; } = new Vector2I(20, 10); - - [Signal] public delegate void MapCreatedEventHandler(); + + [Signal] + public delegate void MapCreatedEventHandler(); public override void _Ready() { @@ -74,21 +75,27 @@ public partial class RogueliteRoomManager : Node2D private List _mainPath = new(); private List _connections = new(); - + public List Connections => _connections; private void GenerateStraightLineDungeon() { + if (Seed > 0) + { + GD.Seed(Seed); + } + Vector2I origin = Vector2I.Zero; var starterRoom = Rooms.Where(r => r.Type == RoomType.Starter).PickRandom(); SpawnRoom(starterRoom, origin); _mainPath.Add(origin); - + var randomRoomsList = RegularRooms.Shuffle(DungeonLength).ToList(); - + var currentPos = origin; + _connections.Add(new RoomConnection(origin, currentPos + new Vector2I(0, 1))); Vector2I nextPos; - + for (int i = 0; i < DungeonLength; i++) { nextPos = currentPos + new Vector2I(0, 1); @@ -96,62 +103,74 @@ public partial class RogueliteRoomManager : Node2D //var roomToSpawn = Rooms.Where(x => x.Type == RoomType.Regular).PickRandom(); var roomToSpawn = randomRoomsList[i]; + // First pick a random door on the from room + //var doorOffset = Math.Min(0, GD.RandRange(0, currentRoom.Size.X - 1)); + + // We're already in the new room position, we do not care about previous anymore + var offset = 0; - + // Place it at a random X position if (roomToSpawn.Size.X > 1) { offset -= GD.RandRange(0, roomToSpawn.Size.X - 1); } - var posWithOffset = new Vector2I(offset, nextPos.Y); - - if (!SpawnRoom(roomToSpawn, posWithOffset)) + nextPos += new Vector2I(offset, 0); + + //var posWithOffset = nextPos + new Vector2I(offset, 0); + + if (!SpawnRoom(roomToSpawn, nextPos)) { GD.PrintErr("Could not spawn room"); break; - }; + } - _mainPath.Add(posWithOffset); - + ; + + _mainPath.Add(nextPos); + + // Place cursor at bottom of room if (roomToSpawn.Size.Y > 1) { - nextPos += new Vector2I(0, roomToSpawn.Size.Y - 1); + nextPos += new Vector2I(0, roomToSpawn.Size.Y - 1); } - + // Pick a random exit to continue - var exit = Math.Min(0, GD.RandRange(0, roomToSpawn.Size.X - 1)); - - nextPos += new Vector2I(0, exit); - - _connections.Add(new RoomConnection(currentPos, nextPos)); + var exit = GD.RandRange(0, roomToSpawn.Size.X - 1); + if (exit < 0) exit = 0; + + nextPos += new Vector2I(exit, 0); + // nextPos is now the end of the room at the current exit + + _connections.Add(new RoomConnection(nextPos, nextPos + new Vector2I(0, 1))); //+ new Vector2I(0, roomToSpawn.Size.Y -1) // Reset X offset //nextPos = new Vector2I(0, nextPos.Y); - + 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); + nextPos += new Vector2I(0, bossRoom.Size.Y - 1); } - + _connections.Add(new RoomConnection(currentPos, nextPos)); } else { GD.PrintErr("Could not spawn boss room"); } - + foreach (var roomEntry in _roomGrid) { var room = roomEntry.Value; @@ -161,10 +180,10 @@ public partial class RogueliteRoomManager : Node2D return _roomGrid.ContainsKey(neighborPos); }); } - + EmitSignalMapCreated(); } - + private void GenerateDungeon() { Vector2I origin = Vector2I.Zero; @@ -202,7 +221,7 @@ public partial class RogueliteRoomManager : Node2D _connections.Add(new RoomConnection(currentPos, bossTargetPos.Value)); } } - + // private void SpawnRoomsBinaryTree() // { // var directions = new List @@ -286,7 +305,7 @@ public partial class RogueliteRoomManager : Node2D // }); // } // } - + private Vector2I? FindValidBossRoomLocation(Vector2I from, int maxSteps = 10) { var directions = new List { Vector2I.Right, Vector2I.Left, Vector2I.Up, Vector2I.Down }; @@ -347,7 +366,7 @@ public partial class RogueliteRoomManager : Node2D { if (!CanPlaceRoom(gridPos, room.Size)) return false; - + var position = gridPos * TileSize * RoomSizeInTiles; var roomScene = GD.Load(room.ScenePath); @@ -356,7 +375,7 @@ public partial class RogueliteRoomManager : Node2D spawnedScene.GridPosition = gridPos; SpawnedRooms.Add(spawnedScene); - + // for reference //SpawnRoom(room, origin + (room.Size * new Vector2(i, j) * tileSize)); spawnedScene.Spawn(); @@ -379,7 +398,7 @@ public partial class RogueliteRoomManager : Node2D if (_roomGrid.ContainsKey(pos)) return false; } } - + return true; } diff --git a/Scripts/Utils/ShuffleExtensions.cs.uid b/Scripts/Utils/ShuffleExtensions.cs.uid new file mode 100644 index 00000000..be7e3aee --- /dev/null +++ b/Scripts/Utils/ShuffleExtensions.cs.uid @@ -0,0 +1 @@ +uid://cayi15oyskn85