diff --git a/Core/Scripts/ConfigManager.cs b/Core/Scripts/ConfigManager.cs index 4d13fa4..c9a0033 100644 --- a/Core/Scripts/ConfigManager.cs +++ b/Core/Scripts/ConfigManager.cs @@ -26,13 +26,12 @@ namespace IslaApocalypse.Core // Change this if your namespace is different public static string SeaLevelModel = "flat"; public static float SeaLevelValue = 0.15f; - // Height-redistribution curve (tasks 05–09, graduation M-7): the task-09 taste - // batch runs a tri-state — "v5-compact" (maximum lowland) vs "v5-balanced" - // (task-07/08 lineage), both with the corner fixes; "off" is the raw legacy - // profile. The loser retires after the developer's gate and the winner becomes - // plain "v5". "v1"–"v4" retired. INTERIM default pending the verdict: - // v5-balanced. - public static string TerrainCurve = "v5-balanced"; + // Height-redistribution curve (tasks 05–10, graduation M-7): "v5" is the + // task-09 gate's winner — the BALANCED terraced ascent with corner easing and + // modulated shelves; "off" is the raw legacy profile. "v1"–"v4" and the + // taste-batch tri-state ("v5-compact" lost, "v5-balanced" became plain "v5") + // are retired. Default: v5. + public static string TerrainCurve = "v5"; public static void LoadConfig() { @@ -107,10 +106,14 @@ namespace IslaApocalypse.Core // Change this if your namespace is different if (data.ContainsKey("TerrainCurve")) { string curve = (string)data["TerrainCurve"]; - if (curve == "off" || curve == "v5-compact" || curve == "v5-balanced") + if (curve == "off" || curve == "v5") TerrainCurve = curve; + else if (curve == "v5-balanced") + GD.PrintErr($"[ConfigManager] TerrainCurve 'v5-balanced' won the task-09 gate and is now plain \"v5\". Keeping '{TerrainCurve}'."); + else if (curve == "v5-compact") + GD.PrintErr($"[ConfigManager] TerrainCurve 'v5-compact' was retired by the task-09 verdict (BALANCED won). Keeping '{TerrainCurve}' — use \"v5\" or \"off\"."); else if (curve == "v1" || curve == "v2" || curve == "v3" || curve == "v4") - GD.PrintErr($"[ConfigManager] TerrainCurve '{curve}' was retired by a later recalibration (v5, task 09). Keeping '{TerrainCurve}' — use \"v5-compact\", \"v5-balanced\" or \"off\"."); + GD.PrintErr($"[ConfigManager] TerrainCurve '{curve}' was retired by a later recalibration (v5, tasks 09/10). Keeping '{TerrainCurve}' — use \"v5\" or \"off\"."); else GD.PrintErr($"[ConfigManager] Unknown TerrainCurve '{curve}'. Keeping '{TerrainCurve}'."); } diff --git a/Tools/Scripts/HeightCurve.cs b/Tools/Scripts/HeightCurve.cs index 65916b9..2e18ab0 100644 --- a/Tools/Scripts/HeightCurve.cs +++ b/Tools/Scripts/HeightCurve.cs @@ -47,10 +47,9 @@ public static class HeightCurve { public const ushort VERSION = 5; - public static readonly CurveKnots COMPACT = new CurveKnots(1, "compact", - 0.550982f, 0.646528f, 0.723145f, 0.784045f, 0.903025f, 1.003079f); // P65/77/84/88/94/97 - - public static readonly CurveKnots BALANCED = new CurveKnots(2, "balanced", + // The task-09 taste gate's WINNER: BALANCED (id 2). COMPACT retired with the + // verdict; its knots survive only in the task-09 report/batch for the record. + public static readonly CurveKnots V5 = new CurveKnots(2, "balanced", 0.515899f, 0.612157f, 0.710472f, 0.784045f, 0.962922f, 1.119118f); // P60/73/83/88/96/99 // Fixed output anchors — storm ladder + ceiling (frozen). diff --git a/Tools/Scripts/MapGenerator.cs b/Tools/Scripts/MapGenerator.cs index b7e3dc6..961b38a 100644 --- a/Tools/Scripts/MapGenerator.cs +++ b/Tools/Scripts/MapGenerator.cs @@ -88,9 +88,7 @@ public partial class MapGenerator : TextureRect this.CustomMinimumSize = new Vector2(MapSize, MapSize); _heightMap = new float[MapSize, MapSize]; - _curveKnots = ConfigManager.TerrainCurve == "v5-compact" ? HeightCurve.COMPACT - : ConfigManager.TerrainCurve == "v5-balanced" ? HeightCurve.BALANCED - : null; + _curveKnots = ConfigManager.TerrainCurve == "v5" ? HeightCurve.V5 : null; _curveOn = _curveKnots != null; // (The monotonicity assertion now runs inside GenerateTopography, against the // effective per-seed curve, once hMaxSeed is known.)