예제 #1
0
        public void Update(GameTime gameTime)
        {
            const float lcBirdPadding = 50;

            using (var lInactiveBirds = new BatchCollectionRemover<BirdEntity>(this.Birds))
            {
                lInactiveBirds.AddRange(this.DeadBirds);
                this.DeadBirds.Clear();

                foreach (var lBird in this.Birds)
                {
                    lBird.MovementBehavior.Move(lBird, gameTime);

                    if ((lBird.Position.X + lBird.Size.X < -lcBirdPadding) ||
                        (lBird.Position.Y + lBird.Size.Y < -lcBirdPadding) ||
                        (lBird.Position.X > this.ScreenSize.X + lcBirdPadding) ||
                        (lBird.Position.Y > this.ScreenSize.Y + lcBirdPadding))
                    {
                        lInactiveBirds.Add(lBird);
                    }

                    lBird.ShootingBehavior.FireWhenReady(lBird, gameTime);
                }
            }
        }
예제 #2
0
        /// <summary>
        /// Updates all the bullets by allowing them to move.
        /// </summary>
        /// <param name="gameTime">The current game time.</param>
        public void Update(GameTime gameTime)
        {
            const float lcBulletPadding = 50;

            using (var lDeadBullets = new BatchCollectionRemover<BulletEntity>(this.Bullets))
            {
                foreach (var lBullet in this.Bullets)
                {
                    lBullet.MovementBehavior.Move(lBullet, gameTime);

                    if ((lBullet.Position.X < -lcBulletPadding) ||
                        (lBullet.Position.Y < -lcBulletPadding) ||
                        (lBullet.Position.X + lBullet.Size.X > this.ScreenSize.X + lcBulletPadding) ||
                        (lBullet.Position.Y + lBullet.Size.Y > this.ScreenSize.Y + lcBulletPadding))
                    {
                        lDeadBullets.Add(lBullet);
                    }
                }
            }
        }
예제 #3
0
        public void Update(GameTime gameTime)
        {
            if (this.NewCloudTimer == 0)
            {
                this.NewCloudTimer = this.Random.Next(10, 80);
                this.AddCloud();
            }
            this.NewCloudTimer--;

            using (var lOldClouds = new BatchCollectionRemover<SimpleGameEntity>(this.Clouds))
            {
                foreach (var lCloud in this.Clouds)
                {
                    lCloud.MovementBehavior.Move(lCloud, gameTime);
                    if (lCloud.Position.X < -lCloud.Size.X)
                    {
                        lOldClouds.Add(lCloud);
                    }
                }
            }
        }
예제 #4
0
        /// <summary>
        /// Updates all the coins by allowing them to move.
        /// </summary>
        /// <param name="gameTime">The current game time.</param>
        public void Update(GameTime gameTime)
        {
            const float lcCoinPadding = 10;

            using (var lDeadCoins = new BatchCollectionRemover<SimpleGameEntity>(this.Coins))
            {
                foreach (var lCoin in this.Coins)
                {
                    lCoin.MovementBehavior.Move(lCoin, gameTime);

                    if ((lCoin.Position.X < lcCoinPadding) ||
                        (lCoin.Position.Y < lcCoinPadding) ||
                        (lCoin.Position.X + lCoin.Size.X > this.ScreenSize.X + lcCoinPadding) ||
                        (lCoin.Position.Y + lCoin.Size.Y > this.ScreenSize.Y + lcCoinPadding))
                    {
                        lDeadCoins.Add(lCoin);
                    }
                }
            }
        }