Esempio n. 1
0
        public void Update(GameTime gameTime)
        {
            KeyboardState currentKeyboardState = Keyboard.GetState();

            if (currentKeyboardState.IsKeyDown(Keys.Right) ||
                currentKeyboardState.IsKeyDown(Keys.D))
            {
                angleUpdate -= 1f;
            }

            if (currentKeyboardState.IsKeyDown(Keys.Left) ||
                currentKeyboardState.IsKeyDown(Keys.A))
            {
                angleUpdate += 1f;
            }

            if (Globals.IsFinnished && IsRunning)
            {
                OnGameFinished(Globals.TotalScore, GameFinishedEventArgs.EndReason.GoalAccomplished);
                if (MaxScore < Globals.TotalScore)
                {
                    _recordAchieved = true;
                    MaxScore        = Globals.TotalScore;
                }
                IsRunning          = false;
                _elemManager.Level = null;
                _elemManager.DestroyAllObjects();
            }


            angleUpdate = Math.Min(angleUpdate, 1);
            angleUpdate = Math.Max(angleUpdate, -1);

            _elemManager.DrawParticles(gameTime);

            if (!OpenFeasyo.GameTools.GameTools.IsPaused)
            {
                _elapsedTime += gameTime.ElapsedGameTime.TotalSeconds;
                if (IsRunning && (_elapsedTime / 20) - 2 > _elemManager.Level.LevelId &&
                    _elemManager.Level.LevelId < 10)
                {
                    _infoPanel.CurrentLevel = _elemManager.Level = _generator.GenerateNext();
                }
                _tunnel.Update(gameTime, _elemManager.Level == null ? 10 : _elemManager.Level.Speed);
                _player.Update(gameTime, angleUpdate * (float)gameTime.ElapsedGameTime.TotalSeconds * 2, angleUpdate * 0.2f);
                _camera.Update(gameTime, _tunnel.CurrentPhase, /*this.headPos,*/ _player.Angle);
                _elemManager.Update(gameTime);
            }
            angleUpdate *= 0.9f;
            _infoPanel.Update(gameTime);



            if (_infoPanel.CurrentLevel != null)
            {
                _infoPanel.CurrentLevel.Score = Globals.TotalScore;
            }
        }