Update() 공개 메소드

public Update ( ) : void
리턴 void
예제 #1
0
        /// <summary>
        /// Called 60 frames/per second and updates the positions
        /// of all the drawable objects
        /// </summary>
        /// Can work out the elapsed time since last call if
        /// you want to compensate for different frame rates
        /// </param>
        protected override void Update(GameTime gameTime)
        {
            gameState = GameState.PLAYING;

            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed ||
                Keyboard.GetState().IsKeyDown(Keys.Escape))
            {
                Exit();
            }

            restartButton.Update(gameTime);
            quitButton.Update(gameTime);

            playerSprite.Update(gameTime);
            enemyController.Update(gameTime);
            enemyController.HasCollided(playerSprite);

            coinsController.Update(gameTime);
            playerSprite.Score += coinsController.HasCollided(playerSprite);

            // Player wins the game if their score is over 800.
            if (playerSprite.Score >= MAX_SCORE)
            {
                gameState = GameState.WON;
                enemyController.RemoveEnemy();
                playerController.RemovePlayer();
            }
            else if (playerSprite.HasCollided(enemySprite))
            {
                gameState = GameState.LOST;
                enemyController.RemoveEnemy();
                playerController.RemovePlayer();
            }
            base.Update(gameTime);
        }
예제 #2
0
        public void Update()
        {
            EnemyController.Update();
            TowerController.Update();
            ProjectileController.Update();
            this.SetStatistics();

            if (PlayerInterfaceController.PlayerLife <= 0)
            {
                Timers.StopTimers();
                this.backgroundMusic.Stop();
                AnimationController.Renderer.RenderGameOver();
            }
        }
예제 #3
0
    public virtual void Update()
    {
        EnemyController.Update(gameObject, Time.deltaTime);

        if (fading)
        {
            Color c = GetComponent <Renderer>().material.color;
            GetComponent <Renderer>().material.color = new Color(c.r, c.g, c.b, c.a - fadeSpeed);

            if (c.a <= 0)
            {
                spawner.EnemyDied();
                Destroy(gameObject);
            }
        }
    }
예제 #4
0
 void Update()
 {
     currentState.Update();
     aIController.Update();
 }
