using DominionBase; using DominionBase.Enums; using DominionBase.Piles; using System.Collections.Generic; using System.Linq; using System.Windows; using System.Windows.Controls; using System.Windows.Input; namespace Dominion.NET_WPF { /// /// Interaction logic for wCardSelection.xaml /// public partial class WCardSelection : Window { public WCardSelection() { InitializeComponent(); } private void Window_Loaded(object sender, RoutedEventArgs e) { if (!(Owner is WMain main)) return; wpGeneralCards.Visibility = System.Windows.Visibility.Collapsed; wpLandscapes.Visibility = System.Windows.Visibility.Collapsed; //IEnumerable items = main.Game.Table.TableEntities.Values; IEnumerable items = WMain.Game.Table.TableEntities.Values; //var supplies = items.OfType().Where(s => s.Randomizer.Location == Location.Kingdom || s.Randomizer.Source != Source.All).Union(main.Game.Table.SpecialPiles.Values.OfType().Where(s => s.Randomizer.Location == Location.Kingdom || s.Randomizer.Source != Source.All)); var supplies = items.OfType().Where(s => s.Randomizer.Location == Location.Kingdom || s.Randomizer.Source != Source.All).Union(WMain.Game.Table.SpecialPiles.Values.OfType().Where(s => s.Randomizer.Location == Location.Kingdom || s.Randomizer.Source != Source.All)); var supplyGroups = supplies.GroupBy(s => s.Randomizer.Location == Location.General || s.Randomizer.Location == Location.Invisible || s.Randomizer.Location == Location.Special); foreach (var supplyGroup in supplyGroups) { if (supplyGroup.Key) { cccGeneralCards.TokenDict = supplyGroup.ToDictionary(s => s.Randomizer, s => s.Tokens); cccGeneralCards.Pile = supplyGroup.Select(s => s.Randomizer); wpGeneralCards.Visibility = System.Windows.Visibility.Visible; } else { cccKingdomCards.TokenDict = supplyGroup.ToDictionary(s => s.Randomizer, s => s.Tokens); cccKingdomCards.Pile = supplyGroup.Select(s => s.Randomizer); } } IEnumerable landscapes = items.Where(i => i.Orientation == DominionBase.Enums.Orientation.Landscape).OrderBy(i => i.Name); cccLandscapes.Pile = landscapes; if (landscapes.Any()) wpLandscapes.Visibility = System.Windows.Visibility.Visible; } private void BReshuffle_Click(object sender, RoutedEventArgs e) { if (!(Owner is WMain main)) return; //main.Game.SelectCards(); WMain.Game.SelectCards(); Window_Loaded(this, null); } private void BAccept_Click(object sender, RoutedEventArgs e) { DialogResult = true; Close(); } private void SvSetCategoryGroupDisplay_ScrollChanged(object sender, ScrollChangedEventArgs e) { var sv = sender as ScrollViewer; bSetCategoryGroupDisplayHorizontal.Width = sv.ViewportWidth * sv.ViewportWidth / sv.ExtentWidth; bSetCategoryGroupDisplayVertical.Height = sv.ViewportHeight * sv.ViewportHeight / sv.ExtentHeight; bSetCategoryGroupDisplayHorizontal.Margin = new Thickness(sv.ViewportWidth * sv.HorizontalOffset / sv.ExtentWidth, 0, 0, 0); bSetCategoryGroupDisplayVertical.Margin = new Thickness(0, sv.ViewportHeight * sv.VerticalOffset / sv.ExtentHeight, 0, 0); bOpacityLayerLeft.Visibility = bOpacityLayerRight.Visibility = System.Windows.Visibility.Visible; if (bSetCategoryGroupDisplayHorizontal.Width >= sv.ViewportWidth) bOpacityLayerLeft.Visibility = bOpacityLayerRight.Visibility = System.Windows.Visibility.Collapsed; else if (bSetCategoryGroupDisplayHorizontal.Margin.Left <= 0) bOpacityLayerLeft.Visibility = System.Windows.Visibility.Collapsed; else if (bSetCategoryGroupDisplayHorizontal.Margin.Left + bSetCategoryGroupDisplayHorizontal.Width >= sv.ViewportWidth) bOpacityLayerRight.Visibility = System.Windows.Visibility.Collapsed; bOpacityLayerTop.Visibility = bOpacityLayerBottom.Visibility = System.Windows.Visibility.Visible; if (bSetCategoryGroupDisplayVertical.Height >= sv.ViewportHeight) bOpacityLayerTop.Visibility = bOpacityLayerBottom.Visibility = System.Windows.Visibility.Collapsed; else if (bSetCategoryGroupDisplayVertical.Margin.Top <= 0) bOpacityLayerTop.Visibility = System.Windows.Visibility.Collapsed; else if (bSetCategoryGroupDisplayVertical.Margin.Top + bSetCategoryGroupDisplayVertical.Height >= sv.ViewportHeight) bOpacityLayerBottom.Visibility = System.Windows.Visibility.Collapsed; } private void Grid_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { var g = (Grid)sender; g.CaptureMouse(); g.Cursor = Cursors.ScrollNS; svSetCategoryGroupDisplay.ScrollToVerticalOffset(e.GetPosition(g).Y / g.ActualHeight * svSetCategoryGroupDisplay.ExtentHeight); } private void Grid_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) { var g = (Grid)sender; g.ReleaseMouseCapture(); g.Cursor = Cursors.Arrow; } private void Grid_MouseMove(object sender, MouseEventArgs e) { var g = (Grid)sender; if (g.IsMouseCaptured) svSetCategoryGroupDisplay.ScrollToVerticalOffset(e.GetPosition(g).Y / g.ActualHeight * svSetCategoryGroupDisplay.ExtentHeight); } private void Grid_MouseLeftButtonDown_1(object sender, MouseButtonEventArgs e) { var g = (Grid)sender; g.CaptureMouse(); g.Cursor = Cursors.ScrollWE; svSetCategoryGroupDisplay.ScrollToHorizontalOffset(e.GetPosition(g).X / g.ActualWidth * svSetCategoryGroupDisplay.ExtentWidth); } private void Grid_MouseMove_1(object sender, MouseEventArgs e) { var g = (Grid)sender; if (g.IsMouseCaptured) svSetCategoryGroupDisplay.ScrollToHorizontalOffset(e.GetPosition(g).X / g.ActualWidth * svSetCategoryGroupDisplay.ExtentWidth); } } }