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++; } }
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; } }
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)); }
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--"); } }