public void GalaxyUpdated() { //if (WarningList != null) { // WarningList.ItemsSource = galaxy.GetWarnings().Select(w => new ListBoxItem {IsEnabled = false, Content = w}).ToArray(); //} if (WarningList == null) { return; } WarningList.Items.Clear(); var planetCounts = PlanetDrawings.ToDictionary(p => p, p => 0); foreach (var l in LinkDrawings) { planetCounts[l.Planet1]++; planetCounts[l.Planet2]++; } if (MapCount < PlanetCount) { WarningList.Items.Add(new ListBoxItem { Background = Brushes.Red, Content = String.Format("More planets than maps ({0} > {1})", PlanetCount, MapCount) }); } foreach (var kvp in planetCounts) { if (kvp.Value == 0) { var item = new ListBoxItem { Background = Brushes.Red, Content = (kvp.Key.PlanetName ?? "Planet") + " has no link" }; WarningList.Items.Add(item); var planet = kvp.Key; item.MouseUp += (s, e) => planet.Grow(); } else if (kvp.Value == 2) { var item = new ListBoxItem { Content = (kvp.Key.PlanetName ?? "Planet") + " has only two links" }; var planet = kvp.Key; item.MouseUp += (s, e) => planet.Grow(); WarningList.Items.Add(item); } } WarningList.Items.Refresh(); PropertyChanged(this, new PropertyChangedEventArgs("PlanetCount")); }
public Galaxy ToGalaxy() { var gal = new Galaxy(); int id = 0; var planetIDs = PlanetDrawings.ToDictionary( d => d, d => { var temp = id++; return(temp); }); gal.Planets = PlanetDrawings.Select( d => new Planet(planetIDs[d], (float)(Canvas.GetLeft(d) / imageSource.Width), (float)(Canvas.GetTop(d) / imageSource.Height))).ToList(); gal.Links = LinkDrawings.Select(d => new Link(planetIDs[d.Planet1], planetIDs[d.Planet2])).ToList(); gal.MapNames = ToLines(MapNames).ToList(); return(gal); }
public void GalaxyUpdated() { //if (WarningList != null) { // WarningList.ItemsSource = galaxy.GetWarnings().Select(w => new ListBoxItem {IsEnabled = false, Content = w}).ToArray(); //} if (WarningList == null) { return; } WarningList.Items.Clear(); var planetCounts = PlanetDrawings.ToDictionary(p => p, p => 0); foreach (var l in LinkDrawings) { planetCounts[l.Planet1]++; planetCounts[l.Planet2]++; } if (MapCount < PlanetCount) { WarningList.Items.Add(new ListBoxItem { Background = Brushes.Red, Content = String.Format("More planets than maps ({0} > {1})", PlanetCount, MapCount) }); } foreach (var kvp in planetCounts) { if (kvp.Value == 0) { var item = new ListBoxItem { Background = Brushes.Red, Content = (kvp.Key.Planet.Name ?? "Planet") + " has no link" }; WarningList.Items.Add(item); var planet = kvp.Key; item.MouseUp += (s, e) => planet.Grow(); } } foreach (var dupMap in PlanetDrawings.GroupBy(x => x.Planet.MapResourceID).Where(x => x.Count() > 1)) { var p = dupMap.First(); ListBoxItem item; if (p.Planet.MapResourceID == null) { item = new ListBoxItem { Background = Brushes.Red, Content = string.Format("{0} has no map", (p.Planet.Name ?? "Planet")) } } ; else if (p.Planet.Resource == null) { item = new ListBoxItem { Background = Brushes.Red, Content = string.Format("{0} has duplicate map", (p.Planet.Name ?? "Planet")) } } ; else { item = new ListBoxItem { Background = Brushes.Red, Content = string.Format("{0} has duplicate map ({1})", (p.Planet.Name ?? "Planet"), p.Planet.Resource.InternalName) } }; var planet = p; item.MouseUp += (s, e) => planet.Grow(); WarningList.Items.Add(item); } foreach (var p in PlanetDrawings.Where(x => x.Planet.PlanetStructures == null || !x.Planet.PlanetStructures.Any())) { var item = new ListBoxItem { Content = (p.Planet.Name ?? "Planet") + " has no structures" }; var planet = p; item.MouseUp += (s, e) => planet.Grow(); WarningList.Items.Add(item); } WarningList.Items.Refresh(); PropertyChanged(this, new PropertyChangedEventArgs("PlanetCount")); PropertyChanged(this, new PropertyChangedEventArgs("MapCount")); }