public SpaceUnit ProduceSpaceUnit(SpaceUnitType type, Coordinate position, Coordinate speed, string collisionGroupString) { switch (type) { case SpaceUnitType.Banshee: return new Banshee(position, speed, collisionGroupString, ConsoleUI.BansheeBody); case SpaceUnitType.Battlecruiser: return new Battlecruiser(position, speed, collisionGroupString, ConsoleUI.BattlecruiserBody); case SpaceUnitType.Carrier: return new Carrier(position, speed, collisionGroupString, ConsoleUI.CarrierBody); case SpaceUnitType.Dragoon: return new Dragoon(position, speed, collisionGroupString, ConsoleUI.DragonBody); case SpaceUnitType.Stealth: return new Stealth(position, speed, collisionGroupString, ConsoleUI.StealthBody); case SpaceUnitType.Scout: return new Scout(position, speed, collisionGroupString, ConsoleUI.ScoutBody); case SpaceUnitType.Walkir: return new Walkir(position, speed, collisionGroupString, ConsoleUI.WalkirBody); case SpaceUnitType.SpaceParticle: return new SpaceParticle(position, speed, collisionGroupString, ConsoleUI.SpaceParticleBody); case SpaceUnitType.Shell: if (collisionGroupString == "enemy") { return new Shell(position, speed, collisionGroupString, ConsoleUI.EnemyShellBody); } else { return new Shell(position, speed, collisionGroupString, ConsoleUI.PlayerShellBody); } default: throw new ArgumentException("Invalid space unit type", "type"); } }
private Coordinate GenerateEnemyPosition(SpaceUnitType enemyType) { int enemyPositionRow = 0; int enemyPositionCol = ConsoleUI.CanvasCols - 1; switch (enemyType) { case SpaceUnitType.Battlecruiser: case SpaceUnitType.Carrier: case SpaceUnitType.Scout: case SpaceUnitType.Walkir: enemyPositionRow = this.randomGenerator.Next(ConsoleUI.FlyingShipsMinPositionRow, ConsoleUI.FlyingShipsMaxPositionRow); break; case SpaceUnitType.Dragoon: enemyPositionRow = ConsoleUI.DragonPositionRow; break; case SpaceUnitType.Stealth: enemyPositionRow = ConsoleUI.StealthPositionRow; break; } return new Coordinate(enemyPositionRow, enemyPositionCol); }