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);
                }
            }
        }
示例#3
0
        /// <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);
        }
示例#4
0
 public MapRenderer(MapDataContext dataContext) : this(MapRendererConfig.Default(), dataContext)
 {
 }
示例#5
0
 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);
            }
        }