private void OnUpdate(object sender, GameTimerEventArgs e) { if (isActive) { particleSystem.Update(e.ElapsedTime.Milliseconds / 2000f); } }
/// <summary> /// Allows the page to run logic such as updating the world, /// checking for collisions, gathering input, and playing audio. /// </summary> private void OnUpdate(object sender, GameTimerEventArgs e) { // TODO: Add your update logic here refreshRate = (int)(1 / ((double)e.ElapsedTime.Milliseconds / 1000d)); if (isGameOver == false) { #region key control var eq = enemies.Where(x => x.FirstCharacter.Equals(keysQueue.Text, StringComparison.OrdinalIgnoreCase) && !String.IsNullOrEmpty(x.FirstCharacter)).FirstOrDefault(); if (eq != null) { Debug.WriteLine(String.Format(" shoot {0} keys {1}", eq.FirstCharacter, keysQueue.Count.ToString())); Shoot(eq); keysQueue.Clear(); } else { var eqp = enemies.Where(x => x.Text.StartsWith(keysQueue.Text, StringComparison.OrdinalIgnoreCase)).FirstOrDefault(); if (eqp != null) { ; } else { keysQueue.Clear(); } } #endregion CreateEnemy(); LaserBullet tmpBullet = null; foreach (var laserBullet in bullets) { if (laserBullet != null) { laserBullet.Update(); if (laserBullet.x < 0 || laserBullet.y < 0) { //laserBullet = null; tmpBullet = laserBullet; } } } bullets.Remove(tmpBullet); #region collisions Enemy tmp = null; foreach (var item in enemies) { item.Update(); if (item.position.Y > SharedGraphicsDeviceManager.Current.GraphicsDevice.Viewport.Height) { tmp = item; } if (item.ShouldBeRemoved) { tmp = item; } foreach (var laserBullet in bullets) { if (laserBullet != null && laserBullet.Bounds.Intersects(item.Bounds)) { //remove letter form item item.Hit(); tmpBullet = laserBullet; score += 20; } } bullets.Remove(tmpBullet); if (item.Bounds.Intersects(player.Bounds) && item.IsExploding == false) { player.Explode(); item.Explode(); playExplodeSound(); } } if (tmp != null) { enemies.Remove(tmp); tmp = null; } #endregion #region end game var enemyToExplode = enemies.Where(x => x.IsExploding == false && x.CenteryY > SharedGraphicsDeviceManager.Current.GraphicsDevice.Viewport.Height - 40).ToList(); if (enemyToExplode.Count > 0) { foreach (var item in enemyToExplode) { item.Explode(); playExplodeSound(); } } if (player.IsExploded || enemies.Any(x => x.IsExploded)) { //remove all game over isGameOver = true; enemies.Clear(); } #endregion } else { endGameScore.Update(); var touchCollection = TouchPanel.GetState(); if (touchCollection.Count > 0) { if (NavigationService.CanGoBack) { NavigationService.GoBack(); } else { NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative)); } } } player.Update(); particleSystem.Update(e.ElapsedTime.Milliseconds / 2000f); //background.Update(SharedGraphicsDeviceManager.Current.GraphicsDevice.Viewport.Bounds); }