Align frontend pulse contract and tasks

This commit is contained in:
2026-05-14 10:26:56 +02:00
parent 830c7aef14
commit 6decf2a9d2
13 changed files with 129 additions and 90 deletions

View File

@@ -217,9 +217,9 @@ public sealed partial class MainWindow
}
}
private void EndTurn_Click(object sender, RoutedEventArgs e)
private void DebugPulse_Click(object sender, RoutedEventArgs e)
{
RunSimulationStep();
RunDebugPulse();
}
private void PlayPause_Click(object sender, RoutedEventArgs e)
@@ -232,7 +232,7 @@ public sealed partial class MainWindow
private void SimulationTimer_Tick(object? sender, object e)
{
RunSimulationStep();
RunDebugPulse();
}
private void StartSimulationTimer()
@@ -254,9 +254,9 @@ public sealed partial class MainWindow
PlayPauseButton.Label = isPlaying ? "Pause" : "Play";
}
private void RunSimulationStep()
private void RunDebugPulse()
{
m_Level = m_Simulation.EndTurn(m_Level);
m_Level = m_Simulation.AdvancePulseForDebug(m_Level);
RefreshInspector();
LevelCanvas.Invalidate();
}
@@ -878,7 +878,7 @@ public sealed partial class MainWindow
private void RefreshInspector()
{
LevelNameText.Text = m_Level.Name;
TurnText.Text = m_Level.Global.Turn.ToString(CultureInfo.InvariantCulture);
TurnText.Text = m_Level.Global.Pulse.ToString(CultureInfo.InvariantCulture);
StatusText.Text = string.IsNullOrWhiteSpace(m_EditorFeedback)
? $"{m_Level.Global.LevelState}: {m_Level.Global.Status}"
: $"{m_Level.Global.LevelState}: {m_EditorFeedback}";
@@ -1152,6 +1152,9 @@ public sealed partial class MainWindow
EPropType.Junction => ColorHelper.FromArgb(255, 143, 111, 178),
EPropType.Door => ColorHelper.FromArgb(255, 187, 119, 55),
EPropType.AllSeeingEyeTerminal => ColorHelper.FromArgb(255, 85, 151, 156),
EPropType.IsolationValve => CarrierColor(prop.Carrier),
EPropType.SprinklerControl => ColorHelper.FromArgb(255, 54, 150, 186),
EPropType.SprinklerValve => ColorHelper.FromArgb(255, 38, 112, 150),
EPropType.RemedySupply => ColorHelper.FromArgb(255, 76, 145, 86),
EPropType.ReactorControl => ColorHelper.FromArgb(255, 177, 72, 73),
_ => Colors.Gray
@@ -1178,6 +1181,9 @@ public sealed partial class MainWindow
EEditorTool.Junction => EPropType.Junction,
EEditorTool.Door => EPropType.Door,
EEditorTool.AllSeeingEyeTerminal => EPropType.AllSeeingEyeTerminal,
EEditorTool.IsolationValve => EPropType.IsolationValve,
EEditorTool.SprinklerControl => EPropType.SprinklerControl,
EEditorTool.SprinklerValve => EPropType.SprinklerValve,
EEditorTool.RemedySupply => EPropType.RemedySupply,
EEditorTool.ReactorControl => EPropType.ReactorControl,
_ => EPropType.None
@@ -1192,6 +1198,9 @@ public sealed partial class MainWindow
EPropType.Junction => "prop-junction",
EPropType.Door => "prop-door",
EPropType.AllSeeingEyeTerminal => "prop-eye-terminal",
EPropType.IsolationValve => "prop-isolation-valve",
EPropType.SprinklerControl => "prop-sprinkler-control",
EPropType.SprinklerValve => "prop-sprinkler-valve",
EPropType.RemedySupply => "prop-remedy",
EPropType.ReactorControl => "prop-reactor",
_ => "prop"
@@ -1231,6 +1240,9 @@ public sealed partial class MainWindow
EPropType.Junction => $"J {prop.JunctionMode}",
EPropType.Door => "DOOR",
EPropType.AllSeeingEyeTerminal => "EYE",
EPropType.IsolationValve => prop.IsOpen ? "V OPEN" : "V CLOSED",
EPropType.SprinklerControl => prop.IsEnabled ? "SPR ON" : "SPR OFF",
EPropType.SprinklerValve => "SPR",
EPropType.RemedySupply => RemedyShort(prop.RemedyType),
EPropType.ReactorControl => "REACT",
_ => string.Empty
@@ -1300,10 +1312,15 @@ public sealed partial class MainWindow
CarrierTool(EEditorTool.Flow, ECarrierType.Fuel, "Fuel Source"),
CarrierTool(EEditorTool.Flow, ECarrierType.Water, "Water Source"),
CarrierTool(EEditorTool.Flow, ECarrierType.Electricity, "Electric Source"),
CarrierTool(EEditorTool.IsolationValve, ECarrierType.Fuel, "Fuel Valve"),
CarrierTool(EEditorTool.IsolationValve, ECarrierType.Water, "Water Valve"),
CarrierTool(EEditorTool.IsolationValve, ECarrierType.Electricity, "Electric Valve"),
Tool(EEditorTool.Consumer, "Consumer"),
Tool(EEditorTool.Junction, "Junction"),
Tool(EEditorTool.Door, "Door"),
Tool(EEditorTool.AllSeeingEyeTerminal, "Eye Terminal"),
Tool(EEditorTool.SprinklerControl, "Sprinkler Control"),
Tool(EEditorTool.SprinklerValve, "Sprinkler Valve"),
RemedyTool(ERemedyType.FuelNeutralizer, "Fuel Remedy"),
RemedyTool(ERemedyType.WaterNeutralizer, "Water Remedy"),
RemedyTool(ERemedyType.ElectricityNeutralizer, "Electric Remedy"),
@@ -1333,6 +1350,9 @@ public sealed partial class MainWindow
or EEditorTool.Junction
or EEditorTool.Door
or EEditorTool.AllSeeingEyeTerminal
or EEditorTool.IsolationValve
or EEditorTool.SprinklerControl
or EEditorTool.SprinklerValve
or EEditorTool.RemedySupply
or EEditorTool.ReactorControl
or EEditorTool.SurfaceHazard
@@ -1341,7 +1361,7 @@ public sealed partial class MainWindow
}
var activeCarrier = LayerCarrier(m_ActiveLayer);
return command.Carrier == activeCarrier && command.Tool is EEditorTool.Underground or EEditorTool.Flow or EEditorTool.Leak;
return command.Carrier == activeCarrier && command.Tool is EEditorTool.Underground or EEditorTool.Flow or EEditorTool.Leak or EEditorTool.IsolationValve;
}
private void RefreshForecasts()