MazeConfig.cs 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. using UnityEngine;
  2. /// <summary>
  3. /// Configuration parameters for maze generation
  4. /// Adjustable to control maze layout, room distribution, and difficulty
  5. /// </summary>
  6. [System.Serializable]
  7. public class MazeConfig
  8. {
  9. [Header("Maze Size")]
  10. [SerializeField] public int Width = 100;
  11. [SerializeField] public int Height = 100;
  12. [SerializeField] public int MinSize = 100;
  13. [SerializeField] public int MaxSize = 10000;
  14. [Header("Room Generation")]
  15. [SerializeField] public int TargetRoomCount = 20;
  16. [SerializeField] public int MinRoomWidth = 5;
  17. [SerializeField] public int MaxRoomWidth = 25;
  18. [SerializeField] public int MinRoomHeight = 5;
  19. [SerializeField] public int MaxRoomHeight = 25;
  20. [SerializeField] public int MinRoomSpacing = 2; // Minimum space between rooms
  21. [Header("Start and Exit Points")]
  22. [SerializeField] public int MinStartPoints = 1;
  23. [SerializeField] public int MaxStartPoints = 3;
  24. [SerializeField] public int MinExits = 1;
  25. [SerializeField] public int MaxExits = 5;
  26. [Header("Hallway")]
  27. [SerializeField] public int MinHallwayWidth = 1;
  28. [SerializeField] public int MaxHallwayWidth = 3;
  29. [Header("Special Rooms")]
  30. [SerializeField] public int SafeRoomCount = 2;
  31. [SerializeField] public int RestRoomCount = 2;
  32. [SerializeField] public int BossRoomCount = 1;
  33. [SerializeField] public int NormalRoomPercentage = 50; // Percentage that should be normal rooms
  34. [Header("Monster Areas")]
  35. [SerializeField] public bool UseMonsterAreas = true;
  36. [SerializeField] public int MonsterAreaDensity = 50; // Percentage of rooms with monsters
  37. [Header("Generation")]
  38. [SerializeField] public int RandomSeed = 0;
  39. [SerializeField] public bool UseRandomSeed = false;
  40. /// <summary>
  41. /// Validates configuration values and clamps them to acceptable ranges
  42. /// </summary>
  43. public void Validate()
  44. {
  45. Width = Mathf.Clamp(Width, MinSize, MaxSize);
  46. Height = Mathf.Clamp(Height, MinSize, MaxSize);
  47. TargetRoomCount = Mathf.Max(TargetRoomCount, 5);
  48. MinRoomWidth = Mathf.Max(MinRoomWidth, 3);
  49. MinRoomHeight = Mathf.Max(MinRoomHeight, 3);
  50. MaxRoomWidth = Mathf.Max(MaxRoomWidth, MinRoomWidth + 2);
  51. MaxRoomHeight = Mathf.Max(MaxRoomHeight, MinRoomHeight + 2);
  52. MinStartPoints = Mathf.Max(MinStartPoints, 1);
  53. MaxStartPoints = Mathf.Max(MaxStartPoints, MinStartPoints);
  54. MinExits = Mathf.Max(MinExits, 1);
  55. MaxExits = Mathf.Max(MaxExits, MinExits);
  56. NormalRoomPercentage = Mathf.Clamp(NormalRoomPercentage, 0, 100);
  57. MonsterAreaDensity = Mathf.Clamp(MonsterAreaDensity, 0, 100);
  58. }
  59. }