public void Render(SKCanvas canvas, MapDataContext mapDataContext) { using (var paint = new SKPaint()) { paint.Style = SKPaintStyle.StrokeAndFill; paint.IsAntialias = true; foreach (var solarSystem in mapDataContext.SolarSystems) { if (solarSystem.allianceID != null && solarSystem.allianceID != 0) { var md5 = MD5.Create(); var hash = md5.ComputeHash(Encoding.UTF8.GetBytes(solarSystem.allianceID.ToString())); paint.Color = new SKColor(hash[0], hash[1], hash[2]); canvas.DrawOval(MapRenderUtils.EveCartesianToScreenPoint(solarSystem.x, solarSystem.z), new SKSize(2.0f, 1.0f), paint); } else { paint.Color = new SKColor(0xB0, 0xB0, 0xFF); canvas.DrawOval(MapRenderUtils.EveCartesianToScreenPoint(solarSystem.x, solarSystem.z), new SKSize(1.0f, 0.5f), paint); } // paint.Color = new SKColor(randomBytes[0], randomBytes[1], randomBytes[2]); } canvas.DrawLine(new SKPoint(0.0f, 0.0f), new SKPoint(100.0f, 100.0f), paint); } }
public void Render(SKCanvas canvas, MapDataContext mapDataContext) { using (var paint = new SKPaint()) { paint.Style = SKPaintStyle.Stroke; paint.Color = new SKColor(0xB0, 0xB0, 0xFF, 0x1E); paint.IsAntialias = true; foreach (var solarSystemJump in mapDataContext.SolarSystemJumps) { var fromSolarSystem = mapDataContext.SolarSystems.First(x => x.solarSystemID == solarSystemJump.fromSolarSystemID); var toSolarSystem = mapDataContext.SolarSystems.First(x => x.solarSystemID == solarSystemJump.toSolarSystemID); if (solarSystemJump.IsRegionalJump) { paint.Color = SKColors.LightPink.WithAlpha(0x1E); } else if (solarSystemJump.IsConstellationJump) { paint.Color = SKColors.Red.WithAlpha(0x1E); } else { paint.Color = SKColors.Blue.WithAlpha(0x1E); } canvas.DrawLine(MapRenderUtils.EveCartesianToScreenPoint(fromSolarSystem.x, fromSolarSystem.z), MapRenderUtils.EveCartesianToScreenPoint(toSolarSystem.x, toSolarSystem.z), paint); } } }
/// <summary> /// Gets all the parents of the given <paramref name="context"/>. /// </summary> /// <param name="context">The context to get the parents for.</param> /// <returns>A collection of <see cref="MapDataCollection"/>.</returns> /// <exception cref="ArgumentNullException">Thrown when <paramref name="context"/> /// is <c>null</c>.</exception> public static IEnumerable <MapDataCollection> GetParentsFromContext(MapDataContext context) { if (context == null) { throw new ArgumentNullException(nameof(context)); } var parents = new List <MapDataCollection>(); if (context.ParentMapData != null) { parents.Add((MapDataCollection)context.ParentMapData.WrappedData); parents.AddRange(GetParentsFromContext(context.ParentMapData)); } return(parents); }
public MapRenderer(MapDataContext dataContext) : this(MapRendererConfig.Default(), dataContext) { }
public MapRenderer(MapRendererConfig config, MapDataContext dataContext) { _config = config; _dataContext = dataContext; }
public void Render(SKCanvas canvas, MapDataContext mapDataContext) { var solarSystemVertexes = new List <SolarSystemVertex>(); foreach (var solarSystem in mapDataContext.SolarSystems) { solarSystemVertexes.Add(new SolarSystemVertex(solarSystem)); } var voronoiMesh = VoronoiMesh.Create <SolarSystemVertex, SolarySystemTriangulationCell>(solarSystemVertexes); var voronoiCells = CreateVoronoiCells(voronoiMesh); using (var paint = new SKPaint()) { paint.Style = SKPaintStyle.Fill; paint.IsAntialias = true; foreach (var cell in voronoiCells) { var solarSystem = cell.SolarSystemVertex.SolarSystem; var cellVertices = cell.SolarSystemVoronoiEdges; var points = SortVertices(cellVertices.SelectMany(x => new List <SKPoint>() { x.PointOne, x.PointTwo }).Distinct().ToList()).ToArray(); if (solarSystem.allianceID != null && solarSystem.allianceID != 0) { var md5 = MD5.Create(); var hash = md5.ComputeHash(Encoding.UTF8.GetBytes(solarSystem.allianceID.ToString())); paint.Color = new SKColor(hash[0], hash[1], hash[2]).WithAlpha(60); var path = new SKPath(); // for (var i = 0; i < cellVertices.Count(); i++) // { // path.MoveTo(cellVertices[i].PointOne); // path.LineTo(cellVertices[i].PointTwo); // } path.MoveTo(points.First()); for (var i = 0; i < points.Count(); i++) { path.LineTo(points[i]); } path.LineTo(points.First()); canvas.DrawPath(path, paint); // canvas.DrawPoints(SKPointMode.Polygon, points, paint); } else { paint.Color = new SKColor(0xB0, 0xB0, 0xFF).WithAlpha(50); var path = new SKPath(); for (var i = 0; i < cellVertices.Count(); i++) { path.MoveTo(cellVertices[i].PointOne); path.LineTo(cellVertices[i].PointTwo); } // canvas.DrawPath(path, paint); } // paint.Color = new SKColor(randomBytes[0], randomBytes[1], randomBytes[2]); } canvas.DrawLine(new SKPoint(0.0f, 0.0f), new SKPoint(100.0f, 100.0f), paint); } }