示例#1
0
        public static float GetMaxAirPressure(VehicleFactory.eVehicleType i_VehicleType)
        {
            float maxAirPressure;

            switch (i_VehicleType)
            {
            case VehicleFactory.eVehicleType.Motor:
            case VehicleFactory.eVehicleType.ElectricMotor:
                maxAirPressure = Motor.k_MaxAirPressure;
                break;

            case VehicleFactory.eVehicleType.Car:
            case VehicleFactory.eVehicleType.ElectricCar:
                maxAirPressure = Car.k_MaxAirPressure;
                break;

            case VehicleFactory.eVehicleType.Truck:
                maxAirPressure = Truck.k_MaxAirPressure;
                break;

            default:
                throw new System.ArgumentOutOfRangeException(nameof(i_VehicleType), i_VehicleType, null);
            }

            return(maxAirPressure);
        }
示例#2
0
        private List <string> getVehicleParametersFromUser(string i_VehicleLicenseNumber)
        {
            VehicleFactory.eVehicleType vehicleType = this.getVehicleType();
            List <string> vehicleParameters         =
                new List <string>
            {
                vehicleType.ToString(),
                this.getRegularParameterDetails(
                    @"Please insert the vehicle's model name.",
                    ParameterChecker.eExpectedInputType.All),
                i_VehicleLicenseNumber,
                this.getRangeParametersDetails(
                    @"Please insert how much energy \ fuel left (0 to 100%) in the vehicle.",
                    k_MinValue,
                    Utilities.k_MaxPercentage),
                this.getRegularParameterDetails(
                    "Please type the tires' manufacture name.",
                    ParameterChecker.eExpectedInputType.All),
                this.getRangeParametersDetails(
                    "Please enter the vehicle's current tire's air pressure.",
                    k_MinValue,
                    Vehicle.GetMaxAirPressure(vehicleType))
            };
            List <ParameterChecker> extraParameterInfo = VehicleFactory.BuildExtraParametersInfo(vehicleType);

            this.getExtraVehicleParameters(vehicleParameters, extraParameterInfo);

            return(vehicleParameters);
        }
示例#3
0
        private Vehicle createNewVehicle(string i_UserPlateNumber)
        {
            bool    isVehicleTypeValid = false;
            Vehicle newVehicle;

            VehicleFactory.eVehicleType newVehicleType = VehicleFactory.eVehicleType.FuelCar;
            string userChoice;

            Console.WriteLine("{0}Please Enter the following information: {0}", Environment.NewLine);
            this.printMultiChoiceList(VehicleFactory.VehicleTypeKey, Enum.GetNames(typeof(VehicleFactory.eVehicleType)));
            this.printEnterChoiceMsg();
            do
            {
                try
                {
                    userChoice         = Console.ReadLine();
                    newVehicleType     = LogicUtils.EnumValidation <VehicleFactory.eVehicleType>(userChoice, VehicleFactory.VehicleTypeKey);
                    isVehicleTypeValid = true;
                }
                catch (Exception exception)
                {
                    Console.WriteLine(exception.Message);
                }
            }while (!isVehicleTypeValid);

            newVehicle = VehicleFactory.CreateVehicle(i_UserPlateNumber, newVehicleType);
            this.setVehicleInfo(newVehicle, newVehicleType);

            return(newVehicle);
        }
示例#4
0
        private VehicleFactory.eVehicleType getVehicleType()
        {
            Console.WriteLine("Please choose vehicle type.");
            printEnumList(new VehicleFactory.eVehicleType());
            string vehicleTypeString = Console.ReadLine();

            VehicleFactory.eVehicleType vehicleType = VehicleFactory.CheckVehicleType(vehicleTypeString);
            return(vehicleType);
        }
示例#5
0
        private VehicleFactory.eVehicleType getVehicleTypeFromUser()
        {
            Console.WriteLine("Please choose vehicle type from the menu below: ");
            printEnumList(new VehicleFactory.eVehicleType());
            string vehicleTypeString = Console.ReadLine();

            VehicleFactory.eVehicleType vehicleType = VehicleFactory.GetVehicleTypeFromStr(vehicleTypeString);
            return(vehicleType);
        }