예제 #5
0
        public override void Update(GameTime gameTime, bool otherScreenHasFocus, bool coveredByOtherScreen)
        {
            base.Update(gameTime, otherScreenHasFocus, coveredByOtherScreen);

            if (otherScreenHasFocus || IsExiting)
            {
                return;
            }
            //xpos++;
            //if (xpos == 320*3) xpos = 0;
            playerShip.Update(gameTime, map);

            waterLevel = 260;
            waterParallax.Position.Y        = waterLevel;
            underwaterBGParallax.Position.Y = waterLevel + 20;

            if (playerShip.Position.X < 0f)
            {
                playerShip.Position.X = (map.TileWidth * map.Width) + playerShip.Speed.X;
                camera.Position.X     = (playerShip.Position.X + playerShip.Speed.X * 20f) - (camera.Target.X - camera.Position.X);
                //particleController.Wrap((map.TileWidth*map.Width));
                //projectileController.Wrap((map.TileWidth * map.Width));
            }
            if (playerShip.Position.X >= (map.TileWidth * map.Width))
            {
                playerShip.Position.X = 0f + playerShip.Speed.X;
                camera.Position.X     = (playerShip.Position.X + playerShip.Speed.X * 20f) - (camera.Target.X - camera.Position.X);
                //particleController.Wrap(-(map.TileWidth * map.Width));
                //projectileController.Wrap(-(map.TileWidth * map.Width));
                //camera.Target.X += playerShip.Speed.X * 20f;
            }

            if (!playerShip.underWater)
            {
                if (playerShip.Position.Y > waterLevel + 10)
                {
                    playerShip.underWater = true;
                    AudioController.PlaySFX("water_enter", 1f, -0.1f, 0.1f);
                    AudioController._songs["overwater-theme"].Volume  = 0f;
                    AudioController._songs["underwater-theme"].Volume = AudioController.MusicVolume;
                }
                waterParallax.HeightScale = MathHelper.Lerp(waterParallax.HeightScale, 0.65f, 0.1f);
            }
            if (playerShip.underWater)
            {
                if (playerShip.Position.Y < waterLevel - 10)
                {
                    AudioController.PlaySFX("water_leave", 0.8f, -0.1f, 0.1f);
                    AudioController._songs["overwater-theme"].Volume  = AudioController.MusicVolume;
                    AudioController._songs["underwater-theme"].Volume = 0f;
                    playerShip.underWater = false;
                    for (int i = 0; i < 30; i++)
                    {
                        Vector2 pos = new Vector2(Helper.RandomFloat(-5f, 5f), 0f);
                        Color   col = Color.Lerp(new Color(0, 81, 147), new Color(211, 234, 254), Helper.RandomFloat(0f, 1f));
                        particleController.Add(playerShip.Position + pos,
                                               (pos * 0.1f) + new Vector2(playerShip.Speed.X, playerShip.Speed.Y * Helper.RandomFloat(0.25f, 2f)),
                                               0, 2000, 500, true, true, new Rectangle(0, 0, 3, 3),
                                               col, particle => { ParticleFunctions.FadeInOut(particle);
                                                                  if (particle.Position.Y > waterLevel)
                                                                  {
                                                                      particle.State = ParticleState.Done;
                                                                  }
                                               }, 1f, 0f, Helper.RandomFloat(-0.1f, 0.1f), 1, ParticleBlend.Alpha);
                    }
                }

                waterParallax.HeightScale = MathHelper.Lerp(waterParallax.HeightScale, 0.1f, 0.05f);
            }

            particleController.Update(gameTime, map);
            if (!_endOfWave)
            {
                enemyController.Update(gameTime, map);
            }
            projectileController.Update(gameTime, map);
            powerupController.Update(gameTime, map);



            camera.Target    = playerShip.Position;
            camera.Target.X += playerShip.Speed.X * 20f;

            //Enemy head = EnemyController.Instance.Enemies.FirstOrDefault(en => en is Boss && ((Boss) en).Head);
            //if (head != null)
            //{
            //    playerShip.Position = head.Position + new Vector2(0, -16);
            //    camera.Target = head.Position;
            //}

            camera.Update(gameTime, playerShip.underWater, waterLevel);

            waterParallax.Update(gameTime, (camera.Target.X - camera.Position.X) * camera.Speed, (int)camera.Position.X);
            underwaterBGParallax.Update(gameTime, ((camera.Target.X - camera.Position.X) * camera.Speed) * 0.5f, (int)camera.Position.X);
            skyBGParallax.Update(gameTime, ((camera.Target.X - camera.Position.X) * camera.Speed) * 0.1f, (int)camera.Position.X);
            rocksParallax.Update(gameTime, (camera.Target.X - camera.Position.X) * camera.Speed, (int)camera.Position.X);
            cloudsParallax.Update(gameTime, (camera.Target.X - camera.Position.X) * camera.Speed, (int)camera.Position.X);

            hud.Update(gameTime, new Viewport(0, 0, ScreenManager.Game.RenderWidth, ScreenManager.Game.RenderHeight));

            if (enemyController.Enemies.Count == 0 && enemyController.NumToSpawn == 0 && !_endOfWave)
            {
                _endOfWave = true;
                TimerController.Instance.Create("", () =>
                {
                    GameController.Wave++;
                    TweenController.Instance.Create("", TweenFuncs.QuadraticEaseIn, tweenin =>
                    {
                        _waveFade = tweenin.Value;
                        if (tweenin.State == TweenState.Finished)
                        {
                            MapGeneration.Generate(map);
                            enemyController.SpawnInitial(GameController.Wave, map);
                            playerShip.Reset();
                            projectileController.Reset();
                            _firstWave = false;

                            TweenController.Instance.Create("", TweenFuncs.Linear, eowtween =>
                            {
                                //playerShip.Life += 0.2f;
                                _eowTimer = eowtween.Value;
                                if (eowtween.State == TweenState.Finished)
                                {
                                    TweenController.Instance.Create("", TweenFuncs.QuadraticEaseIn, tweenout =>
                                    {
                                        _waveFade = 1f - tweenout.Value;
                                        if (tweenout.State == TweenState.Finished)
                                        {
                                            _endOfWave = false;
                                        }
                                    }, 500, false, false);
                                }
                            }, _tradecost == 0?2000:5000, false, false);
                        }
                    }, 500, false, false);
                }, GameController.Wave > 0?2000:0, false);
            }

            if (playerShip.Life <= 0f && !_gameOver)
            {
                _gameOver = true;
                TimerController.Instance.Create("", () =>
                {
                    TweenController.Instance.Create("", TweenFuncs.QuadraticEaseIn, tweenin =>
                    {
                        _goFade = tweenin.Value;
                        if (tweenin.State == TweenState.Finished)
                        {
                            TweenController.Instance.Create("", TweenFuncs.Linear, eowtween =>
                            {
                                _goTimer = eowtween.Value;
                            }, 2000, false, false);
                        }
                    }, 1000, false, false);
                }, 2000, false);
            }

            TweenController.Instance.Update(gameTime);
            TimerController.Instance.Update(gameTime);

            _tradecost = (int)Math.Ceiling((GameController.Wave * 2f) * (0.01f * (100f - playerShip.Life)));
        }
