Example #1
0
        protected override void Update(GameTime gameTime)
        {
            if (gamestate == gameState.menu)
            {
                if (Keyboard.GetState().IsKeyDown(Keys.Enter) == true)
                {
                    gamestate = gameState.play;
                }
            }
            else if (gamestate == gameState.play)
            {
                effectParameter1.SetValue(count);
                foreach (Runner mRunner in runnersToDelete)
                {
                    runnerList.Remove(mRunner);
                }

                // Allows the game to exit
                if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
                {
                    this.Exit();
                }

                //Runners
                timeElapsed += gameTime.ElapsedGameTime.Milliseconds;
                if (runnersRunning < runnerLimit)
                {
                    if (timeElapsed > 500)
                    {
                        Runner newRunner = new Runner();
                        newRunner.Initialize();
                        newRunner.position = new Vector2(1300, GetRandomNumber(newRunner.srcHorizon, newRunner.srcForeground));
                        newRunner.LoadContent(Content, "run_cycle");
                        LinkedListNode <Runner> newNode = new LinkedListNode <Runner>(newRunner);
                        runnerList.AddLast(newRunner);
                        runnersRunning += 1;
                        timeElapsed     = 0;
                    }
                }

                timeSince += gameTime.ElapsedGameTime.Milliseconds;
                if (timeSince >= 1000)
                {
                    totalTime -= 1;
                    timeSince  = 0;
                }
                if (totalTime == -1 || runnersRunning == 0)
                {
                    gamestate = gameState.end;
                }

                if ((runnersRunning == 1 && gameTime.TotalGameTime.Seconds > 40) || totalTime <= 5)
                {
                    if (count < 4f && increasing)
                    {
                        count += .1f;
                    }
                    else
                    {
                        increasing = false;
                    }

                    if (count > 1 && !increasing)
                    {
                        count -= .1f;
                    }
                    else
                    {
                        increasing = true;
                    }
                }
                if (totalTime == 0)
                {
                    count = 10;
                }
                effectParameter1.SetValue(count);


                foreach (Runner mRunner in runnerList)
                {
                    mRunner.m_bIsRunning = true;

                    if (mRunner.velocity.X < -maxRunnerVelocity.X)
                    {
                        mRunner.velocity.X -= 0.2f;
                    }

                    //Dubug - Make the runner stand still for hit detection testing
                    //runners[i].velocity = new Vector2(0, 0);

                    mRunner.m_eDestSprEff = SpriteEffects.FlipHorizontally;
                    mRunner.m_bIsRunning  = true;
                    mRunner.velocity.X   -= 15f;

                    //Udpate
                    mRunner.Update(gameTime);
                }

                //Heli Movement
                if (Keyboard.GetState().IsKeyDown(Keys.Up))
                {
                    heli.velocity.Y -= 10f;
                }
                else if (Keyboard.GetState().IsKeyDown(Keys.Down))
                {
                    heli.velocity.Y += 10f;
                }
                if (Keyboard.GetState().IsKeyDown(Keys.Left))
                {
                    heli.m_eDestSprEff  = SpriteEffects.None;
                    heli.velocity.X    -= 10f;
                    heli.emitterXOffset = 19;
                    particleEngine.velocityDirection = .3f;
                }
                else if (Keyboard.GetState().IsKeyDown(Keys.Right))
                {
                    heli.m_eDestSprEff  = SpriteEffects.FlipHorizontally;
                    heli.velocity.X    += 10f;
                    heli.emitterXOffset = 18;
                    particleEngine.velocityDirection = -.3f;
                }

                if (Keyboard.GetState().IsKeyDown(Keys.Space))
                {
                    heli.dropCrate();
                }

                heli.position.Y = MathHelper.Clamp(heli.position.Y, heli.srcHorizon, 720);
                heli.Update(gameTime);

                //Particle Engine
                particleEngine.EmitterLocation = heli.emitterLocation;
                particleEngine.Update(gameTime);

                //
                debugInfo.Update(gameTime);
            }
            else
            {
                //game over
                if (Keyboard.GetState().IsKeyDown(Keys.Enter) == true)
                {
                    this.Exit();
                }
            }
            base.Update(gameTime);
        }