public MS_SetAsteroidDensity(int timeStamp, Asteroid.AsteroidDensity density) : base(CommandID.SetAsteroidDensity, timeStamp) { z_density = density; }
// Retrieves a new asteroid from the pool. If the pool is empty, it creates one from scratch. public static Asteroid getNewAsteroid(Vector2 position, int size, float speed, Texture2D image) { Rectangle viewport = StageManager.GetViewport(); Asteroid asteroid; ; // if there are any enemies in the pool, use one of them if (zs_pool.Count > 0) { asteroid = zs_pool[zs_pool.Count - 1]; asteroid.Sprite = (image==null ? zs_images[RandomGen.Next(zs_images.Count)] : image); asteroid.Size = size; zs_pool.RemoveAt(zs_pool.Count - 1); } else asteroid = new Asteroid(image,size); // pool was empty, so create a new enemy asteroid.Speed = speed; asteroid.Direction = MathHelper.Lerp(1.35f, 1.65f, (float)RandomGen.NextDouble()) * MathHelper.Pi; if (position == Vector2.Zero) asteroid.Position = new Vector2(RandomGen.Next(viewport.Width), -RandomGen.Next(viewport.Height/5)); else asteroid.Position = position; asteroid.IsAlive = true; z_activeAsteroids++; return asteroid; }