using ChillConnect; namespace ChillConnect.Editor { [System.Serializable] public class LevelDifficultyPreset { public int gridRows; public int gridCols; public int arrowCount; // 目标箭头数 public int minArrowCount; // 最小接受箭头数 public int minPathLength; // 单箭头最小长度(格数) public int maxPathLength; // 单箭头最大长度 public int maxTurnCount; // 最大折数 public float turnProbability; // 每步转向概率 public bool isPatternLevel; // 是否图案关 /// /// 根据关卡序号(从1开始)获取对应难度预设 /// public static LevelDifficultyPreset GetPreset(int levelIndex) { LevelDifficultyPreset preset = new LevelDifficultyPreset(); // ===== 第1-2关:起步适应 8x8 ===== if (levelIndex <= 2) { preset.gridRows = 8; preset.gridCols = 8; preset.arrowCount = 7; preset.minArrowCount = 5; preset.minPathLength = 2; preset.maxPathLength = 4; preset.maxTurnCount = 0; // 纯直线 preset.turnProbability = 0f; preset.isPatternLevel = false; } // ===== 第3关:难度突变 13x13 ===== else if (levelIndex == 3) { preset.gridRows = 13; preset.gridCols = 13; preset.arrowCount = 14; preset.minArrowCount = 10; preset.minPathLength = 2; preset.maxPathLength = 5; preset.maxTurnCount = 0; preset.turnProbability = 0f; preset.isPatternLevel = false; } // ===== 第4关:第一个图案关 ===== else if (levelIndex == 4) { preset.gridRows = 13; preset.gridCols = 13; preset.arrowCount = 12; preset.minArrowCount = 10; preset.minPathLength = 2; preset.maxPathLength = 6; preset.maxTurnCount = 0; preset.turnProbability = 0f; preset.isPatternLevel = true; } // ===== 第5-10关:快速跃升期 ===== else if (levelIndex <= 10) { preset.gridRows = 13; preset.gridCols = 13; preset.arrowCount = 14 + (levelIndex - 5) * 1; preset.minArrowCount = preset.arrowCount - 3; preset.minPathLength = 2; preset.maxPathLength = 6; preset.maxTurnCount = 1; preset.turnProbability = 0.15f; preset.isPatternLevel = levelIndex == 8; } // ===== 第11-15关:进阶爬坡 ===== else if (levelIndex <= 15) { preset.gridRows = 13; preset.gridCols = 13; preset.arrowCount = 20 + (levelIndex - 11); preset.minArrowCount = preset.arrowCount - 3; preset.minPathLength = 2; preset.maxPathLength = 7; preset.maxTurnCount = 1; preset.turnProbability = 0.2f; preset.isPatternLevel = levelIndex == 13; } // ===== 第15关突变:折数提升 ===== else if (levelIndex <= 25) { preset.gridRows = 13; preset.gridCols = 13; preset.arrowCount = 22 + (levelIndex - 15); preset.minArrowCount = preset.arrowCount - 4; preset.minPathLength = 2; preset.maxPathLength = 7; preset.maxTurnCount = 2; preset.turnProbability = 0.25f; preset.isPatternLevel = levelIndex == 19; } // ===== 第26-35关 ===== else if (levelIndex <= 35) { preset.gridRows = 14; preset.gridCols = 14; preset.arrowCount = 25 + (levelIndex - 26); preset.minArrowCount = preset.arrowCount - 4; preset.minPathLength = 2; preset.maxPathLength = 8; preset.maxTurnCount = 2; preset.turnProbability = 0.28f; preset.isPatternLevel = levelIndex == 26 || levelIndex == 33; } // ===== 第36-50关:高难起步 ===== else if (levelIndex <= 50) { preset.gridRows = 14; preset.gridCols = 14; preset.arrowCount = 28 + (levelIndex - 36); preset.minArrowCount = preset.arrowCount - 5; preset.minPathLength = 2; preset.maxPathLength = 8; preset.maxTurnCount = 2; preset.turnProbability = 0.3f; preset.isPatternLevel = levelIndex == 41 || levelIndex == 49; } // ===== 第50关突变:15x15 ===== else if (levelIndex <= 75) { preset.gridRows = 15; preset.gridCols = 15; preset.arrowCount = 30 + (levelIndex - 50) / 2; preset.minArrowCount = preset.arrowCount - 5; preset.minPathLength = 2; preset.maxPathLength = 9; preset.maxTurnCount = 3; preset.turnProbability = 0.32f; preset.isPatternLevel = levelIndex == 57 || levelIndex == 65 || levelIndex == 72; } // ===== 第76-100关:终极挑战 16x16 ===== else { preset.gridRows = 16; preset.gridCols = 16; preset.arrowCount = 32 + (levelIndex - 75) / 3; preset.minArrowCount = preset.arrowCount - 6; preset.minPathLength = 2; preset.maxPathLength = 9; preset.maxTurnCount = 3; preset.turnProbability = 0.35f; preset.isPatternLevel = levelIndex == 80 || levelIndex == 87 || levelIndex == 93 || levelIndex == 100; } return preset; } } }