diff --git a/PamhagenSysCtrl/Helpers/Pipeline/EntryTrough.cs b/PamhagenSysCtrl/Helpers/Pipeline/EntryTrough.cs index 5944dfb..4ff5c87 100644 --- a/PamhagenSysCtrl/Helpers/Pipeline/EntryTrough.cs +++ b/PamhagenSysCtrl/Helpers/Pipeline/EntryTrough.cs @@ -8,7 +8,7 @@ namespace PamhagenSysCtrl.Helpers.Pipeline { class EntryTrough : INode { public const double WIDTH = 150; - public const double HEIGHT = 50; + public const double HEIGHT = 60; public double CenterX { get; set; } public double CenterY { get; set; } @@ -100,8 +100,11 @@ namespace PamhagenSysCtrl.Helpers.Pipeline { public void Update(bool isHovering, bool isPressed) { _inner?.Fill = - isHovering && isPressed ? Brushes.DarkGray : - isHovering ? Brushes.LightGray : + IsActive && isHovering && isPressed ? PamhagenBrushes.Red : + IsActive && isHovering ? PamhagenBrushes.Red : + !IsActive && isHovering && isPressed ? PamhagenBrushes.Green : + !IsActive && isHovering ? PamhagenBrushes.Green : + IsActive ? PamhagenBrushes.Green : Brushes.WhiteSmoke; } } diff --git a/PamhagenSysCtrl/Helpers/Pipeline/Press.cs b/PamhagenSysCtrl/Helpers/Pipeline/Press.cs index 22aa93e..ebe45cc 100644 --- a/PamhagenSysCtrl/Helpers/Pipeline/Press.cs +++ b/PamhagenSysCtrl/Helpers/Pipeline/Press.cs @@ -1,6 +1,7 @@ using System.Windows; using System.Windows.Controls; using System.Windows.Media; +using System.Windows.Media.Media3D; using System.Windows.Shapes; namespace PamhagenSysCtrl.Helpers.Pipeline { @@ -23,10 +24,10 @@ namespace PamhagenSysCtrl.Helpers.Pipeline { protected Func CallbackFillState; + private Shape? _frame; private Shape? _circle; private TextBlock? _text; - public Press(string label, double x, double y, int capacityLiters, Func cbFillState) { CenterX = x; CenterY = y; @@ -45,6 +46,17 @@ namespace PamhagenSysCtrl.Helpers.Pipeline { StrokeThickness = 2, Fill = Brushes.WhiteSmoke, }; + _frame = new Polygon() { + Points = [ + new(CenterX - DIAMETER / 2 - 10, CenterY), new(CenterX + DIAMETER / 2 + 10, CenterY), + new(CenterX + DIAMETER / 2 + 10, CenterY + DIAMETER / 2 + 30), new(CenterX + DIAMETER / 2 - 20, CenterY + DIAMETER / 2 + 30), + new(CenterX + DIAMETER / 2 - 20, CenterY + DIAMETER / 2 + 10), new(CenterX - DIAMETER / 2 + 20, CenterY + DIAMETER / 2 + 10), + new(CenterX - DIAMETER / 2 + 20, CenterY + DIAMETER / 2 + 30), new(CenterX - DIAMETER / 2 - 10, CenterY + DIAMETER / 2 + 30) + ], + Stroke = Brushes.Black, + StrokeThickness = 2, + Fill = Brushes.WhiteSmoke, + }; _text = new() { Text = CapacityLiters.HasValue ? $"{Label}\n{CapacityLiters:N0}" : Label, FontSize = 14, @@ -56,20 +68,22 @@ namespace PamhagenSysCtrl.Helpers.Pipeline { _circle.SetValue(Canvas.TopProperty, CenterY - DIAMETER / 2); _text.SetValue(Canvas.LeftProperty, CenterX - DIAMETER / 2); _text.SetValue(Canvas.TopProperty, CenterY - (CapacityLiters.HasValue ? 20 : 10)); + canvas.Children.Add(_frame); canvas.Children.Add(_circle); canvas.Children.Add(_text); } public bool IsInside(double x, double y) { - return Math.Sqrt(Math.Pow(CenterX - x, 2) + Math.Pow(CenterY - y, 2)) <= DIAMETER / 2; + return Math.Sqrt(Math.Pow(CenterX - x, 2) + Math.Pow(CenterY - y, 2)) <= DIAMETER / 2 || (Math.Abs(x - CenterX) <= DIAMETER / 2 + 10 && y >= CenterY && y <= CenterY + DIAMETER / 2 + 30); } public void Update(bool isHovering, bool isPressed) { - _circle?.Fill = PamhagenBrushes.ForFillState(FillState, + var color = isHovering && isPressed ? Brushes.DarkGray : isHovering ? Brushes.LightGray : - Brushes.WhiteSmoke - ); + Brushes.WhiteSmoke; + _circle?.Fill = PamhagenBrushes.ForFillState(FillState, color); + _frame?.Fill = color; } } } diff --git a/PamhagenSysCtrl/Helpers/Pipeline/Rebler.cs b/PamhagenSysCtrl/Helpers/Pipeline/Rebler.cs index f3200d4..433bddd 100644 --- a/PamhagenSysCtrl/Helpers/Pipeline/Rebler.cs +++ b/PamhagenSysCtrl/Helpers/Pipeline/Rebler.cs @@ -1,4 +1,5 @@ -using System.Windows; +using System.Reflection; +using System.Windows; using System.Windows.Controls; using System.Windows.Media; using System.Windows.Shapes; @@ -87,18 +88,16 @@ namespace PamhagenSysCtrl.Helpers.Pipeline { } public void Update(bool isHovering, bool isPressed) { - _rect?.Fill = - isHovering && isPressed ? Brushes.DarkGray : - isHovering ? Brushes.LightGray : - Brushes.WhiteSmoke; - _hopperInner?.Fill = - isHovering && isPressed ? Brushes.DarkGray : - isHovering ? Brushes.LightGray : - Brushes.WhiteSmoke; - _bottomInner?.Fill = - isHovering && isPressed ? Brushes.DarkGray : - isHovering ? Brushes.LightGray : + var color = + IsActive && isHovering && isPressed ? PamhagenBrushes.Red : + IsActive && isHovering ? PamhagenBrushes.Red : + !IsActive && isHovering && isPressed ? PamhagenBrushes.Green : + !IsActive && isHovering ? PamhagenBrushes.Green : + IsActive ? PamhagenBrushes.Green : Brushes.WhiteSmoke; + _rect?.Fill = color; + _hopperInner?.Fill = color; + _bottomInner?.Fill = color; } } }