public asteroidTypes getAsteroidType(asteroidTypes lastType, asteroidCircleTypes circleType)
        {
            int rand = RandomHelper.GetRandomInt(0, 100);

            switch (circleType)
            {
            case asteroidCircleTypes.VerySparse:
                if (rand < 45)
                {
                    return(asteroidTypes.None);
                }
                if (rand < 95)
                {
                    return(asteroidTypes.Sparse);
                }
                if (rand < 100)
                {
                    return(asteroidTypes.Dense);
                }
                break;

            case asteroidCircleTypes.Sparse:
                if (rand < 25)
                {
                    return(asteroidTypes.None);
                }
                if (rand < 85)
                {
                    return(asteroidTypes.Sparse);
                }
                return(asteroidTypes.Dense);

            case asteroidCircleTypes.Dense:
                if (rand < 5)
                {
                    return(asteroidTypes.None);
                }
                if (rand < 45)
                {
                    return(asteroidTypes.Sparse);
                }
                return(asteroidTypes.Dense);

            case asteroidCircleTypes.VeryDense:
                if (rand < 1)
                {
                    return(asteroidTypes.None);
                }
                if (rand < 30)
                {
                    return(asteroidTypes.Sparse);
                }
                return(asteroidTypes.Dense);
            }

            return(asteroidTypes.Sparse);
        }
        public int asteroidObjectId(asteroidTypes asteroid)
        {
            /*
             * 4	Nebel
             * 5	dichter Nebel
             * 10	Asteroidenfeld
             * 11	dichtes Asteroidenfeld
             * */
            switch (asteroid)
            {
            case asteroidTypes.Sparse:
                return(10);

                break;

            case asteroidTypes.Dense:
                return(11);

                break;
            }
            return(10);
        }
        private void createAsteroidCircle(int _circleNo, asteroidCircleTypes _type)
        {
            int           degrees  = 0;
            double        angle    = Math.PI * degrees / 180.0;
            int           x_last   = 0;
            int           y_last   = 0;
            asteroidTypes lastType = 0;

            while (degrees < 360)
            {
                angle = Math.PI * degrees / 180.0;
                int x_new = (int)(centerX + (_circleNo + 2) * Math.Cos(angle));
                int y_new = (int)(centerX + (_circleNo + 2) * Math.Sin(angle));
                if (x_new != x_last || y_new != y_last)
                {
                    x_last = x_new;
                    y_last = y_new;

                    lastType = typeDetector.getAsteroidType(lastType, _type);
                    if (lastType != asteroidTypes.None)
                    {
                        if (!systemElements.Any(e => e.x == x_new && e.y == y_new))
                        {
                            systemElement asteroid = createElement(_circleNo, 0);
                            asteroid.x    = x_new;
                            asteroid.y    = y_new;
                            asteroid.type = typeDetector.asteroidObjectId(lastType);
                            if (x_last == centerX || y_last == centerX)
                            {
                                writeCoords(asteroid);
                            }
                        }
                    }
                }
                degrees += 3;
            }
        }