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);
}
}
}