Exemple #1
0
        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);
                }
            }
        }
Exemple #2
0
        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;
            }
        }