Пример #1
0
        public void StarBuild_SixPointedStarPoints()
        {
            var radii = new[] { 8, 4 };

            var star = new StarBuilder().BuildStar(6, radii[0], radii[1]);

            star.Points.Count.Should().Be(12);

            int   index     = 0;
            float lastAngle = -1;

            foreach (var point in star.Points)
            {
                var radius = point.Length();
                var angle  = point.Angle();
                if (angle < 0)
                {
                    angle += MathF.PI * 2;
                }

                radius.Should().BeApproximately(radii[index % 2], 1e-8f);
                angle.Should().BeGreaterThan(lastAngle,
                                             $"Expected new angle to be larger but instead lastAngle = {lastAngle} and angle = {angle}");

                lastAngle = angle;

                index++;
            }
        }
Пример #2
0
        public Shape(ShapeType shapeType, Color color, Rectangle bounds)
        {
            FigureType = shapeType;
            Color      = color;

            switch (shapeType)
            {
            case ShapeType.DrawRect:
            case ShapeType.FillRect:
            case ShapeType.DrawLine:
                Points = bounds.ToPolygon();
                break;

            case ShapeType.FillEllipse:
            case ShapeType.DrawEllipse:
                Points = new EllipseBuilder().BuildEllipse(bounds);
                break;

            case ShapeType.DrawPolygon:
            case ShapeType.FillPolygon:
                Random rnd        = new Random();
                var    pointCount = rnd.Next(3, 13);
                var    size       = bounds.Width / 2;
                var    innerSize  = size * (0.2 + rnd.NextDouble() * 0.5);
                var    angle      = rnd.NextDouble() * 2 * Math.PI;

                Points = new StarBuilder().BuildStar(pointCount, size, innerSize, bounds.CenterPoint, angle);
                break;
            }
        }
Пример #3
0
    void InstantiateStar(string name, string hexcolor, float rightAscension, float declination, double mag)
    {
        GameObject  star = Instantiate(StarTemplate, this.transform, false);
        StarBuilder sb   = star.GetComponent <StarBuilder>();

        sb.color     = hexcolor;
        sb.magnitude = mag;
        star.name    = name;
        star.transform.Rotate(new Vector3(0, rightAscension, declination));
    }
Пример #4
0
        public void StarBuild_SixPointedStarCenter()
        {
            var center = new Vector2(10, 12);

            var star = new StarBuilder().BuildStar(6, 8, 4, center, 1);

            star.Points.Count.Should().Be(12);

            var avg = star.Points.Average();

            Vector2X.Equals(center, avg, 1e-6f).Should().BeTrue($"Expected {center}, actual {avg}");
        }
        protected Galaxy(Configuration configuration)
        {
            Galaxy.Instance = this;
            this.IsValid = true;

            this.builderList = new List<Builder>();

            StarBuilder starBuilder = new StarBuilder();
            ConstellationBuilder constellationsBuilder = new ConstellationBuilder();
            WarpBuilder warpBuilder = new WarpBuilder();
            SpawnBuilder spawnBuilder = new SpawnBuilder();
            PlanetBuilder planetBuilder = new PlanetBuilder();
            HomeBuilder homeBuilder = new HomeBuilder();
            StrategicResourceBuilder strategicResourceBuilder = new StrategicResourceBuilder();
            LuxuryResourceBuilder luxuryResourceBuilder = new LuxuryResourceBuilder();

            this.builderList.Add(starBuilder);
            this.builderList.Add(constellationsBuilder);
            this.builderList.Add(warpBuilder);
            this.builderList.Add(spawnBuilder);
            this.builderList.Add(planetBuilder);
            this.builderList.Add(homeBuilder);
            this.builderList.Add(strategicResourceBuilder);
            this.builderList.Add(luxuryResourceBuilder);

            this.Configuration = configuration;

            this.Stars = new List<StarSystem>();
            this.Warps = new List<WarpLine>();
            this.Constellations = new List<Constellation>();
            this.Regions = new List<Region>();
            this.SpawnStars = new List<StarSystem>();
            //this.Planets = new List<Planet>();

            foreach (Builder builder in this.builderList)
            {
                if (this.IsValid)
                {
                    builder.Execute();
                    this.IsValid = this.IsValid && builder.Result;
                }
            }
            if (this.IsValid)
            {
                this.IsValid = Balancing.Balancing.isBalanced();
            }

            if (!this.IsValid)
            {
                System.Diagnostics.Trace.WriteLine("--Galaxy generation failed--");
                System.Diagnostics.Trace.WriteLine("--Generation defects summary--");
                foreach (Builder b in this.builderList)
                {
                    foreach (string text in b.Defects)
                    {
                        System.Diagnostics.Trace.WriteLine(b.Name + " -> " + text);
                    }
                }
                System.Diagnostics.Trace.WriteLine("--Generation defects end--");
            }
        }