public static Truck CreateTruck(string i_LicensePlate, string i_Model, Dictionary <eVehicleData, string> i_DataMemory, Dictionary <Vehicle.eWheelData, string> i_Wheel, Energy.eEnergyType i_EnergyType)
        {
            checkNumericStrings(i_DataMemory[eVehicleData.CargoVolume], i_DataMemory[eVehicleData.AmountOfFuelLeft]);
            bool  isHavingHazardousMeterials = Truck.parseHazardousMeterials(i_DataMemory[eVehicleData.HavingHazardousMeterials]);
            float cargoVolume = float.Parse(i_DataMemory[eVehicleData.CargoVolume]);

            Energy energyType = new RegularEnergy(RegularEnergy.eFuelType.Soler, float.Parse(i_DataMemory[eVehicleData.AmountOfFuelLeft]), k_RegularTruckFullTank);

            return(new Truck(isHavingHazardousMeterials, cargoVolume, i_Model, i_LicensePlate, i_Wheel, energyType));
        }
        public static Motorcycle CreateMotorCycle(string i_LicensePlate, string i_Model, Dictionary <eVehicleData, string> i_DataMemory, Dictionary <Vehicle.eWheelData, string> i_Wheel, Energy.eEnergyType i_EnergyType)
        {
            checkNumericStrings(i_DataMemory[eVehicleData.EngineCapacity]);
            Motorcycle.eLicenseType licenceType = Motorcycle.parseLicenseType(i_DataMemory[eVehicleData.LicenceType]);
            int    engineCapacity = int.Parse(i_DataMemory[eVehicleData.EngineCapacity]);
            Energy energyType     = null;

            if (i_EnergyType == Energy.eEnergyType.Regular)
            {
                checkNumericStrings(i_DataMemory[eVehicleData.AmountOfFuelLeft]);
                energyType = new RegularEnergy(RegularEnergy.eFuelType.Octan95, float.Parse(i_DataMemory[eVehicleData.AmountOfFuelLeft]), k_RegularMotorcycleFullTank);
            }
            else if (i_EnergyType == Energy.eEnergyType.Electric)
            {
                checkNumericStrings(i_DataMemory[eVehicleData.HoursLeftInBattery]);
                energyType = new ElectricEnergy(float.Parse(i_DataMemory[eVehicleData.HoursLeftInBattery]), k_ElectricMotorcycleMaxBatteryHourTime);
            }

            return(new Motorcycle(licenceType, engineCapacity, i_Model, i_LicensePlate, i_Wheel, energyType));
        }
        public static Car CreateCar(string i_LicensePlate, string i_Model, Dictionary <eVehicleData, string> i_DataMemory, Dictionary <Vehicle.eWheelData, string> i_Wheel, Energy.eEnergyType i_EnergyType)
        {
            checkNumericStrings(i_DataMemory[eVehicleData.NumOfDoors]);
            Car.eColorType color      = Car.parseColor(i_DataMemory[eVehicleData.Color]);
            int            numOfDoors = Car.parseNumOfDoors(i_DataMemory[eVehicleData.NumOfDoors]);
            Energy         energyType = null;

            if (i_EnergyType == Energy.eEnergyType.Regular)
            {
                checkNumericStrings(i_DataMemory[eVehicleData.AmountOfFuelLeft]);
                energyType = new RegularEnergy(RegularEnergy.eFuelType.Octan96, float.Parse(i_DataMemory[eVehicleData.AmountOfFuelLeft]), k_RegualrCarFullTank);
            }
            else if (i_EnergyType == Energy.eEnergyType.Electric)
            {
                checkNumericStrings(i_DataMemory[eVehicleData.HoursLeftInBattery]);
                energyType = new ElectricEnergy(float.Parse(i_DataMemory[eVehicleData.HoursLeftInBattery]), k_ElectricCarMaxBatteryHourTime);
            }

            return(new Car(color, numOfDoors, i_Model, i_LicensePlate, i_Wheel, energyType));
        }
        public void FuelRegularVehicle(string i_LicenseNumber, string i_FuelType, string i_AmountToFuel)
        {
            RegularEnergy vehicleEnergy = m_VehiclesInGarage[i_LicenseNumber].Vehicle.Energy as RegularEnergy;

            RegularEnergy.eFuelType fuelType = RegularEnergy.parseFuelType(i_FuelType);
            float amountToFuel;
            bool  res = float.TryParse(i_AmountToFuel, out amountToFuel);

            if (vehicleEnergy == null)
            {
                throw new ArgumentException("The vehicle isn't using Fuel");
            }

            if (res && vehicleEnergy.r_FuleType == fuelType)
            {
                vehicleEnergy.fuel(amountToFuel);
                m_VehiclesInGarage[i_LicenseNumber].Vehicle.updatePecentageOfEnergy();
            }
            else
            {
                throw new ArgumentException("Wrong type of fuel for fueling");
            }
        }