public static Vehicle CreateNewVehicle(eVehicleType i_VehicleType, eEnergySourceType i_EnergySourceType, float i_CurrentEnergyAmount, string i_VehicleModelName, string i_WheelsManufacturerName, string i_LicensePlate, float i_CurrentAirPressure, params object[] i_SpecificVehicleParams) { VehicleInfo vehicleInfo = getVehicleInfo(i_VehicleType, i_VehicleModelName, i_WheelsManufacturerName, i_LicensePlate, i_SpecificVehicleParams); EnergySource energySource = getEnergySource(i_VehicleType, i_EnergySourceType, i_CurrentEnergyAmount); Vehicle resultVehicle = getVehicle(i_VehicleType, vehicleInfo, energySource, i_CurrentAirPressure); return(resultVehicle); }
private static EnergySource getEnergySource(eVehicleType i_VehicleType, eEnergySourceType i_EnergySourceType, float i_CurrentEnergyAmount) { EnergySource energySource; switch (i_EnergySourceType) { case eEnergySourceType.Fuel: energySource = new FuelEnergySource(i_CurrentEnergyAmount, getFuelEnergyFillingInfoByVehicleType(i_VehicleType)); break; case eEnergySourceType.Electricity: energySource = new ElectricEnergySource(i_CurrentEnergyAmount, getElectricityEnergyFillingInfoByVehicleType(i_VehicleType)); break; default: throw new ArgumentOutOfRangeException("i_EnergySourceType"); } return(energySource); }