This commit is contained in:
2025-12-23 14:50:46 +08:00
parent 9af5966135
commit 79b09af69f
3 changed files with 80 additions and 32 deletions

Binary file not shown.

Binary file not shown.

View File

@@ -809,50 +809,98 @@ private void CalculateAutoFlux()
// 计算进度百分比
float incubationPercent = incubationDuration > 0 ? incubationProgress / incubationDuration : 0f;
float qualityPercent = qualityTotal > 0 ? qualityProgress / qualityTotal : 0f;
float gap = qualityPercent - incubationPercent; // 正=品质领先,负=品质落后
switch (fluxMode)
{
case FluxMode.Quality:
// 品质优先:低活性追求100%品质
targetFlux = 0.3f;
// 品质已满时加速
if (qualityPercent >= 0.95f) targetFlux = 0.8f;
// 品质优先:确保品质始终领先于孵化进度
// 目标:品质 >= 孵化进度 + 10%
if (qualityPercent >= 0.98f)
{
// 品质已满,全速
targetFlux = 1.0f;
}
else if (gap > 0.2f)
{
// 品质大幅领先,可以加速
targetFlux = 0.6f;
}
else if (gap > 0.1f)
{
// 品质小幅领先
targetFlux = 0.45f;
}
else if (gap > 0f)
{
// 品质略微领先
targetFlux = 0.35f;
}
else
{
// 品质落后或持平,放慢追品质
targetFlux = 0.2f;
}
break;
case FluxMode.Speed:
// 速度优先:高活性,快速完成
targetFlux = 0.9f;
// 资源紧张时稍微降低
if (FuelComp != null && FuelComp.Fuel < 5f) targetFlux = 0.6f;
// 速度优先:尽快完成孵化,允许品质落后
// 目标:最大化速度,只在品质太低时稍微降速
if (qualityPercent >= 0.95f)
{
// 品质已满
targetFlux = 1.0f;
}
else if (qualityPercent < 0.3f && incubationPercent > 0.5f)
{
// 品质太低且孵化过半,稍微降速
targetFlux = 0.7f;
}
else if (qualityPercent < 0.2f && incubationPercent > 0.7f)
{
// 品质极低且快完成,降速救品质
targetFlux = 0.5f;
}
else
{
// 正常全速
targetFlux = 1.0f;
}
break;
case FluxMode.Balance:
default:
// 平衡模式:动态调整,追求两者同时完成
targetFlux = 0.5f;
if (isIncubating)
// 平衡模式:追求品质和孵化同时完成
// 目标gap ≈ 0
if (qualityPercent >= 0.95f)
{
// 品质已满全速
if (qualityPercent >= 0.95f)
{
targetFlux = 1.0f;
}
// 孵化快完成但品质不够,降速追品质
else if (incubationPercent > 0.8f && qualityPercent < 0.6f)
{
targetFlux = 0.25f;
}
// 品质落后,降速
else if (qualityPercent < incubationPercent - 0.15f)
{
targetFlux = 0.35f;
}
// 品质领先,加速
else if (qualityPercent > incubationPercent + 0.1f)
{
targetFlux = 0.7f;
}
// 品质已满全速
targetFlux = 1.0f;
}
else if (gap > 0.15f)
{
// 品质大幅领先,加速孵化
targetFlux = 0.8f;
}
else if (gap > 0.05f)
{
// 品质小幅领先
targetFlux = 0.6f;
}
else if (gap > -0.05f)
{
// 接近平衡
targetFlux = 0.5f;
}
else if (gap > -0.15f)
{
// 品质小幅落后
targetFlux = 0.35f;
}
else
{
// 品质大幅落后,降速追品质
targetFlux = 0.2f;
}
break;
}