using UnityEngine; /// /// Configuration parameters for maze generation /// Adjustable to control maze layout, room distribution, and difficulty /// [System.Serializable] public class MazeConfig { [Header("Maze Size")] [SerializeField] public int Width = 100; [SerializeField] public int Height = 100; [SerializeField] public int MinSize = 100; [SerializeField] public int MaxSize = 10000; [Header("Room Generation")] [SerializeField] public int TargetRoomCount = 20; [SerializeField] public int MinRoomWidth = 5; [SerializeField] public int MaxRoomWidth = 25; [SerializeField] public int MinRoomHeight = 5; [SerializeField] public int MaxRoomHeight = 25; [SerializeField] public int MinRoomSpacing = 2; // Minimum space between rooms [Header("Start and Exit Points")] [SerializeField] public int MinStartPoints = 1; [SerializeField] public int MaxStartPoints = 3; [SerializeField] public int MinExits = 1; [SerializeField] public int MaxExits = 5; [Header("Hallway")] [SerializeField] public int MinHallwayWidth = 1; [SerializeField] public int MaxHallwayWidth = 3; [Header("Special Rooms")] [SerializeField] public int SafeRoomCount = 2; [SerializeField] public int RestRoomCount = 2; [SerializeField] public int BossRoomCount = 1; [SerializeField] public int NormalRoomPercentage = 50; // Percentage that should be normal rooms [Header("Monster Areas")] [SerializeField] public bool UseMonsterAreas = true; [SerializeField] public int MonsterAreaDensity = 50; // Percentage of rooms with monsters [Header("Generation")] [SerializeField] public int RandomSeed = 0; [SerializeField] public bool UseRandomSeed = false; /// /// Validates configuration values and clamps them to acceptable ranges /// public void Validate() { Width = Mathf.Clamp(Width, MinSize, MaxSize); Height = Mathf.Clamp(Height, MinSize, MaxSize); TargetRoomCount = Mathf.Max(TargetRoomCount, 5); MinRoomWidth = Mathf.Max(MinRoomWidth, 3); MinRoomHeight = Mathf.Max(MinRoomHeight, 3); MaxRoomWidth = Mathf.Max(MaxRoomWidth, MinRoomWidth + 2); MaxRoomHeight = Mathf.Max(MaxRoomHeight, MinRoomHeight + 2); MinStartPoints = Mathf.Max(MinStartPoints, 1); MaxStartPoints = Mathf.Max(MaxStartPoints, MinStartPoints); MinExits = Mathf.Max(MinExits, 1); MaxExits = Mathf.Max(MaxExits, MinExits); NormalRoomPercentage = Mathf.Clamp(NormalRoomPercentage, 0, 100); MonsterAreaDensity = Mathf.Clamp(MonsterAreaDensity, 0, 100); } }