Add valve open/close logic
This commit is contained in:
@@ -10,7 +10,8 @@ namespace PamhagenSysCtrl.Helpers.Pipeline {
|
||||
|
||||
public double CenterX { get; set; }
|
||||
public double CenterY { get; set; }
|
||||
public string Label { get; set; }
|
||||
public int Nr { get; set; }
|
||||
public string Label => $"V{Nr}";
|
||||
public Brush? Highlight { get; set; }
|
||||
|
||||
public bool IsLocked { get; set; }
|
||||
@@ -25,10 +26,10 @@ namespace PamhagenSysCtrl.Helpers.Pipeline {
|
||||
private Shape? _circle;
|
||||
private TextBlock? _text;
|
||||
|
||||
public Valve(string label, double x, double y, Func<bool> cbOpen, Func<bool> cbWant) {
|
||||
public Valve(int nr, double x, double y, Func<bool> cbOpen, Func<bool> cbWant) {
|
||||
CenterX = x;
|
||||
CenterY = y;
|
||||
Label = label;
|
||||
Nr = nr;
|
||||
CallbackIsOpen = cbOpen;
|
||||
CallbackWantOpen = cbWant;
|
||||
Inputs = new HashSet<IEdge>();
|
||||
@@ -61,7 +62,12 @@ namespace PamhagenSysCtrl.Helpers.Pipeline {
|
||||
|
||||
public bool Update(double x, double y, bool down) {
|
||||
var hover = Math.Sqrt(Math.Pow(CenterX - x, 2) + Math.Pow(CenterY - y, 2)) <= DIAMETER / 2;
|
||||
_circle?.Fill = IsLocked ? Brushes.Orange : Highlight ?? (hover ? Brushes.LightGray : Brushes.DarkGray);
|
||||
_circle?.Fill =
|
||||
IsLocked && !WantOpen && !IsOpen ? Brushes.Orange :
|
||||
IsLocked && !WantOpen && IsOpen ? Brushes.Red :
|
||||
IsLocked && WantOpen && !IsOpen ? Brushes.Yellow :
|
||||
IsLocked && WantOpen && IsOpen ? Brushes.Green :
|
||||
Highlight ?? (hover ? Brushes.LightGray : Brushes.DarkGray);
|
||||
return hover;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user