private static void BuildAtX(Match game, Player player, int x) { var ship = player.Ship; var deltaY = player.PlayerNumber == 1 ? -1 : 1; List<Alien> explosions = new List<Alien>(); for (var shieldX = x; shieldX < x + ship.Width; shieldX++) { var shieldY = ship.Y + deltaY; for (var counter = 0; counter < 3; counter++) { var entity = game.Map.GetEntity(shieldX, shieldY); if (entity == null) { game.Map.AddEntity(new Shield(player.PlayerNumber) {X = shieldX, Y = shieldY}); } else if (entity.Type == EntityType.Alien) { explosions.Add((Alien) entity); } else if ((entity.Type == EntityType.Bullet) || (entity.Type == EntityType.Missile)) { entity.Destroy(); } shieldY += deltaY; } } foreach (var alien in explosions) { Alien.Explode(alien.X, alien.Y); } }
public Player(Player player) { PlayerNumber = player.PlayerNumber; PlayerNumberReal = player.PlayerNumberReal; PlayerName = player.PlayerName; Kills = player.Kills; Lives = player.Lives; RespawnTimer = player.RespawnTimer; MissileLimit = player.MissileLimit; Missiles = new List<Missile>(player.Missiles); AlienWaveSize = player.AlienWaveSize; AlienManager = new AlienManager(player.AlienManager); }
public static Player CopyAndFlip(Player player, CoordinateFlipper flipper, Dictionary<int, Entity> flippedEntities) { var copy = new Player(player) { PlayerNumber = player.PlayerNumber == 1 ? 2 : 1 }; copy.Missiles.Clear(); foreach (var missile in player.Missiles) { copy.Missiles.Add(flippedEntities.ContainsKey(missile.Id) ? (Missile) flippedEntities[missile.Id] : Missile.CopyAndFlip(missile, flipper, flippedEntities)); } if (player.MissileController != null) { copy.MissileController = MissileController.CopyAndFlip(player.MissileController, flipper, flippedEntities); } if (player.AlienFactory != null) { copy.AlienFactory = AlienFactory.CopyAndFlip (player.AlienFactory, flipper, flippedEntities); } copy.AlienManager = AlienManager.CopyAndFlip(player.AlienManager, flipper, flippedEntities); if (player.Ship != null) { copy.Ship = Ship.CopyAndFlip(player.Ship, flipper, flippedEntities); } return copy; }