private Rectangle GetSystemViewStarType(Types.StarType type)
        {
            Rectangle sourceRect;

            switch (type)
            {
            case Types.StarType.ClassO:
            case Types.StarType.ClassB:
            case Types.StarType.ClassA:
                sourceRect = galaxyIcons.getIconRectangle(1, 3);     //MAGIC NUMBERS
                break;

            case Types.StarType.ClassF:
            case Types.StarType.ClassG:
                sourceRect = galaxyIcons.getIconRectangle(0, 3);
                break;

            case Types.StarType.ClassK:
            case Types.StarType.ClassM:
                sourceRect = galaxyIcons.getIconRectangle(2, 3);
                break;

            default:
                sourceRect = galaxyIcons.getIconRectangle(0, 3);
                break;
            }

            return(sourceRect);
        }
        public StarSystem(string color, float mass, float size, float lum, int numPlanets, string name, Types.StarType type, int x, int y)
        {
            //Used for randomly generated stars
            starColor       = color;
            solarMass       = mass;
            solarSize       = size;
            solarLum        = lum;
            numberOfPlanets = numPlanets;
            starName        = name;
            starType        = type;

            galacticX = x;
            galacticY = y;

            selected = false;
        }
        public static StarSystem GenerateSystem(int width, int height)
        {
            //Get type of star
            int maxNum      = Enum.GetNames(typeof(Types.StarType)).Length;
            int starTypeNum = Randomizer.GetRandomNumber(0, maxNum - 1);

            Types.StarType starType = (Types.StarType)starTypeNum;

            string starColor  = "yellow";
            float  solarMass  = 1.0F;
            float  solarSize  = 1.0F;
            float  solarLum   = 1.0F;
            int    numPlanets = 0;
            string starName   = "G";

            //Create randomized characteristics based on star type
            switch (starType)
            {
            case Types.StarType.ClassO:
                starName  = "O";
                starColor = "blue";
                solarMass = (float)Randomizer.GetRandomNumber(16, 50);
                solarSize = ((float)Randomizer.GetRandomNumber(66, 100)) / 10;
                solarLum  = (float)Randomizer.GetRandomNumber(30000, 50000);
                break;

            case Types.StarType.ClassB:
                starName  = "B";
                starColor = "blue-white";
                solarMass = ((float)Randomizer.GetRandomNumber(21, 160)) / 10;
                solarSize = ((float)Randomizer.GetRandomNumber(18, 66)) / 10;
                solarLum  = (float)Randomizer.GetRandomNumber(25, 30000);
                break;

            case Types.StarType.ClassA:
                starName  = "A";
                starColor = "white";
                solarMass = ((float)Randomizer.GetRandomNumber(140, 210)) / 100;
                solarSize = ((float)Randomizer.GetRandomNumber(140, 180)) / 100;
                solarLum  = ((float)Randomizer.GetRandomNumber(50, 250)) / 10;
                break;

            case Types.StarType.ClassF:
                starName  = "F";
                starColor = "yellow-white";
                solarMass = ((float)Randomizer.GetRandomNumber(104, 140)) / 100;
                solarSize = ((float)Randomizer.GetRandomNumber(115, 140)) / 100;
                solarLum  = ((float)Randomizer.GetRandomNumber(150, 500)) / 100;
                break;

            case Types.StarType.ClassG:
                starName  = "G";
                starColor = "yellow";
                solarMass = ((float)Randomizer.GetRandomNumber(80, 104)) / 100;
                solarSize = ((float)Randomizer.GetRandomNumber(96, 115)) / 100;
                solarLum  = ((float)Randomizer.GetRandomNumber(60, 150)) / 100;
                break;

            case Types.StarType.ClassK:
                starName  = "K";
                starColor = "orange";
                solarMass = ((float)Randomizer.GetRandomNumber(45, 80)) / 100;
                solarSize = ((float)Randomizer.GetRandomNumber(70, 96)) / 100;
                solarLum  = ((float)Randomizer.GetRandomNumber(8, 60)) / 100;
                break;

            case Types.StarType.ClassM:
                starName  = "M";
                starColor = "red";
                solarMass = ((float)Randomizer.GetRandomNumber(8, 45)) / 100;
                solarSize = ((float)Randomizer.GetRandomNumber(1, 70)) / 100;
                solarLum  = ((float)Randomizer.GetRandomNumber(1, 8)) / 100;
                break;
            }

            //Create randomized name
            int classNumber  = Randomizer.GetRandomNumber(0, 9);
            int randomNumber = Randomizer.GetRandomNumber(1, 99);
            int greekLetter  = Randomizer.GetRandomNumber(0, Types.GreekLetters.Length);

            starName = Types.GreekLetters[greekLetter] + " " + randomNumber.ToString() +
                       "-" + starName + classNumber.ToString();


            //Create planets
            numPlanets = Randomizer.GetRandomNumber(0, 7);

            //Set coordinates
            int x = Randomizer.GetRandomNumber(0, width);
            int y = Randomizer.GetRandomNumber(0, height);

            StarSystem newSystem = new StarSystem(starColor, solarMass, solarSize, solarLum, numPlanets, starName, starType, x, y);

            List <Planet> listOfPlanets = GeneratePlanets(newSystem, numPlanets);

            newSystem.PopulatePlanets(listOfPlanets);
            newSystem.PrimaryRingPlanet = ChoosePrimaryRingPlanet(listOfPlanets);

            newSystem.Searched = false;

            int discovered = Randomizer.GetRandomNumber(0, 2);

            if (discovered == 0)
            {
                newSystem.Discovered = false;
            }
            else
            {
                newSystem.Discovered = true;
            }

            return(newSystem);
        }