/// <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); }
public void Update() { EnemyController.Update(); TowerController.Update(); ProjectileController.Update(); this.SetStatistics(); if (PlayerInterfaceController.PlayerLife <= 0) { Timers.StopTimers(); this.backgroundMusic.Stop(); AnimationController.Renderer.RenderGameOver(); } }
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); } } }
void Update() { currentState.Update(); aIController.Update(); }
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))); }
public void NoPowerUpActivesDoesNotAffectEnemySpeed() { NoPowerupActive(); Controller.Update(GameObject, DeltaTime); Assert.AreEqual(GameObject.transform.position, Vector3.one); }
/// <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 } }
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(); }