示例#6
0
        private void setVehicleInfo(Vehicle i_VehicleToUpdate, VehicleFactory.eVehicleType i_vehicleType)
        {
            float currentAirPressure;

            Console.Write("Model: ");
            i_VehicleToUpdate.ModelName            = Console.ReadLine().Trim();
            i_VehicleToUpdate.Energy.CurrentEnergy = this.getNumericInput(i_VehicleToUpdate.Energy.MaxCapacity, string.Format("{0}: ", i_VehicleToUpdate.Energy.EnergyUnits()).ToString());
            currentAirPressure = this.getNumericInput(i_VehicleToUpdate.TiresList[0].MaxAirPressure, "Tires air pressure: ");
            Console.Write("Tiers manufacturer's name: ");
            i_VehicleToUpdate.UpdateTiresInfo(currentAirPressure, Console.ReadLine().Trim());
            this.setVehicleUniqueInfo(i_VehicleToUpdate, i_vehicleType);
        }
示例#7
0
 protected Vehicle(VehicleFactory.eVehicleType i_VehicleType, string i_ModelName, string i_LicenseNumber, Tire[] i_Tires, Engine i_Engine, float i_EnergyPercentageLeft, string i_TireManufactureName, float i_MaxAirPressure, float i_TireCurrentAirPressure)
 {
     r_VehicleType        = i_VehicleType;
     r_ModelName          = i_ModelName;
     r_LicenseNumber      = i_LicenseNumber;
     r_Tires              = i_Tires;
     r_Engine             = i_Engine;
     EnergyPercentageLeft = i_EnergyPercentageLeft;
     for (int currentTire = 0; currentTire < i_Tires.Length; currentTire++)
     {
         Tires[currentTire] = new Tire(i_TireManufactureName, i_MaxAirPressure, i_TireCurrentAirPressure);
     }
 }
示例#8
0
        public EnergySource.eEnergyType GetEnergySourceByVehicleType(VehicleFactory.eVehicleType i_VehicleType)
        {
            EnergySource.eEnergyType energyType;

            if (i_VehicleType == VehicleFactory.eVehicleType.ElectricCar || i_VehicleType == VehicleFactory.eVehicleType.ElectricMotorcycle)
            {
                energyType = EnergySource.eEnergyType.Electric;
            }
            else
            {
                energyType = EnergySource.eEnergyType.Fuel;
            }

            return(energyType);
        }
示例#9
0
 public Car(
     VehicleFactory.eVehicleType i_VehicleType,
     string i_ModelName,
     string i_LicenseNumber,
     Tire[] i_Tires,
     Engine i_Engine,
     float i_EnergyPercentageLeft,
     string i_TireManufactureName,
     float i_TireCurrentAirPressure,
     eCarColors i_CarColor,
     eNumberOfDoors i_NumOfDoors)
     : base(i_VehicleType, i_ModelName, i_LicenseNumber, i_Tires, i_Engine, i_EnergyPercentageLeft, i_TireManufactureName, k_MaxAirPressure, i_TireCurrentAirPressure)
 {
     r_CarColor   = i_CarColor;
     r_NumOfDoors = i_NumOfDoors;
 }
