| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- using UnityEngine;
- /// <summary>
- /// Configuration parameters for maze generation
- /// Adjustable to control maze layout, room distribution, and difficulty
- /// </summary>
- [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;
- /// <summary>
- /// Validates configuration values and clamps them to acceptable ranges
- /// </summary>
- 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);
- }
- }
|