private void LoadChampionships() { for (int i = 3; i <= xlWorkbook.Sheets.Count; i++) { Championship c = new Championship(i, xlWorkbook.Sheets[i], AllDrivers); Championships.Add(c); } if (currentChampionship == -1) { currentChampionship = Championships.Count - 1; btnNextChampionship.IsEnabled = false; } if (Championships[currentChampionship].State == ChampionshipState.Completed) { btnStartRace.IsEnabled = false; } ReloadChampionshipContainer(); }
private void btnStartCustomRace_Click(object sender, RoutedEventArgs e) { Format format = Format.Formats.First(x => x.Id == CustomRaceFormatSelector.SelectedIndex); if (CustomSelectedDrivers.Count >= format.MinDrivers && CustomSelectedDrivers.Count <= format.MaxDrivers) { Label CustomCSLabel = new Label { VerticalAlignment = VerticalAlignment.Center }; CustomRaceLeftGrid.Children.Clear(); CustomRaceLeftGrid.RowDefinitions.Clear(); CustomRaceRightGrid.Children.Clear(); CustomRaceRightGrid.RowDefinitions.Clear(); Championship cs = new Championship(CustomSelectedDrivers, format, CustomRaceLeftGrid, CustomRaceRightGrid, CustomCSLabel); CustomCSHeader.Children.Clear(); CustomCSHeader.ColumnDefinitions.Clear(); CustomCSHeader.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); CustomCSHeader.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); CustomCSHeader.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); CustomCSHeader.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); CustomCSHeader.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); CustomCSHeader.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); CustomCSHeader.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); Button CustomCSStartRace = new Button { Content = "Start Race" }; Button CustomCSNextDriver = new Button { Content = "Next Driver" }; Button CustomCSFinishRace = new Button { Content = "Finish Race" }; Button CustomCSFinishCS = new Button { Content = "Finish Championship" }; Button CustomCSEndRace = new Button { Content = "End Race" }; Button CustomCSBackToDriverSelection = new Button { Content = "Back" }; CustomCSLabel.SetValue(Grid.ColumnProperty, 0); CustomCSStartRace.SetValue(Grid.ColumnProperty, 1); CustomCSStartRace.Click += (sender2, e2) => { cs.StartRace(); CustomCSStartRace.IsEnabled = false; CustomCSNextDriver.IsEnabled = true; CustomCSFinishRace.IsEnabled = true; }; CustomCSNextDriver.SetValue(Grid.ColumnProperty, 2); CustomCSNextDriver.Click += (sender2, e2) => { if (!cs.NextDriver()) { CustomCSNextDriver.IsEnabled = false; CustomCSFinishRace.IsEnabled = false; CustomCSEndRace.IsEnabled = true; } ; }; CustomCSNextDriver.IsEnabled = false; CustomCSEndRace.SetValue(Grid.ColumnProperty, 3); CustomCSEndRace.Click += (sender2, e2) => { cs.EndRace(true); cs.SaveRatingsToExcel(true); CustomCSEndRace.IsEnabled = false; if (!cs.Format.IsFinished(cs)) { CustomCSStartRace.IsEnabled = true; } ResetData(); }; CustomCSEndRace.IsEnabled = false; CustomCSFinishRace.SetValue(Grid.ColumnProperty, 4); CustomCSFinishRace.Click += (sender2, e2) => { while (cs.NextDriver()) { ; } CustomCSFinishRace.IsEnabled = false; CustomCSNextDriver.IsEnabled = false; CustomCSEndRace.IsEnabled = true; }; CustomCSFinishRace.IsEnabled = false; CustomCSFinishCS.SetValue(Grid.ColumnProperty, 5); CustomCSFinishCS.Click += (sender2, e2) => { while (!cs.Format.IsFinished(cs)) { cs.StartRace(); while (cs.NextDriver()) { ; } cs.EndRace(true); } cs.SaveRatingsToExcel(true); ResetData(); CustomCSFinishCS.IsEnabled = false; CustomCSStartRace.IsEnabled = false; CustomCSFinishRace.IsEnabled = false; CustomCSEndRace.IsEnabled = false; CustomCSNextDriver.IsEnabled = false; }; CustomCSBackToDriverSelection.SetValue(Grid.ColumnProperty, 6); CustomCSBackToDriverSelection.Click += (sender2, e2) => { CustomCSHeader.Children.Clear(); foreach (UIElement elem in CustomCSHeaderOriginalButtons) { CustomCSHeader.Children.Add(elem); } CustomSelectedDrivers.Clear(); ReloadDriverSelection(); }; CustomCSHeader.Children.Add(CustomCSLabel); CustomCSHeader.Children.Add(CustomCSStartRace); CustomCSHeader.Children.Add(CustomCSNextDriver); CustomCSHeader.Children.Add(CustomCSEndRace); CustomCSHeader.Children.Add(CustomCSFinishRace); CustomCSHeader.Children.Add(CustomCSFinishCS); CustomCSHeader.Children.Add(CustomCSBackToDriverSelection); } else { Console.WriteLine("Too many or too few drivers selected."); } }
public DriverPanel(Driver driver, bool showChampionships) { Driver = driver; Height = 40; ColumnDefinitions.Add(new ColumnDefinition { Width = new System.Windows.GridLength(50, GridUnitType.Pixel) }); ColumnDefinitions.Add(new ColumnDefinition { Width = new System.Windows.GridLength(180, GridUnitType.Pixel) }); ColumnDefinitions.Add(new ColumnDefinition { Width = new System.Windows.GridLength(70, GridUnitType.Pixel) }); ColumnDefinitions.Add(new ColumnDefinition { Width = new System.Windows.GridLength(50, GridUnitType.Pixel) }); ColumnDefinitions.Add(new ColumnDefinition { Width = new System.Windows.GridLength(50, GridUnitType.Pixel) }); if (showChampionships) { int colCounter = 5; if (driver.Championships.Where(c => c.State == ChampionshipState.Open || c.State == ChampionshipState.Running).Count() == 0) { Championship cs = driver.Championships.Last(); ColumnDefinitions.Add(new ColumnDefinition { Width = new System.Windows.GridLength(40, GridUnitType.Pixel) }); Image csImage = new Image { Source = new BitmapImage(new Uri("C:\\Microsoft\\conquest\\RaceSimulator\\res\\icons\\" + cs.Icon + ".png")), Height = 32, VerticalAlignment = VerticalAlignment.Center }; csImage.SetValue(Grid.ColumnProperty, colCounter++); Children.Add(csImage); int rank = cs.Drivers.OrderByDescending(d => d.SeasonPoints).ToList().IndexOf(driver); if (rank < cs.Format.NumGreen) { ColumnDefinitions.Add(new ColumnDefinition { Width = new System.Windows.GridLength(40, GridUnitType.Pixel) }); Image promImage = new Image { Source = new BitmapImage(new Uri("C:\\Microsoft\\conquest\\RaceSimulator\\res\\icons\\promotion.png")), Height = 20, VerticalAlignment = VerticalAlignment.Center }; promImage.SetValue(Grid.ColumnProperty, colCounter - 1); Children.Add(promImage); } else if (rank >= cs.Drivers.Count - cs.Format.NumRed) { ColumnDefinitions.Add(new ColumnDefinition { Width = new System.Windows.GridLength(40, GridUnitType.Pixel) }); Image relImage = new Image { Source = new BitmapImage(new Uri("C:\\Microsoft\\conquest\\RaceSimulator\\res\\icons\\relegation.png")), Height = 20, VerticalAlignment = VerticalAlignment.Center }; relImage.SetValue(Grid.ColumnProperty, colCounter - 1); Children.Add(relImage); } } else { foreach (Championship cs in driver.Championships.Where(c => c.State == ChampionshipState.Open || c.State == ChampionshipState.Running)) { ColumnDefinitions.Add(new ColumnDefinition { Width = new System.Windows.GridLength(40, GridUnitType.Pixel) }); Image csImage = new Image { Source = new BitmapImage(new Uri("C:\\Microsoft\\conquest\\RaceSimulator\\res\\icons\\" + cs.Icon + ".png")), Height = 32 }; csImage.SetValue(Grid.ColumnProperty, colCounter++); Children.Add(csImage); } } } RankLabel = new Label { VerticalAlignment = VerticalAlignment.Center }; RankLabel.SetValue(Grid.ColumnProperty, 0); NameLabel = new Label { Content = driver.Name, VerticalAlignment = VerticalAlignment.Center }; NameLabel.SetValue(Grid.ColumnProperty, 1); CountryImage = new Image { Source = new BitmapImage(new Uri("C:\\Microsoft\\conquest\\RaceSimulator\\res\\countries\\" + driver.Country.Name + ".png")), Height = 35, VerticalAlignment = VerticalAlignment.Center }; CountryImage.SetValue(Grid.ColumnProperty, 2); RatingLabel = new Label { VerticalAlignment = VerticalAlignment.Center }; RatingLabel.SetValue(Grid.ColumnProperty, 3); RatingChangeLabel = new Label { VerticalAlignment = VerticalAlignment.Center }; RatingChangeLabel.SetValue(Grid.ColumnProperty, 4); Children.Add(RankLabel); Children.Add(NameLabel); Children.Add(CountryImage); Children.Add(RatingLabel); Children.Add(RatingChangeLabel); }