public static void GenerateStars(GlobalConstants.GalaxySize GalaxySize, GlobalConstants.GalaxyType GalaxyType) { SizeEnum = GalaxySize; GalaxyTypeEnum = GalaxyType; SetGalaxyRadiusAndStarCountByGalazySize(SizeEnum); Engine.Instance.WriteToConsole("Generating galaxy!"); Engine.Instance.WriteToConsole("Galaxy size: " + SizeEnum + "; Galaxy type: " + GalaxyTypeEnum); Engine.Instance.WriteToConsole("Star count: " + StarCount.ToString()); Engine.Instance.WriteToConsole(""); List <Star> arrStars = new List <Star>(); ContinuousUniform StarRadiusGen = new ContinuousUniform(2, 16.3); for (int i = 0; i < StarCount; i++) { float fltStarRad = (float)StarRadiusGen.Sample(); bool blnShouldCreateStar = true; Vector2f StarPosition = new Vector2f(0, 0); if (GalaxyTypeEnum == GlobalConstants.GalaxyType.DISK) { StarPosition = GetStarCoordinatesForElipticalGalaxy(ref arrStars, out blnShouldCreateStar); } else if (GalaxyTypeEnum == GlobalConstants.GalaxyType.RING) { StarPosition = GetStarCoordinatesForRingGalaxy(ref arrStars, out blnShouldCreateStar); } else { StarPosition = GetStarCoordinatesForElipticalGalaxy(ref arrStars, out blnShouldCreateStar); } if (blnShouldCreateStar && StarPosition.X != 0 && StarPosition.Y != 0) { Star objStar = new Star(fltStarRad, StarPosition, 1); arrStars.Add(objStar); } Engine.Instance.WriteToConsole("Stars generated: " + i.ToString(), true, false, false); } Stars = arrStars.ToArray(); HomeStarIndex = random.Next(0, Stars.Length - 1); while (Stars[HomeStarIndex].HasPanets == false) { if (Stars[HomeStarIndex].HasPanets == true) { Stars[HomeStarIndex].Home = true; Stars[HomeStarIndex].HasPlayer = true; } else { HomeStarIndex = random.Next(0, Stars.Length - 1); } } }
private static void SetGalaxyRadiusAndStarCountByGalazySize(GlobalConstants.GalaxySize Size) { switch (Size) { case GlobalConstants.GalaxySize.GALACTIC: GalaxyMajorRadius = 100000; GalaxyMinorRadius = CalculateMinorRadius(); StarCount = random.Next(3000, 4000); break; case GlobalConstants.GalaxySize.HUGE: GalaxyMajorRadius = 75000; GalaxyMinorRadius = CalculateMinorRadius(); StarCount = random.Next(1500, 2500); break; case GlobalConstants.GalaxySize.LARGE: GalaxyMajorRadius = 50000; GalaxyMinorRadius = CalculateMinorRadius(); StarCount = random.Next(1000, 1300); break; case GlobalConstants.GalaxySize.MEDIUM: GalaxyMajorRadius = 35000; GalaxyMinorRadius = CalculateMinorRadius(); StarCount = random.Next(850, 1000); break; case GlobalConstants.GalaxySize.SMALL: GalaxyMajorRadius = 17000; GalaxyMinorRadius = CalculateMinorRadius(); StarCount = random.Next(550, 850); break; case GlobalConstants.GalaxySize.XSMALL: GalaxyMajorRadius = 10000; GalaxyMinorRadius = CalculateMinorRadius(); StarCount = random.Next(100, 250); break; default: break; } }