private void LoadGameObjects() { var viewport = Engine.Graphics.GraphicsDevice.Viewport; _player = new Player(_playerShip) { Position = new Vector2((viewport.Width / 2) - (_playerShip.Width / 2), viewport.Height - (_playerShip.Height * 1.5f)), FireWeapons = PlayerFireWeapons }; for (var i = 0; i < 3; i++) { _meteors.Add(new Meteor(_meteor) { Position = new Vector2((viewport.Width / 4) + ((viewport.Width / 4) * i) - (_meteor.Width / 2), viewport.Height - (_meteor.Height * 2.5f)) }); } for (var i = 0; i < 8; i++) { var x = 128 + (i * 128); var y = 32; var enemy = new Enemy(_enemyShip1) { Position = new Vector2(x, y), Group = "Group1", LeftViewportCollision = ViewportCollision, RightViewportCollision = ViewportCollision }; _enemies.Add(enemy); } for (var i = 0; i < 8; i++) { var x = 128 + (i * 128); var y = 128; var enemy = new Enemy(_enemyShip2) { Position = new Vector2(x, y), MovementDirection = -1, Group = "Group2", LeftViewportCollision = ViewportCollision, RightViewportCollision = ViewportCollision }; _enemies.Add(enemy); } for (var i = 0; i < 8; i++) { var x = 128 + (i * 128); var y = 224; var enemy = new Enemy(_enemyShip3) { Position = new Vector2(x, y), Group = "Group3", LeftViewportCollision = ViewportCollision, RightViewportCollision = ViewportCollision }; _enemies.Add(enemy); } for (var i = 0; i < 8; i++) { var x = 128 + (i * 128); var y = 320; var enemy = new Enemy(_enemyShip4) { Position = new Vector2(x, y), MovementDirection = -1, Group = "Group4", LeftViewportCollision = ViewportCollision, RightViewportCollision = ViewportCollision }; _enemies.Add(enemy); } }
private void ViewportCollision(Enemy affectedEnemy) { var group = _enemies.Where(e => e.Group == affectedEnemy.Group).ToList(); foreach (var enemy in group) { if (enemy == affectedEnemy) continue; if (enemy.MovementDirection == -1) { enemy.MovementDirection = 1; enemy.Position += new Vector2(0f, enemy.Speed); } else if (enemy.MovementDirection == 1) { enemy.MovementDirection = -1; enemy.Position += new Vector2(0f, enemy.Speed); } } }
private void EnemyBlowUp(Bullet bullet, Enemy enemy) { bullet.IsAlive = false; enemy.IsEnabled = false; enemy.IsVisible = false; _enemiesKilled++; _blowUp.Play(); if (_enemiesKilled >= _enemies.Count) { Restart(); } }