using System.Collections.Generic; using System.Linq; using System.Windows.Controls; using System.Windows.Media; namespace Dominion.NET_WPF.Controls.GameLog { /// /// Interaction logic for ucGameTurn.xaml /// public partial class ucGameTurn : LogSection { public int TurnNumber { get; private set; } public override bool IsExpanded { get { return expTurns.IsExpanded; } set { expTurns.IsExpanded = value; } } public bool IsAnyExpanded { get { return spArea.Children.OfType().Any(pt => pt.IsExpanded); } } public bool IsAllExpanded { get { return spArea.Children.OfType().All(pt => pt.IsExpanded); } set { foreach (var pt in spArea.Children.OfType()) pt.IsExpanded = value; } } public ucGameTurn() { InitializeComponent(); SpContainer = spArea; } public void New(int turnNumber) { TurnNumber = turnNumber; var dp = new DockPanel(); var tbTitle = new TextBlock {Text = $"Turn #{turnNumber}"}; DockPanel.SetDock(tbTitle, Dock.Left); dp.Children.Add(tbTitle); expTurns.Header = dp; } public override void TearDown() { base.TearDown(); foreach (var pt in spArea.Children.OfType()) pt.TearDown(); spArea.Children.Clear(); } public override void End() { var newColor = TurnNumber % 2 == 0 ? Colors.DarkGray : Colors.DimGray; //expTurns.BorderBrush = Brushes.DimGray; lEdge.Stroke = new SolidColorBrush(newColor); var lgb = new LinearGradientBrush(new GradientStopCollection { new GradientStop(newColor, 0.0), new GradientStop(newColor, 0.25), new GradientStop(Colors.Transparent, 1.25) }); lgb.Freeze(); lTop.Stroke = lBottom.Stroke = lgb; } public void Add(ucPlayerTurn element) { spArea.Children.Add(element); } public IEnumerable GetChildren(DominionBase.IPlayer player) { return spArea.Children.OfType().Where(pt => pt.Player.PlayerUniqueId == player.UniqueId); } public ucPlayerTurn GetChild(DominionBase.IPlayer player) { return spArea.Children.OfType().First(pt => pt.Player.PlayerUniqueId == player.UniqueId); } } }