public void Update(GameTime gameTime) { Player.Update(gameTime); Collectables.ForEach(c => c.Update(gameTime)); List <Collectable> collected = Collectables.FindAll(c => c.HasCollidedWithPlayer); foreach (var item in collected) { AllTheSpritesWithinTheScene.Remove(item); Collectables.Remove(item); } var spawnPointsWithinTheViewport = AllSpawnPoints.FindAll(c => Helper.CurrentGame.GraphicsDevice.Viewport.Bounds.Contains(c.SpritePosition - new Vector2(Camera.CamPos.X, Camera.CamPos.Y))); var despawnPointsWithinTheViewport = AllDespawnPoints.FindAll(c => Helper.CurrentGame.GraphicsDevice.Viewport.Bounds.Contains(c.SpritePosition - new Vector2(Camera.CamPos.X, Camera.CamPos.Y))); if (spawnPointsWithinTheViewport.Count > 0 && despawnPointsWithinTheViewport.Count > 0) { if (!AllEnemies.Peek().IsVisible) { AllEnemies.Peek().IsVisible = true; AllEnemies.Peek().SpritePosition = spawnPointsWithinTheViewport.ElementAt(Helper.random.Next(spawnPointsWithinTheViewport.Count)).SpritePosition; AllEnemies.Peek().TargetDestination = despawnPointsWithinTheViewport.ElementAt(Helper.random.Next(despawnPointsWithinTheViewport.Count)).SpritePosition; } } if (AllEnemies.Peek().IsVisible) { AllEnemies.Peek().Update(gameTime); if (AllEnemies.Peek().TargetReached) { AllEnemies.Enqueue(AllEnemies.Dequeue()); } } if (Collectables.Count <= 0) { Gameover = true; } }
private void GameObject_OnDelete(GameObject sender, EventArgs args) { AllObjects.Remove(sender); var hero = sender as AIHeroClient; if (hero != null) { AllHeroes.Remove(hero); if (hero.IsEnemy) { EnemyHeroes.Remove(hero); AllEnemies.Remove(hero); } else { AllyHeroes.Remove(hero); AllAllies.Remove(hero); } return; } var minion = sender as Obj_AI_Minion; if (minion != null) { if (minion.Team != GameObjectTeam.Neutral) { if (minion.GetMinionType().HasFlag(Extensions.MinionTypes.Ward)) { AllWards.Remove(minion); if (minion.IsEnemy) { EnemyWards.Remove(minion); } else { AllyWards.Remove(minion); } } else { AllMinions.Remove(minion); if (minion.IsEnemy) { EnemyMinions.Remove(minion); AllEnemies.Remove(minion); } else { AllyMinions.Remove(minion); AllAllies.Remove(minion); } } } else if (minion.Name != "WardCorpse") { switch (minion.GetJungleType()) { case Extensions.JungleType.Small: SmallJungleMinions.Remove(minion); break; case Extensions.JungleType.Large: LargeJungleMinions.Remove(minion); break; case Extensions.JungleType.Epic: EpicJungleMinions.Remove(minion); break; case Extensions.JungleType.Legendary: LegendaryJungleMinions.Remove(minion); break; } AllJungleMinions.Remove(minion); } return; } var particle = sender as Obj_GeneralParticleEmitter; if (particle != null) { AllParticleEmitters.Remove(particle); return; } var turret = sender as Obj_AI_Turret; if (turret != null) { AllTurrets.Remove(turret); if (turret.IsEnemy) { EnemyTurrets.Remove(turret); } else { AllyTurrets.Remove(turret); } return; } var shop = sender as Obj_Shop; if (shop != null) { AllShops.Remove(shop); if (shop.IsAlly) { AllyShops.Remove(shop); } else { EnemyShops.Remove(shop); } return; } var spawnPoint = sender as Obj_SpawnPoint; if (spawnPoint != null) { AllSpawnPoints.Remove(spawnPoint); if (spawnPoint.IsAlly) { AllySpawnPoints.Remove(spawnPoint); } else { EnemySpawnPoints.Remove(spawnPoint); } } var inhibitor = sender as Obj_BarracksDampener; if (inhibitor != null) { AllInhibitors.Remove(inhibitor); if (inhibitor.IsAlly) { AllyInhibitors.Remove(inhibitor); } else { EnemyInhibitors.Remove(inhibitor); } } var nexus = sender as Obj_HQ; if (nexus != null) { AllNexus.Remove(nexus); if (nexus.IsAlly) { AllyNexus = null; } else { EnemyNexus = null; } } var missile = sender as MissileClient; if (missile != null) { AllMissiles.Remove(missile); if (missile.IsAlly) { AllyMissiles.Remove(missile); } else { EnemyMissiles.Remove(missile); } } }