diff --git a/Assets/Prefabs/enemies/Objects/bird ranged Variant.prefab b/Assets/Prefabs/enemies/Objects/bird ranged Variant.prefab index 3b015ed..71db47d 100644 --- a/Assets/Prefabs/enemies/Objects/bird ranged Variant.prefab +++ b/Assets/Prefabs/enemies/Objects/bird ranged Variant.prefab @@ -194,7 +194,7 @@ PrefabInstance: objectReference: {fileID: 5649252163690582418, guid: 5bf56d6448869c54fb7109fc4a2f36b1, type: 3} - target: {fileID: 5482380846589999046, guid: a8f825dd330e15b45a883aad66360099, type: 3} propertyPath: visionRange - value: 20 + value: 15 objectReference: {fileID: 0} - target: {fileID: 5482380846589999046, guid: a8f825dd330e15b45a883aad66360099, type: 3} propertyPath: acceleration diff --git a/Assets/Prefabs/enemies/Objects/bird.prefab b/Assets/Prefabs/enemies/Objects/bird.prefab index 37e56a5..21614b7 100644 --- a/Assets/Prefabs/enemies/Objects/bird.prefab +++ b/Assets/Prefabs/enemies/Objects/bird.prefab @@ -916,12 +916,15 @@ MonoBehaviour: speed: 15 acceleration: 5 stoppingDistance: 1 - visionRange: 15 + visionRange: 10 untilPatrolTime: 10 untilChangeTime: 3 patrolRange: 7 isPatrolRunning: 0 isWaitingForPlayer: 0 + shouldRotate: 1 + isRotatedRight: 0 + isInitialRight: 0 --- !u!114 &6106228146414313247 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/Assets/Prefabs/enemies/Objects/bull.prefab b/Assets/Prefabs/enemies/Objects/bull.prefab index 51cce1c..f4d2e79 100644 --- a/Assets/Prefabs/enemies/Objects/bull.prefab +++ b/Assets/Prefabs/enemies/Objects/bull.prefab @@ -810,7 +810,7 @@ MonoBehaviour: isRanged: 0 projectile: {fileID: 0} projSpeed: 0 - visionRange: 20 + visionRange: 15 consideredMasks: serializedVersion: 2 m_Bits: 577 @@ -835,6 +835,9 @@ MonoBehaviour: gravity: 10 isJumping: 0 corners: [] + shouldRotate: 1 + isRotatedRight: 0 + isInitialRight: 0 --- !u!114 &1799007848406073239 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/Assets/Prefabs/enemies/Objects/creaper.prefab b/Assets/Prefabs/enemies/Objects/creaper.prefab index 9bb3774..b728f8d 100644 --- a/Assets/Prefabs/enemies/Objects/creaper.prefab +++ b/Assets/Prefabs/enemies/Objects/creaper.prefab @@ -710,7 +710,7 @@ MonoBehaviour: isRanged: 0 projectile: {fileID: 0} projSpeed: 0 - visionRange: 15 + visionRange: 10 consideredMasks: serializedVersion: 2 m_Bits: 577 @@ -735,6 +735,9 @@ MonoBehaviour: gravity: 10 isJumping: 0 corners: [] + shouldRotate: 1 + isRotatedRight: 0 + isInitialRight: 0 --- !u!114 &319733081601150911 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/Assets/Prefabs/enemies/Objects/enemy-crystal.prefab b/Assets/Prefabs/enemies/Objects/enemy-crystal.prefab index 4940b92..d6d2b64 100644 --- a/Assets/Prefabs/enemies/Objects/enemy-crystal.prefab +++ b/Assets/Prefabs/enemies/Objects/enemy-crystal.prefab @@ -432,7 +432,7 @@ MonoBehaviour: speed: 15 acceleration: 1 stoppingDistance: 1.5 - visionRange: 25 + visionRange: 15 untilPatrolTime: 5 untilChangeTime: 2 patrolRange: 5 @@ -440,7 +440,7 @@ MonoBehaviour: isWaitingForPlayer: 0 shouldRotate: 0 isRotatedRight: 0 - initialRightRotation: 0 + isInitialRight: 0 --- !u!114 &4719359554338171692 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/Assets/Prefabs/enemies/Objects/mother.prefab b/Assets/Prefabs/enemies/Objects/mother.prefab index a7f0e56..73d97e2 100644 --- a/Assets/Prefabs/enemies/Objects/mother.prefab +++ b/Assets/Prefabs/enemies/Objects/mother.prefab @@ -459,7 +459,7 @@ MonoBehaviour: isRanged: 0 projectile: {fileID: 0} projSpeed: 0 - visionRange: 40 + visionRange: 20 consideredMasks: serializedVersion: 2 m_Bits: 0 @@ -473,7 +473,7 @@ MonoBehaviour: isWaitingForPlayer: 0 speed: 1 acceleration: 1 - stoppingDistance: 15 + stoppingDistance: 10 groundDetectionOffset: 0 jumpHeight: 2 minJumpHeight: 0 @@ -484,6 +484,9 @@ MonoBehaviour: gravity: 10 isJumping: 0 corners: [] + shouldRotate: 1 + isRotatedRight: 0 + isInitialRight: 0 --- !u!114 &7265055968521215487 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/Assets/Prefabs/enemies/Objects/pumpkin.prefab b/Assets/Prefabs/enemies/Objects/pumpkin.prefab index eed5428..1ac64e7 100644 --- a/Assets/Prefabs/enemies/Objects/pumpkin.prefab +++ b/Assets/Prefabs/enemies/Objects/pumpkin.prefab @@ -356,7 +356,7 @@ MonoBehaviour: speed: 7 acceleration: 5 stoppingDistance: 0 - visionRange: 25 + visionRange: 15 untilPatrolTime: 0 untilChangeTime: 0 patrolRange: 0 diff --git a/Assets/Prefabs/enemies/Objects/snail.prefab b/Assets/Prefabs/enemies/Objects/snail.prefab index 79fd059..5aa14d0 100644 --- a/Assets/Prefabs/enemies/Objects/snail.prefab +++ b/Assets/Prefabs/enemies/Objects/snail.prefab @@ -252,7 +252,7 @@ MonoBehaviour: isRanged: 1 projectile: {fileID: 5649252163690582418, guid: 5bf56d6448869c54fb7109fc4a2f36b1, type: 3} projSpeed: 25 - visionRange: 25 + visionRange: 20 consideredMasks: serializedVersion: 2 m_Bits: 577 @@ -277,6 +277,9 @@ MonoBehaviour: gravity: 10 isJumping: 0 corners: [] + shouldRotate: 1 + isRotatedRight: 0 + isInitialRight: 0 --- !u!114 &-2550626273566953102 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/Assets/Prefabs/enemies/Objects/spider.prefab b/Assets/Prefabs/enemies/Objects/spider.prefab index 02cfdfb..0830f83 100644 --- a/Assets/Prefabs/enemies/Objects/spider.prefab +++ b/Assets/Prefabs/enemies/Objects/spider.prefab @@ -381,7 +381,7 @@ MonoBehaviour: isRanged: 0 projectile: {fileID: 0} projSpeed: 0 - visionRange: 20 + visionRange: 15 consideredMasks: serializedVersion: 2 m_Bits: 704 @@ -406,6 +406,9 @@ MonoBehaviour: gravity: 10 isJumping: 0 corners: [] + shouldRotate: 1 + isRotatedRight: 0 + isInitialRight: 0 --- !u!114 &-54058297220531753 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/Assets/Prefabs/enemies/Objects/sun.prefab b/Assets/Prefabs/enemies/Objects/sun.prefab index 3416078..a488f37 100644 --- a/Assets/Prefabs/enemies/Objects/sun.prefab +++ b/Assets/Prefabs/enemies/Objects/sun.prefab @@ -993,7 +993,7 @@ MonoBehaviour: speed: 5 acceleration: 5 stoppingDistance: 10 - visionRange: 15 + visionRange: 10 untilPatrolTime: 0 untilChangeTime: 0 patrolRange: 0 diff --git a/Assets/Scenes/LevelTest.unity b/Assets/Scenes/LevelTest.unity index 4ee44d9..f172c3a 100644 --- a/Assets/Scenes/LevelTest.unity +++ b/Assets/Scenes/LevelTest.unity @@ -705,16 +705,16 @@ RectTransform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 718551939} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalScale: {x: 0.8, y: 0.8, z: 0.8} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 7022679728177297480} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 1, y: 0.5} m_AnchorMax: {x: 1, y: 0.5} - m_AnchoredPosition: {x: -150, y: 50} + m_AnchoredPosition: {x: -120, y: 149.99998} m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0.5, y: 0.5} --- !u!1001 &731163149 @@ -1979,105 +1979,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 5f0794fe08ee8be4dbadd94a16bbe227, type: 3} m_Name: m_EditorClassIdentifier: ---- !u!114 &602555361595079665 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4363496690700422927} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_text: Map - m_isRightToLeft: 0 - m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - m_fontSharedMaterials: [] - m_fontMaterial: {fileID: 0} - m_fontMaterials: [] - m_fontColor32: - serializedVersion: 2 - rgba: 4278190080 - m_fontColor: {r: 0, g: 0, b: 0, a: 1} - m_enableVertexGradient: 0 - m_colorMode: 3 - m_fontColorGradient: - topLeft: {r: 1, g: 1, b: 1, a: 1} - topRight: {r: 1, g: 1, b: 1, a: 1} - bottomLeft: {r: 1, g: 1, b: 1, a: 1} - bottomRight: {r: 1, g: 1, b: 1, a: 1} - m_fontColorGradientPreset: {fileID: 0} - m_spriteAsset: {fileID: 0} - m_tintAllSprites: 0 - m_StyleSheet: {fileID: 0} - m_TextStyleHashCode: -1183493901 - m_overrideHtmlColors: 0 - m_faceColor: - serializedVersion: 2 - rgba: 4294967295 - m_fontSize: 20 - m_fontSizeBase: 36 - m_fontWeight: 400 - m_enableAutoSizing: 0 - m_fontSizeMin: 18 - m_fontSizeMax: 72 - m_fontStyle: 0 - m_HorizontalAlignment: 2 - m_VerticalAlignment: 512 - m_textAlignment: 65535 - m_characterSpacing: 0 - m_wordSpacing: 0 - m_lineSpacing: 0 - m_lineSpacingMax: 0 - m_paragraphSpacing: 0 - m_charWidthMaxAdj: 0 - m_TextWrappingMode: 1 - m_wordWrappingRatios: 0.4 - m_overflowMode: 0 - m_linkedTextComponent: {fileID: 0} - parentLinkedComponent: {fileID: 0} - m_enableKerning: 0 - m_ActiveFontFeatures: 6e72656b - m_enableExtraPadding: 0 - checkPaddingRequired: 0 - m_isRichText: 1 - m_EmojiFallbackSupport: 1 - m_parseCtrlCharacters: 1 - m_isOrthographic: 1 - m_isCullingEnabled: 0 - m_horizontalMapping: 0 - m_verticalMapping: 0 - m_uvLineOffset: 0 - m_geometrySortingOrder: 0 - m_IsTextObjectScaleStatic: 0 - m_VertexBufferAutoSizeReduction: 0 - m_useMaxVisibleDescender: 1 - m_pageToDisplay: 1 - m_margin: {x: 0, y: 0, z: 0, w: 0} - m_isUsingLegacyAnimationComponent: 0 - m_isVolumetricText: 0 - m_hasFontAssetChanged: 0 - m_baseMaterial: {fileID: 0} - m_maskOffset: {x: 0, y: 0, z: 0, w: 0} ---- !u!222 &1287452752871254539 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4363496690700422927} - m_CullTransparentMesh: 1 --- !u!223 &2605590932169263970 Canvas: m_ObjectHideFlags: 0 @@ -2141,92 +2042,6 @@ MonoBehaviour: m_BlockingMask: serializedVersion: 2 m_Bits: 4294967295 ---- !u!1 &4363496690700422927 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 6281792231047372011} - - component: {fileID: 1287452752871254539} - - component: {fileID: 602555361595079665} - m_Layer: 5 - m_Name: Text (TMP) - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!1 &4800320771983360548 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7173089326798328530} - - component: {fileID: 7637133299569709953} - - component: {fileID: 6349200685568168012} - - component: {fileID: 7498772413547036962} - m_Layer: 5 - m_Name: MapButton - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &6281792231047372011 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4363496690700422927} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 7173089326798328530} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0.5} - m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 50, y: 50} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &6349200685568168012 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4800320771983360548} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 --- !u!224 &7022679728177297480 RectTransform: m_ObjectHideFlags: 0 @@ -2239,7 +2054,6 @@ RectTransform: m_LocalScale: {x: 0, y: 0, z: 0} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 7173089326798328530} - {fileID: 718551940} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -2248,82 +2062,6 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0, y: 0} ---- !u!224 &7173089326798328530 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4800320771983360548} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 6281792231047372011} - m_Father: {fileID: 7022679728177297480} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0.5} - m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 360, y: 130} - m_SizeDelta: {x: 50, y: 50} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &7498772413547036962 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4800320771983360548} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Navigation: - m_Mode: 3 - m_WrapAround: 0 - m_SelectOnUp: {fileID: 0} - m_SelectOnDown: {fileID: 0} - m_SelectOnLeft: {fileID: 0} - m_SelectOnRight: {fileID: 0} - m_Transition: 1 - m_Colors: - m_NormalColor: {r: 1, g: 1, b: 1, a: 1} - m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} - m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} - m_ColorMultiplier: 1 - m_FadeDuration: 0.1 - m_SpriteState: - m_HighlightedSprite: {fileID: 0} - m_PressedSprite: {fileID: 0} - m_SelectedSprite: {fileID: 0} - m_DisabledSprite: {fileID: 0} - m_AnimationTriggers: - m_NormalTrigger: Normal - m_HighlightedTrigger: Highlighted - m_PressedTrigger: Pressed - m_SelectedTrigger: Selected - m_DisabledTrigger: Disabled - m_Interactable: 1 - m_TargetGraphic: {fileID: 6349200685568168012} - m_OnClick: - m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 7630774207839435374} - m_TargetAssemblyTypeName: LevelMapManager, Assembly-CSharp - m_MethodName: ChangeMapActive - m_Mode: 1 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 --- !u!1 &7630774207839435373 GameObject: m_ObjectHideFlags: 0 @@ -2361,14 +2099,6 @@ MonoBehaviour: roomOffsetX: 40 roomOffsetY: 40 passPrefab: {fileID: 8197101766819024181, guid: 763bc3116ee4a3d4ba8f54e70469f529, type: 3} ---- !u!222 &7637133299569709953 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4800320771983360548} - m_CullTransparentMesh: 1 --- !u!1660057539 &9223372036854775807 SceneRoots: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/ForGUI/LevelMapManager.cs b/Assets/Scripts/ForGUI/LevelMapManager.cs index 4850cea..5f55f5a 100644 --- a/Assets/Scripts/ForGUI/LevelMapManager.cs +++ b/Assets/Scripts/ForGUI/LevelMapManager.cs @@ -7,7 +7,7 @@ public class LevelMapManager : MonoBehaviour public float roomOffsetX, roomOffsetY; public GameObject passPrefab; - bool mapActive = false; + bool mapActive = true; GameObject[,] roomsMap; GameObject[,] passMapHorizontal; // проходы от комнат вниз GameObject[,] passMapVertical; // проходы от комнат вправо @@ -17,7 +17,7 @@ void Start() { } void GenerateMap() { - mapRoot.gameObject.SetActive(false); + mapRoot.gameObject.SetActive(mapActive); LevelManager lm = FindFirstObjectByType(); roomsMap = new GameObject[lm.roomsX, lm.roomsY]; passMapHorizontal = new GameObject[lm.roomsX - 1, lm.roomsY]; diff --git a/Assets/Scripts/Rooms/LevelManager.cs b/Assets/Scripts/Rooms/LevelManager.cs index 32c68df..a88818c 100644 --- a/Assets/Scripts/Rooms/LevelManager.cs +++ b/Assets/Scripts/Rooms/LevelManager.cs @@ -9,6 +9,7 @@ public class LevelManager : MonoBehaviour public int roomsX = 4, roomsY = 4; public float roomOffsetX, roomOffsetY; public bool usePath = true; + public bool removeUselessClusters = false; // public int minPathSize = 6, maxPathSize = 15; public List maxRoomCount; @@ -61,6 +62,7 @@ void GenerateLevel() { rooms[x, y] = new RoomInfoInstance{roomInfo = ri}; } } + if (removeUselessClusters) RemoveUselessClusters(); } void LoadLevel() { @@ -96,6 +98,48 @@ DirAvailability IsDirectionAvailable(int newX, int newY, int exX, int exY) { public RoomInfoInstance GetRoom(int x, int y) { return rooms[x, y]; } + + void RemoveUselessClusters() { + List> clusters = new(); + for (int x = 0; x < roomsX; ++x) { + for (int y = 0; y < roomsY; ++y) { + RoomInfoInstance rii = rooms[x, y]; + if (rii == null) continue; + if (clusters.Any(cluster => cluster.Contains(rii))) continue; + HashSet cluster = new() {rii}; + bool updated = true; + while (updated) { + updated = false; + for (int x2 = 0; x2 < roomsX; ++x2) { + for (int y2 = 0; y2 < roomsY; ++y2) { + RoomInfoInstance rii2 = rooms[x2, y2]; + if (cluster.Contains(rii2) || rii2 == null) continue; + bool add = false; + print($"{x2} {y2} {rii2.roomInfo.rd}"); + if (rii2.roomInfo.rd.up == DirAvailability.Available && cluster.Contains(rooms[x, y - 1])) add = true; + if (rii2.roomInfo.rd.down == DirAvailability.Available && cluster.Contains(rooms[x, y + 1])) add = true; + if (rii2.roomInfo.rd.left == DirAvailability.Available && cluster.Contains(rooms[x - 1, y])) add = true; + if (rii2.roomInfo.rd.right == DirAvailability.Available && cluster.Contains(rooms[x + 1, y])) add = true; + if (add) { + updated = true; + cluster.Add(rii2); + } + } + } + } + clusters.Add(cluster); + } + } + print(clusters.Count); + clusters = clusters.Where(cluster => !cluster.Contains(rooms[0, 0])).ToList(); + if (clusters.Count > 0) { + for (int x = 0; x < roomsX; ++x) { + for (int y = 0; y < roomsY; ++y) { + if (clusters.Any(cluster => cluster.Contains(rooms[x, y]))) rooms[x, y] = null; + } + } + } + } } class PathGenerator {