Move HUD thermal risk into runtime render settings
This commit is contained in:
parent
4bb93813eb
commit
4464f5cdce
4 changed files with 44 additions and 3 deletions
|
|
@ -1818,6 +1818,9 @@ static void RequireDaemonRenderQueryAuthority(string root)
|
|||
"public readonly struct AetheriaRuntimeDaemonRenderSettings",
|
||||
"public readonly struct AetheriaRuntimeExponentialCurve",
|
||||
"public double ConvergenceMinimumDistance { get; }",
|
||||
"public double HypothermiaTemperature { get; }",
|
||||
"public double HeatstrokeTemperature { get; }",
|
||||
"public double NormalizeThermalRisk(double temperature)",
|
||||
"public AetheriaRuntimeExponentialCurve TemperatureEmissionCurve { get; }",
|
||||
"public static AetheriaRuntimeGravityInfluenceBrush[] QueryGravityInfluences(",
|
||||
"AetheriaRuntimeZoneSnapshotCommit? zone",
|
||||
|
|
@ -2149,6 +2152,25 @@ static void RequireDaemonRenderQueryAuthority(string root)
|
|||
"EntityInstance no longer resolves convergence from daemon target projection: " +
|
||||
string.Join(", ", missingEntityInstanceSymbols));
|
||||
}
|
||||
|
||||
var schematicDisplayPath = Path.Combine(root, "Assets", "Scripts", "UI", "HUD", "SchematicDisplay.cs");
|
||||
var schematicDisplay = File.Exists(schematicDisplayPath)
|
||||
? File.ReadAllText(schematicDisplayPath)
|
||||
: throw new InvalidOperationException("Cannot verify HUD thermal presentation authority; SchematicDisplay.cs is missing.");
|
||||
if (schematicDisplay.Contains("Settings.GameplaySettings.HypothermiaTemperature", StringComparison.Ordinal) ||
|
||||
schematicDisplay.Contains("Settings.GameplaySettings.HeatstrokeTemperature", StringComparison.Ordinal))
|
||||
{
|
||||
throw new InvalidOperationException(
|
||||
"SchematicDisplay must normalize cockpit thermal risk through shared daemon render settings instead of Unity GameSettings.");
|
||||
}
|
||||
|
||||
if (!schematicDisplay.Contains("ZoneRenderer.RenderSettings.NormalizeThermalRisk(", StringComparison.Ordinal) ||
|
||||
!actionGameManager.Contains("Settings.GameplaySettings.HypothermiaTemperature", StringComparison.Ordinal) ||
|
||||
!actionGameManager.Contains("Settings.GameplaySettings.HeatstrokeTemperature", StringComparison.Ordinal))
|
||||
{
|
||||
throw new InvalidOperationException(
|
||||
"HUD thermal presentation no longer flows through the shared daemon render settings bridge.");
|
||||
}
|
||||
}
|
||||
|
||||
static void RequireTypedZoneConstructionKeys(string root)
|
||||
|
|
|
|||
|
|
@ -569,7 +569,9 @@ public class ActionGameManager : MonoBehaviour
|
|||
emissionCurve.Exponent,
|
||||
emissionCurve.Multiplier,
|
||||
emissionCurve.Constant),
|
||||
Settings.GameplaySettings.ConvergenceMinimumDistance);
|
||||
Settings.GameplaySettings.ConvergenceMinimumDistance,
|
||||
Settings.GameplaySettings.HypothermiaTemperature,
|
||||
Settings.GameplaySettings.HeatstrokeTemperature);
|
||||
}
|
||||
|
||||
private readonly (float2 direction, string name)[] _directions = {
|
||||
|
|
|
|||
|
|
@ -193,7 +193,9 @@ public class SchematicDisplay : MonoBehaviour
|
|||
|
||||
HeatstrokeMeterFill.anchorMax = new Vector2(_entity.Heatstroke, 1);
|
||||
HypothermiaMeterFill.anchorMax = new Vector2(_entity.Hypothermia, 1);
|
||||
HeatstrokeLimitFill.anchorMax = new Vector2(unlerp(Settings.GameplaySettings.HypothermiaTemperature, Settings.GameplaySettings.HeatstrokeTemperature, _cockpit.Item.Temperature), 1);
|
||||
HeatstrokeLimitFill.anchorMax = new Vector2(
|
||||
(float)ActionGameManager.Instance.ZoneRenderer.RenderSettings.NormalizeThermalRisk(_cockpit.Item.Temperature),
|
||||
1);
|
||||
}
|
||||
|
||||
SensorCooldownFill.anchorMax = new Vector2(_entity.Sensor?.Cooldown ?? 0, 1);
|
||||
|
|
|
|||
|
|
@ -51,14 +51,29 @@ namespace GameCult.Aetheria.State.Verse
|
|||
{
|
||||
public AetheriaRuntimeDaemonRenderSettings(
|
||||
AetheriaRuntimeExponentialCurve temperatureEmissionCurve,
|
||||
double convergenceMinimumDistance)
|
||||
double convergenceMinimumDistance,
|
||||
double hypothermiaTemperature,
|
||||
double heatstrokeTemperature)
|
||||
{
|
||||
TemperatureEmissionCurve = temperatureEmissionCurve;
|
||||
ConvergenceMinimumDistance = convergenceMinimumDistance;
|
||||
HypothermiaTemperature = hypothermiaTemperature;
|
||||
HeatstrokeTemperature = heatstrokeTemperature;
|
||||
}
|
||||
|
||||
public AetheriaRuntimeExponentialCurve TemperatureEmissionCurve { get; }
|
||||
public double ConvergenceMinimumDistance { get; }
|
||||
public double HypothermiaTemperature { get; }
|
||||
public double HeatstrokeTemperature { get; }
|
||||
|
||||
public double NormalizeThermalRisk(double temperature)
|
||||
{
|
||||
var range = HeatstrokeTemperature - HypothermiaTemperature;
|
||||
if (range <= 0)
|
||||
return temperature >= HeatstrokeTemperature ? 1.0 : 0.0;
|
||||
|
||||
return Math.Max(0.0, Math.Min(1.0, (temperature - HypothermiaTemperature) / range));
|
||||
}
|
||||
}
|
||||
|
||||
public readonly struct AetheriaRuntimeGravityInfluenceBrush
|
||||
|
|
|
|||
Loading…
Reference in a new issue