public void Clear() { LinkDrawings.Clear(); PlanetDrawings.Clear(); canvas.Children.Clear(); GalaxyUpdated(); }
public void RemovePlanet(PlanetDrawing planet) { var links = LinkDrawings.FindAll(l => l.Planet1 == planet || l.Planet2 == planet); links.ForEach(l => LinkDrawings.Remove(l)); links.ForEach(canvas.Children.Remove); PlanetDrawings.Remove(planet); canvas.Children.Remove(planet); GalaxyUpdated(); }
public void AddLink(PlanetDrawing planet1, PlanetDrawing planet2) { if (planet1 == planet2 && LinkDrawings.Any(l => (l.Planet1 == planet1 && l.Planet2 == planet2) || (l.Planet2 == planet1 && l.Planet1 == planet2))) { return; } var d = new LinkDrawing(planet1, planet2); LinkDrawings.Add(d); canvas.Children.Add(d); Panel.SetZIndex(d, 2); GalaxyUpdated(); }
public void Clear() { if (LinkDrawings != null) { LinkDrawings.Clear(); } if (PlanetDrawings != null) { PlanetDrawings.Clear(); } canvas.Children.Clear(); GalaxyUpdated(); }
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 SaveGalaxy(int galaxyNumber) { // using (var scope = new TransactionScope()) { try { var db = new ZkDataContext(); var gal = db.Galaxies.SingleOrDefault(x => x.GalaxyID == galaxyNumber); if (gal == null || galaxyNumber == 0) { gal = new Galaxy(); db.Galaxies.InsertOnSubmit(gal); } else if (gal.Started != null) { MessageBox.Show("This galaxy is running, cannot edit it!"); return; } else { db.Links.DeleteAllOnSubmit(gal.Links); db.Planets.DeleteAllOnSubmit(gal.Planets); } gal.IsDirty = true; db.SaveChanges(); galaxyNumber = gal.GalaxyID; var maps = Maps.Shuffle(); var cnt = 0; foreach (var d in PlanetDrawings) { var memPlanet = d.Planet; var p = new Planet(); db.Planets.Add(p); p.Name = memPlanet.Name; p.GalaxyID = galaxyNumber; p.OwnerAccountID = memPlanet.OwnerAccountID; p.X = (float)(Canvas.GetLeft(d) / imageSource.Width); p.Y = (float)(Canvas.GetTop(d) / imageSource.Height); if (memPlanet.MapResourceID == null) { p.MapResourceID = maps[cnt].ResourceID; cnt++; cnt = cnt % maps.Count; } else { p.MapResourceID = memPlanet.MapResourceID; } p.PlanetStructures.Clear(); p.PlanetStructures.AddRange(memPlanet.PlanetStructures.Select(x => new PlanetStructure() { StructureTypeID = x.StructureTypeID })); } db.SaveChanges(); var linkList = LinkDrawings.Select( d => new Link() { GalaxyID = galaxyNumber, PlanetID1 = db.Planets.Single(x => x.GalaxyID == galaxyNumber && x.Name == d.Planet1.Planet.Name).PlanetID, PlanetID2 = db.Planets.Single(x => x.GalaxyID == galaxyNumber && x.Name == d.Planet2.Planet.Name).PlanetID }); db.Links.InsertAllOnSubmit(linkList); db.SaveChanges(); // scope.Complete(); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } MessageBox.Show("Exported!"); } }
public void RemoveLink(LinkDrawing link) { LinkDrawings.Remove(link); canvas.Children.Remove(link); }