public void UpdateGamePlay(GameTime gameTime)
        {
            mDistantTraveled = (int)mHero.PositionX / 20;
            if (mHero.HasLost())
            {
                mCurrentGameState = GameStates.Dead;
                AudioSupport.PlayACue("Break");
                InitializeGameOverScreen();
                return;
            }

            bool shootBubbleShot = (InputWrapper.Buttons.A == ButtonState.Pressed);

            mHero.Update(gameTime, InputWrapper.ThumbSticks.Left, shootBubbleShot);
            mEnvironment.Update(mHero);

            #region hero moving the camera window

            float       kBuffer         = mHero.Width * 5f;
            float       kHalfCameraSize = Camera.Width * 0.5f;
            Vector2     delta           = Vector2.Zero;
            Vector2     cameraLL        = Camera.CameraWindowLowerLeftPosition;
            Vector2     cameraUR        = Camera.CameraWindowUpperRightPosition;
            const float kChaseRate      = 0.05f;

            if (mHero.PositionX > (cameraUR.X - kHalfCameraSize))
            {
                delta.X = (mHero.PositionX + kHalfCameraSize - cameraUR.X) * kChaseRate;
            }

            Camera.MoveCameraBy(delta);
            #endregion
        }
 public void SetToStuntState()
 {
     mTintColor    = kStuntTint;
     mStateTimer   = kStunCycle;
     mCurrentState = PatrolState.StuntState;
     AudioSupport.PlayACue("Stun");
 }
        private void CollisionUpdate()
        {
            Vector2 pixelCollisionPosition = Vector2.Zero;

            #region Collide the hero with the flower
            mHeroBoundCollision = mHero.PrimitivesTouches(mFlower);
            mHeroPixelCollision = mHeroBoundCollision;
            if (mHeroBoundCollision)
            {
                mHeroPixelCollision = mHero.PixelTouches(mFlower, out pixelCollisionPosition);
                if (mHeroPixelCollision)
                {
                    AudioSupport.PlayACue("Bounce");
                }
            }
            #endregion

            #region Collide the hero with planes
            int i = 0;
            while ((!mHeroPixelCollision) && (i < kNumPlanes))
            {
                mHeroBoundCollision = mPlane[i].PrimitivesTouches(mHero);
                mHeroPixelCollision = mHeroBoundCollision;
                if (mHeroBoundCollision)
                {
                    mHeroPixelCollision = mPlane[i].PixelTouches(mHero, out pixelCollisionPosition);
                    if (mHeroPixelCollision)
                    {
                        AudioSupport.PlayACue("Wall");
                    }
                }
                i++;
            }
            #endregion
        }
Exemplo n.º 4
0
 public void StunHero()
 {
     if (mCurrentHeroState != HeroState.Unstunnable && mCurrentHeroState != HeroState.Stunned)
     {
         mCurrentHeroState = HeroState.Stunned;
         AudioSupport.PlayACue("Stun");
         AdjustSize(-1);
     }
 }
Exemplo n.º 5
0
 public void Feed()
 {
     AdjustSize(1);
     AudioSupport.PlayACue("Chomp");
 }
Exemplo n.º 6
0
        public void UpdatePlayingState(GameTime gameTime, Vector2 delta, bool shootBubbleShot)
        {
            base.Update();
            // take advantage of the camera window bound check
            BoundObjectToCameraWindow();

            // Player control
            mPosition += delta;

            // Sprite facing direction
            if (delta.X > 0)
            {
                SpriteCurrentRow = 1;
            }
            else if (delta.X < 0)
            {
                SpriteCurrentRow = 0;
            }

            // BubbleShot direction
            int bubbleShotDir = 1;

            if (SpriteCurrentRow == 0)
            {
                bubbleShotDir = -1;
            }

            mCollisionEffect.UpdateParticles();

            float deltaTime = gameTime.ElapsedGameTime.Milliseconds;

            mTimeSinceLastShot += deltaTime / 1000;

            // Can the hero shoot a BubbleShot?
            if (mTimeSinceLastShot >= kTimeBetweenBubbleShot)
            {
                if (shootBubbleShot)
                {
                    BubbleShot j = new BubbleShot(new Vector2(Position.X + kBubbleShotOffset * bubbleShotDir, Position.Y), bubbleShotDir);
                    mBubbleShots.Add(j);
                    mTimeSinceLastShot = 0;
                    AudioSupport.PlayACue("Bubble");
                }
            }

            // now update all the BubbleShots out there ...
            int count = mBubbleShots.Count;

            for (int i = count - 1; i >= 0; i--)
            {
                if (!mBubbleShots[i].IsOnScreen())
                {
                    // outside now!
                    mBubbleShots.RemoveAt(i);
                }
                else
                {
                    mBubbleShots[i].Update();
                }
            }
        }