private void BulletsCollisionAndMove() { foreach (Bullet bullet in AllBullets) { foreach (Sprite wall in TMXMap.Walls) // стены { if (Intersects(bullet.Sprite, wall)) { DeleteBullets.Add(bullet); } } if (!DeleteBullets.Contains(bullet) && bullet.WhoIs == WhoIs._enemy && Intersects(bullet.Sprite, Tank.Bounds[0])) //Игрок { if (Tank.Health <= 0) { TankDestroy(); } TankSubstractHealthEvent.Invoke(this, new TankSubstructHealthArgs(5)); DeleteBullets.Add(bullet); } if (!DeleteBullets.Contains(bullet) && bullet.WhoIs == WhoIs._player) //Противник { foreach (Enemies enemy in Enemies) { if (Intersects(bullet.Sprite, enemy.Sprite)) { Rang++; if (enemy.Heath <= 1) { DeleteEnemies.Add(enemy); DeleteBullets.Add(bullet); DeathSound.SoundBuffer = Resurses.SoundBuffersDeathEnemy[Rnd.Next(0, 4)]; DeathSound.Play(); } else { enemy.Hit(); DeleteBullets.Add(bullet); } } } } } foreach (Bullet bullet in DeleteBullets) { AllBullets.Remove(bullet); } DeleteBullets.Clear(); foreach (Enemies enemy in DeleteEnemies) { Enemies.Remove(enemy); } DeleteEnemies.Clear(); foreach (Bullet bullet in AllBullets) { bullet.Move(TimeOneFrame); } }
private void TankDestroy() { TankSubstractHealthEvent.Invoke(this, new TankSubstructHealthArgs(-10)); Tank.Position = new Vector2f(-250, -250); Enemies.Clear(); AllBullets.Clear(); Resurses.Musics[Level].Loop = false; Resurses.Musics[Level].Stop(); Level = 0; Resurses.Musics[Level].Loop = true; Resurses.Musics[Level].Play(); TMXMap.Load(LevelName[0], SpawnNewBullet); MainView = new View(new Vector2f(640, 360), new Vector2f(1280, 720)); }
private void CollisionEnemyAndTank() { foreach (Enemies enemy in Enemies) { if (Intersects(enemy.Sprite, Tank.Bounds[0])) { Rang++; DeleteEnemies.Add(enemy); TankSubstractHealthEvent.Invoke(this, new TankSubstructHealthArgs(1)); DeathSound.SoundBuffer = Resurses.SoundBuffersDeathEnemy[Rnd.Next(0, 4)]; DeathSound.Play(); } else if (new Vector(enemy.Position.X - Tank.Position.X, enemy.Position.Y - Tank.Position.Y).Length <= 700 && !ChekVisibleTankAndEnemy(Tank.Position, enemy.Position)) { enemy.Move(Tank.Position, TimeOneFrame); if (enemy is TorEnemy) { for (int i = 0; i < enemy.ETowers.Length; i++) { enemy.ETowers[i].OnShoot(Tank.Position, TimeOneFrame); SplashSound.SoundBuffer = Resurses.SoundBuffersSplashEnemy[Rnd.Next(0, 2)]; SplashSound.Play(); } } } } foreach (Enemies enemy in DeleteEnemies) { Enemies.Remove(enemy); } DeleteEnemies.Clear(); if (Tank.Health <= 0) { TankDestroy(); return; } }