示例#10
0
        private Dictionary <eVehicleInfoParams, string> getVehicleInfoFromUser(string i_LicenseNumber)
        {
            VehicleFactory.eVehicleType             vehicleType       = this.getVehicleTypeFromUser();
            Dictionary <eVehicleInfoParams, string> vehicleParameters = new Dictionary <eVehicleInfoParams, string>
            {
                { eVehicleInfoParams.vehicleType, vehicleType.ToString() },
                { eVehicleInfoParams.modelName, getParameterDetailFromUser(@"Please enter the vehicle's model name: ", ParameterValidator.eValidityTypes.All) },
                { eVehicleInfoParams.licenseNumber, i_LicenseNumber },
                { eVehicleInfoParams.energyPercentageLeft, getParametersAndCheckRange(@"Please insert how much energy \ fuel left (0 to 100%) in the vehicle: ", GarageManager.k_MinPrecentageValue, GarageManager.k_MaxPrecentageValue) },
                { eVehicleInfoParams.wheelManufactureName, getParameterDetailFromUser("Please enter the wheels' manufacture name: ", ParameterValidator.eValidityTypes.All) },
                { eVehicleInfoParams.wheelCurrentAirPressure, getParametersAndCheckRange(@"Please enter the vehicle's current tire's air pressure: ", GarageManager.k_MinPrecentageValue, Vehicle.GetMaxAirPressure(vehicleType)) }
            };

            Dictionary <eVehicleInfoParams, ParameterValidator> extraParameterInfo = VehicleFactory.GetSpecificTypeParamsList(vehicleType);

            setExtraVehicleInfo(vehicleParameters, extraParameterInfo);

            return(vehicleParameters);
        }
示例#11
0
        private void setVehicleUniqueInfo(Vehicle i_VehicleToUpdate, VehicleFactory.eVehicleType i_vehicleType)
        {
            Dictionary <string, string[]> uniqueAttributesDictionary = i_VehicleToUpdate.GetUniqueAtttributesDictionary();
            List <string> userInputAttributes = new List <string>(uniqueAttributesDictionary.Count);
            int           attributeValuesNum;

            foreach (string key in uniqueAttributesDictionary.Keys)
            {
                attributeValuesNum = uniqueAttributesDictionary[key].Length;

                if (attributeValuesNum > 1)
                {
                    this.printMultiChoiceList(key, uniqueAttributesDictionary[key]);
                    this.printEnterChoiceMsg();
                }
                else
                {
                    Console.Write("Enter {0}: ", key);
                }

                this.setVehicleUniquePropertyInput(i_VehicleToUpdate, key);
            }
        }
示例#12
0
 public Truck(VehicleFactory.eVehicleType i_VehicleType, string i_ModelName, string i_LicenseNumber, Tire[] i_Tires, Engine i_Engine, float i_EnergyPercentageLeft, string i_TireManufactureName, float i_TireCurrentAirPressure, float i_MaxCarryingWeight, bool i_IsContainingHazardMaterials)
     : base(i_VehicleType, i_ModelName, i_LicenseNumber, i_Tires, i_Engine, i_EnergyPercentageLeft, i_TireManufactureName, k_MaxAirPressure, i_TireCurrentAirPressure)
 {
     r_MaxCarryingWeight         = i_MaxCarryingWeight;
     IsContainingHazardMaterials = i_IsContainingHazardMaterials;
 }
示例#13
0
 public Vehicle CreateVehicle(VehicleFactory.eVehicleType i_VehicleType, string i_Model, string i_LicensePlate, string i_WheelManufacturer, float i_CurentAirPreasure, float i_CurrentEnergy)
 {
     return(m_vehicleCreator.CreateVehicle(i_VehicleType, i_Model, i_LicensePlate, i_WheelManufacturer, i_CurentAirPreasure, i_CurrentEnergy));
 }
示例#14
0
 public Bike(VehicleFactory.eVehicleType i_VehicleType, string i_ModelName, string i_LicenseNumber, Tire[] i_Tires, Engine i_Engine, float i_EnergyPercentageLeft, string i_TireManufactureName, float i_TireCurrentAirPressure, eLicenseType i_LicenseType, float i_EngineCapacity)
     : base(i_VehicleType, i_ModelName, i_LicenseNumber, i_Tires, i_Engine, i_EnergyPercentageLeft, i_TireManufactureName, k_MaxAirPressure, i_TireCurrentAirPressure)
 {
     r_LicenseType    = i_LicenseType;
     r_EngineCapacity = i_EngineCapacity;
 }