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; } }