예제 #6
0
 public void NoPowerUpActivesDoesNotAffectEnemySpeed()
 {
     NoPowerupActive();
     Controller.Update(GameObject, DeltaTime);
     Assert.AreEqual(GameObject.transform.position, Vector3.one);
 }
예제 #7
0
        /// <summary>
        /// Updates the state of the game. This method checks the GameScreen.IsActive
        /// property, so the game will stop updating when the pause menu is active,
        /// or if you tab away to a different application.
        /// </summary>
        public override void Update(GameTime gameTime, bool otherScreenHasFocus,
                                    bool coveredByOtherScreen)
        {
            base.Update(gameTime, otherScreenHasFocus, false);

            // Gradually fade in or out depending on whether we are covered by the pause screen.
            if (coveredByOtherScreen)
            {
                pauseAlpha = Math.Min(pauseAlpha + 1f / 32, 1);
            }
            else
            {
                pauseAlpha = Math.Max(pauseAlpha - 1f / 32, 0);
            }

            if (IsActive)
            {
                if (playerController.GameOver)
                {
                    HandleGameOver();
                }

                if (enemyController.LevelFinished)
                {
                    HandleLevelComplete();
                }

                var timeWarpFactor = 1.0f;
                foreach (float value in timeFactors.Values)
                {
                    timeWarpFactor *= value;
                }

                var elapsedTime = gameTime.ElapsedGameTime.Milliseconds * timeWarpFactor;
                var timeSpan    = new TimeSpan(0, 0, 0, 0, (int)elapsedTime);
                myGameTime        = new GameTime(myGameTime.TotalGameTime, timeSpan);
                affectedGameTime += elapsedTime;

                #region Update Objects
                #region Update Player
                playerController.Update(elapsedTime);
                #endregion

                #region Update Bullets
                bulletController.Update(elapsedTime);
                #endregion

                #region Update Enemies
                enemyController.Update(elapsedTime);
                #endregion

                #region Update Particles
                particleController.Update(elapsedTime);
                #endregion

                #region Update Background
                backgroundController.Update(elapsedTime);
                #endregion
                #endregion
            }
        }
예제 #8
0
        public override void Update()
        {
            // Stop game
            if (Game.Key == SpicyKeys.Menu)
            {
                _game.ChangeState(new EndGameState(_game, _player.Score));
            }

            // Change color of the game
            if (Game.Key == SpicyKeys.EasterEgg)
            {
                int color = Game.Random.Next(10, 16);
                Console.ForegroundColor = (ConsoleColor)color;
            }

            // Boss appears
            if (Game.Ticks % (2000 / Game.Difficulty) == 0)
            {
                int xPosBoss = _bossDirection == 1 ? 0 : Game.GameWidth - 4;
                _actors.Add(new Boss("<-O->", 5, xPosBoss, _bossDirection));
                _bossDirection = _bossDirection == 1 ? -1 : 1;
            }

            // Reset content array
            for (int i = 0; i < _content.Length; i++)
            {
                _content[i] = "".PadLeft(Game.ScreenWidth - 1).ToCharArray();
            }

            // Fill in the content array
            foreach (Actor a in _actors)
            {
                for (int i = 0; i < a.Texture.Length; i++)
                {
                    _content[a.YPos][a.XPos + i + Game.MARGIN_X] = a.Texture[i];
                }
            }

            // Display player's score
            _scoreText = "Score: " + _player.Score.Value;
            for (int i = 0; i < _scoreText.Length; i++)
            {
                _content[0][i + 5] = _scoreText[i];
            }

            // Display player's life
            _content[0][Game.GameWidth - 1] = '♥';
            for (int i = 0; i < _player.Health.ToString().Length; i++)
            {
                _content[0][Game.GameWidth - 3 + i] = _player.Health.ToString()[i];
            }

            // Display all content
            Console.CursorTop = Game.MARGIN_Y;
            string allContent = "";

            for (int i = 0; i < _content.Length; i++)
            {
                allContent += new string(_content[i]) + " ";
            }
            Console.Write(allContent);

            // Update all actors
            foreach (Actor a in _actors)
            {
                a.Update();
            }

            _enemyController.Update();
        }