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
        }
        bool mHeroBoundCollision; // If there is a image bound collision for the

        public GameState()
        {
            // Set up the flower ...
            mFlower = new TexturedPrimitive("Flower", new Vector2(50, 35), new Vector2(350, 350));

            // Planes
            mPlane    = new TexturedPrimitive[kNumPlanes];
            mPlane[0] = new TexturedPrimitive("PatrolEnemy", new Vector2(20, -80), new Vector2(10, 20));
            mPlane[1] = new TexturedPrimitive("PatrolEnemy", new Vector2(150, -100), new Vector2(10, 20));
            mPlane[2] = new TexturedPrimitive("PatrolEnemy", new Vector2(150, 120), new Vector2(10, 20));
            mPlane[3] = new TexturedPrimitive("PatrolEnemy", new Vector2(20, 170), new Vector2(10, 20));

            mHeroBoundCollision = false;
            mHeroPixelCollision = false;

            mHero = new SpritePrimitive("SimpleSpriteSheet", new Vector2(10, 0), new Vector2(10, 10),
                                        4,  // Number of rows
                                        2,  // Number of columns
                                        0); // Padding between images


            // Start Hero by walking left and AnotherHero by walking towards right
            mHero.SetSpriteAnimation(0, 0, 0, 3, 10); // Slowly

            // Begin background audio
            AudioSupport.PlayBackgroundAudio("Mind_Meld", 0.4f);
        }
示例#5
0
 public void StunHero()
 {
     if (mCurrentHeroState != HeroState.Unstunnable && mCurrentHeroState != HeroState.Stunned)
     {
         mCurrentHeroState = HeroState.Stunned;
         AudioSupport.PlayACue("Stun");
         AdjustSize(-1);
     }
 }
 public GameState()
 {
     mCurrentGameState = GameStates.StartScreen;
     AudioSupport.PlayBackgroundAudio("Mind_Meld", 0.5f);
     InitializeStartMenu();
 }
示例#7
0
 public void Feed()
 {
     AdjustSize(1);
     AudioSupport.PlayACue("Chomp");
 }
示例#8
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();
                }
            }
        }