158 lines
6.4 KiB
C#
158 lines
6.4 KiB
C#
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; // 是否图案关
|
|
|
|
/// <summary>
|
|
/// 根据关卡序号(从1开始)获取对应难度预设
|
|
/// </summary>
|
|
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;
|
|
}
|
|
}
|
|
} |