Example #1
0
        /// <summary>
        /// The draw method for the Jet, draws the Jet to the screen if it is alive
        /// </summary>
        /// <param name="elapsedTime">The time elapsed since the last Draw</param>
        /// <param name="spriteBatch">The sprite batch to draw this Jet into</param>
        public override void Draw(float elapsedTime, SpriteBatch spriteBatch)
        {
            bool isInHealthyRetreat         = (_myVisualState == JetMinionVisualState.HEALTHY) && (_myBehaviourState == JetMinionBehaviourState.RETREAT);
            bool isInDamagedRetreat         = (_myVisualState == JetMinionVisualState.DAMAGED) && (_myBehaviourState == JetMinionBehaviourState.RETREAT);
            bool isDestroyedWhileRetreating = (_myVisualState == JetMinionVisualState.EXPLODING) && (_myBehaviourState == JetMinionBehaviourState.RETREAT);

            if (_myVisualState == JetMinionVisualState.HEALTHY || isInHealthyRetreat)
            {
                spriteBatch.Draw(_spriteSheet, _position, _spriteBounds[(int)_myVisualState], Color.White, 0f, Vector2.Zero, SpriteScale, SpriteEffects.None, 0);
            }
            else if (_myVisualState == JetMinionVisualState.DAMAGED || isInDamagedRetreat)
            {
                //The position of the gun turrets will change depending on the sprite scale, so
                //we need to take that into account

                Vector2 gunSectionPosition = _position + (GunSectionOffset * SpriteScale);

                //We need to draw both the Jet and the gun turrets in the damaged state

                spriteBatch.Draw(_spriteSheet, _position, _spriteBounds[(int)_myVisualState], Color.White, 0f, Vector2.Zero, SpriteScale, SpriteEffects.None, 0);
                spriteBatch.Draw(_spriteSheet, gunSectionPosition, _spriteGun[(int)_myGunState], Color.White, 0f, Vector2.Zero, SpriteScale, SpriteEffects.None, 0);
            }
            else if (_myVisualState == JetMinionVisualState.EXPLODING || isDestroyedWhileRetreating)
            {
                if (_timerExplosion <= 0)
                {
                    _explosionAnimator.StopAndFinish();
                    _timerExplosion = TotalExplosionTime;
                }
                else
                {
                    _timerExplosion -= elapsedTime;
                }

                _explosionAnimator.Draw(elapsedTime, spriteBatch);
            }
        }