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);
        }