Пример #1
0
        public bool FillFuelToMax(Vehicle i_VehicleToActOn, eEngineType i_EngineTypeBasedOnMethodUse, eFuelType i_TypeOfFuelToAdd, float i_AmountOfFuel)
        {
            bool resultOfFuel = false;

            switch (i_EngineTypeBasedOnMethodUse)
            {
            case eEngineType.Fuel:
                FuelEngine currentFuelEngine = m_VehicleInGarage.VehicleEngine as FuelEngine;
                resultOfFuel = currentFuelEngine.ChargeEnergyIfPossible(i_AmountOfFuel, i_TypeOfFuelToAdd);
                break;

            case eEngineType.Electric:
                ElectricEngine currentElectricEngine = m_VehicleInGarage.VehicleEngine as ElectricEngine;
                resultOfFuel = currentElectricEngine.ChargeEnergyIfPossible(i_AmountOfFuel);
                break;
            }

            if (resultOfFuel)
            {
                i_VehicleToActOn.PercentOfEnergyLeft = 100;
                i_VehicleToActOn.VehicleEngine.CurrentAmountOfEnergy = i_VehicleToActOn.VehicleEngine.MaxAmountOfEnergy;
            }

            return(resultOfFuel);
        }
Пример #2
0
        public static eEngineType GetTypeOfEngine()
        {
            string vehicleTypeToCheck = Console.ReadLine();

            while (true)
            {
                try
                {
                    eEngineType eTypeOfEngineFromUser = (eEngineType)Enum.Parse(typeof(eEngineType), vehicleTypeToCheck);
                    if ((int)eTypeOfEngineFromUser > (int)Enum.GetValues(typeof(eEngineType)).Cast <eEngineType>().Last())
                    {
                        throw new ValueOutOfRangeException(2, 1);
                    }

                    return(eTypeOfEngineFromUser);
                }
                catch (ArgumentException ex)
                {
                    Console.WriteLine(@"Wrong input due to {0} , please enter electric(1)/fuel(2)", ex.Message);
                    vehicleTypeToCheck = Console.ReadLine();
                }
                catch (ValueOutOfRangeException ex)
                {
                    Console.WriteLine(ex.Message);
                    vehicleTypeToCheck = Console.ReadLine();
                }
            }
        }
Пример #3
0
 public void RefuelVehicl(float i_EnergyAmount, int i_EngineType, string i_LicenseNumber)
 {
     if (r_AllVehiclesInfo != null && r_AllVehiclesInfo.ContainsKey(i_LicenseNumber))
     {
         FuelEngine fuelEngine = r_AllVehiclesInfo[i_LicenseNumber].OwenersVehicle.Engine as FuelEngine;
         if (fuelEngine != null)
         {
             eEngineType engineType = (eEngineType)i_EngineType;
             if (engineType == fuelEngine.CurrentEngineType)
             {
                 r_AllVehiclesInfo[i_LicenseNumber].OwenersVehicle.Engine.AddEnergy(engineType, i_EnergyAmount);
             }
             else
             {
                 throw new ArgumentException(string.Format("This vehicle cannot refuel by {0}", engineType.ToString()));
             }
         }
         else
         {
             throw new ArgumentException("This vehicle does not have a fuel engine");
         }
     }
     else
     {
         throw new ArgumentException("This vehicle is not in our garage");
     }
 }
Пример #4
0
            public bool CheckIfVehicleExists(int i_UserCarChoice, int i_UserEngineChoice, string i_LicenseID)
            {
                eVehicleType vehicleChoice = (eVehicleType)i_UserCarChoice;
                eEngineType  engineChoice  = 0;

                engineChoice = (eEngineType)i_UserEngineChoice;

                bool isCarExists = false;

                if (m_Vehicles != null)
                {
                    foreach (VehicleInTheGarage vehicle in m_Vehicles)
                    {
                        if (vehicle.Vehicle.LicenseID == i_LicenseID)
                        {
                            if (vehicle.StatusOfVehicle != eStatusVehicle.Repair)
                            {
                                vehicle.StatusOfVehicle = eStatusVehicle.Repair;
                            }

                            isCarExists = true;
                            break;
                        }
                    }
                }

                return(isCarExists);
            }
        public static Engine ParseEngine(eEngineType i_EngineType, float i_FuelAmount)
        {
            Engine result;

            result = i_EngineType == eEngineType.Electric ? ParseElectricEngine() : ParseFuelEngine();

            return(result);
        }
        public static Engine ParseEngine(eEngineType i_EngineType, float i_FuelAmount)
        {
            Engine result;

            result = i_EngineType == eEngineType.Electric ? ParseElectricEngine() : ParseFuelEngine();

            return result;
        }
Пример #7
0
        internal Engine(eEngineType i_EngineType, float i_EnergyLeft, Vehicle.eVehicleType i_VehicleType)
        {
            m_EngineType        = i_EngineType;
            m_CurrentLeftEnergy = i_EnergyLeft;

            switch (m_EngineType)
            {
            case eEngineType.Fuel:
                switch (i_VehicleType)
                {
                case Vehicle.eVehicleType.Car:
                    m_MaxEnergyCapacity = 45;
                    m_EnergyType        = eEnergyType.Octan98;
                    break;

                case Vehicle.eVehicleType.Motorcycle:
                    m_MaxEnergyCapacity = 6;
                    m_EnergyType        = eEnergyType.Octan96;
                    break;

                case Vehicle.eVehicleType.Truck:
                    m_MaxEnergyCapacity = 115;
                    m_EnergyType        = eEnergyType.Octan96;
                    break;

                default:
                    throw new ArgumentException();
                }
                break;

            case eEngineType.Electric:
                switch (i_VehicleType)
                {
                case Vehicle.eVehicleType.Car:
                    m_MaxEnergyCapacity = 3.2f;
                    m_EnergyType        = eEnergyType.Electricity;
                    break;

                case Vehicle.eVehicleType.Motorcycle:
                    m_MaxEnergyCapacity = 1.8f;
                    m_EnergyType        = eEnergyType.Electricity;
                    break;

                default:
                    throw new ArgumentException();
                }
                break;
            }

            if (m_CurrentLeftEnergy > m_MaxEnergyCapacity)
            {
                throw new ArgumentException();
            }

            updateEnergyPercentge();
        }
Пример #8
0
        public void GetRequiredDetailsForNewVehicle(eVehicleType i_VehicleChoice, eEngineType i_EngineChoice, string i_LicenseID)
        {
            string modelName = null, wheelManufac = null, vehicleOwner = null, ownerPhone = null;
            float  energyLeft = 0, currentAirPressure = 0;

            m_ConsoleUtils.PrintCurrentAirPressureEnergy(ref currentAirPressure, 0);
            m_ConsoleUtils.PrintEnergyLeftQuestion(ref energyLeft, 0);
            m_ConsoleUtils.PrintModelNameQuestion(ref modelName);
            m_ConsoleUtils.PrintWheelManufacQuestion(ref wheelManufac);
            m_ConsoleUtils.PrintVehicleOwnerPhoneQuestion(ref ownerPhone);
            m_ConsoleUtils.PrintVehicleOwnerQuestion(ref vehicleOwner);
            m_GarageManager.CreateNewVehicleUtils.CreateNewVehicle(m_GarageManager.Vehicles, i_VehicleChoice, i_EngineChoice, i_LicenseID, modelName, wheelManufac, vehicleOwner, ownerPhone, energyLeft, currentAirPressure);
            try
            {
                switch (i_VehicleChoice)
                {
                case eVehicleType.Bike:
                    int licenseType = 0, engineVolume = 0;
                    m_ConsoleUtils.PrintBikeEngineVolumeQuestion(ref engineVolume, 0);
                    m_ConsoleUtils.PrintLicenseTypeChoicesQuestion(ref licenseType, 0);
                    m_GarageManager.SetBikeUniqDetails(engineVolume, licenseType);
                    break;

                case eVehicleType.Car:
                    int carColor = 0, carNumOfDoors = 0;
                    m_ConsoleUtils.PrintCarColorQuestion(ref carColor, 0);
                    m_ConsoleUtils.PrintCarNumOfDoorsQuestion(ref carNumOfDoors, 0);
                    m_GarageManager.SetCarUniqDetails(carColor, carNumOfDoors);
                    break;

                case eVehicleType.Truck:
                    bool  isTruckTrunkCool = false;
                    float truckTrunkVolume = 0;
                    m_ConsoleUtils.PrintTruckBoxVolume(ref truckTrunkVolume, 0);
                    m_ConsoleUtils.PrintTruckTrunkCoolQuestion(ref isTruckTrunkCool, 0);
                    m_GarageManager.SetTrunkUniqDetails(isTruckTrunkCool, truckTrunkVolume);
                    break;

                default:
                    break;
                }
            }
            catch (FormatException)
            {
                m_ConsoleUtils.PrintMessgeNotExistInMenu();
            }
        }
Пример #9
0
        void InstallEngine(eEngineType i_EngineType, eFuelType?i_FuelType, float i_EngineMaxEnergy)
        {
            Engine engine;

            if (i_EngineType == eEngineType.Fuel)
            {
                engine = new FuelEngine((eFuelType)i_FuelType);
            }
            else
            {
                engine = new ElectricEngine();
            }

            engine.EnergySourceMaximumAmount = i_EngineMaxEnergy;

            m_CreatedVehicle.Engine = engine;
        }
        public static Vehicle CreateVehicle(eVehicleType i_VehicleType, eEngineType i_EngineType)
        {
            Vehicle createdVehicle = null;

            switch (i_EngineType)
            {
            case eEngineType.Fuel:
                createdVehicle = createFuelVehicle(i_VehicleType);
                break;

            case eEngineType.Electric:
                createdVehicle = createElectricVehicle(i_VehicleType);
                break;
            }

            return(createdVehicle);
        }
Пример #11
0
        public static string StringFromType(eEngineType i_EngineType)
        {
            string result;

            switch (i_EngineType)
            {
                case eEngineType.Electric:
                    result = "Electric Engine";
                    break;
                    case eEngineType.Fuel:
                    result = "Fuel Engine";
                    break;
                default:
                    throw new ArgumentException("Unknown engine type");
            }

            return result;
        }
Пример #12
0
        public override void AddEnergy(eEngineType i_FuelType, float i_FuelAmountToAdd)
        {
            eEngineType checkIfCurentFuelType = (eEngineType)i_FuelType;

            if (checkIfCurentFuelType == m_FuelType)
            {
                if (i_FuelAmountToAdd + CurrenteEnergy <= MaxEnergy)
                {
                    CurrenteEnergy += i_FuelAmountToAdd;
                }
                else
                {
                    throw new ValueOutOfRangeException(0, MaxEnergy, "Amount of fuel is out of range");
                }
            }
            else
            {
                throw new ArgumentException("Wrong fuel type");
            }
        }
Пример #13
0
 public VehiclePreset(
     int i_PresetNumber,
     string i_PresetDescription,
     eVehicleTypes i_VehicleType,
     int i_NumberOfWheels,
     float i_WheelsMaxPressure,
     eEngineType i_EngineType,
     eFuelType?i_FuelType,
     float i_EngineMaxEnergy
     )
 {
     m_PresetNumber      = i_PresetNumber;
     m_PresetDescription = i_PresetDescription;
     m_VehicleType       = i_VehicleType;
     m_EngineType        = i_EngineType;
     m_FuelType          = i_FuelType;
     m_EngineMaxEnergy   = i_EngineMaxEnergy;
     m_NumberOfWheels    = i_NumberOfWheels;
     m_WheelsMaxPressure = i_WheelsMaxPressure;
 }
Пример #14
0
        public static string StringFromType(eEngineType i_EngineType)
        {
            string result;

            switch (i_EngineType)
            {
            case eEngineType.Electric:
                result = "Electric Engine";
                break;

            case eEngineType.Fuel:
                result = "Fuel Engine";
                break;

            default:
                throw new ArgumentException("Unknown engine type");
            }

            return(result);
        }
Пример #15
0
        private static Motorcycle CreateMotorCycle(
            string i_EngineType, string i_LicenseType, float i_EngineCC, string i_Model, string i_LicenseNumber,
            float i_EnergyLevel, string i_Manufacturer, float i_AirPreasure)
        {
            List <Wheel> wheels                 = Car.CreateCarWheels(i_Manufacturer, i_AirPreasure);
            Engine       motorcycleEngine       = null;
            eEngineType  engineTypeParsedToEnum = ParseStringToEngineTypeEnum(i_EngineType);

            switch (engineTypeParsedToEnum)
            {
            case eEngineType.Electric:
                motorcycleEngine = CreateElectricEngine(k_MotorCycleBatteryCapacity, i_EnergyLevel);
                break;

            case eEngineType.Fuel:
                motorcycleEngine = CreateFuelEngine(k_MotorCycleFuelCapacity, i_EnergyLevel, eFuelType.Octan95);
                break;
            }
            return(new Motorcycle(ParseStringToLicenseTypeEnum(i_LicenseType), motorcycleEngine, i_EngineCC, i_Model, i_LicenseNumber, wheels));
        }
Пример #16
0
        private static Car CreateCar(
            string i_EngineType, string i_Color, string i_NumOfDoors,
            string i_Model, string i_LicenseNumber, float i_EnergyLevel, string i_WheelManufacturer, float i_AirPreasure)
        {
            List <Wheel> wheels    = Car.CreateCarWheels(i_WheelManufacturer, i_AirPreasure);
            Engine       carEngine = null;

            eEngineType engineTypeParsedToEnum = ParseStringToEngineTypeEnum(i_EngineType);

            switch (engineTypeParsedToEnum)
            {
            case eEngineType.Electric:
                carEngine = CreateElectricEngine(k_CarBatteryCapacity, i_EnergyLevel);
                break;

            case eEngineType.Fuel:
                carEngine = CreateFuelEngine(k_CarFuelCapacity, i_EnergyLevel, eFuelType.Octan98);
                break;
            }
            return(new Car(ParseStringToColorTypeEnum(i_Color), carEngine, ParseStringToNumberOfDoorsTypeEnum(i_NumOfDoors), i_Model, i_LicenseNumber, wheels));
        }
Пример #17
0
        public override void AddEnergy(eEngineType i_ElectricType, float i_EnergyAmountToAdd)
        {
            eEngineType checkIfCurentFuelType = (eEngineType)i_ElectricType;

            if (checkIfCurentFuelType == m_ElectricType)
            {
                {
                    if (i_EnergyAmountToAdd + CurrenteEnergy <= MaxEnergy)
                    {
                        CurrenteEnergy += i_EnergyAmountToAdd;
                    }
                    else
                    {
                        throw new ValueOutOfRangeException(0, MaxEnergy, "Amount of energy is out of range");
                    }
                }
            }
            else
            {
                throw new ArgumentException("Not electric type");
            }
        }
Пример #18
0
 internal ElectricEngine(eEngineType io_ElectricType, float io_MaxAmountOfEnergy)
     : base(io_ElectricType, io_MaxAmountOfEnergy)
 {
     m_ElectricType = io_ElectricType;
 }
Пример #19
0
 public Engine(float i_MaxEnergyCapacity, eEngineType i_EngineType)
 {
     r_MaxEnergyCapacity = i_MaxEnergyCapacity;
     r_EngineType        = i_EngineType;
 }
Пример #20
0
 public Engine(eEngineType i_EngineType, float i__MaxEnergyCapacity)
 {
     r_EngineType        = i_EngineType;
     r_MaxEnergyCapacity = i__MaxEnergyCapacity;
 }
Пример #21
0
 public Engine(float i_MaxEnergy, float i_EnergyLeft, eEngineType i_EngineType)
 {
     this.m_EnergyLeft    = i_EnergyLeft;
     this.m_MaximumEnergy = i_MaxEnergy;
     this.m_Enginetype    = i_EngineType;
 }
Пример #22
0
        public void CreateNewVehicle(List <VehicleInTheGarage> io_VehiclesInGarage, eVehicleType i_VehicleType, eEngineType i_EngineType, string i_LicenseID, string i_ModelName, string i_WheelManufac, string i_OwnerName, string i_OwnerPhoneNumber, float i_EnergyLeft, float i_CurrAirPressure)
        {
            if (i_EngineType == eEngineType.Gas)
            {
                switch (i_VehicleType)
                {
                case eVehicleType.Bike:
                    io_VehiclesInGarage.Add(new VehicleInTheGarage(new Bike(i_ModelName, i_LicenseID, new GasEngine(k_BikeGasType, k_BikeMaximumAmountOfGas, i_EnergyLeft), i_WheelManufac, i_CurrAirPressure), i_OwnerName, i_OwnerPhoneNumber));
                    break;

                case eVehicleType.Car:
                    io_VehiclesInGarage.Add(new VehicleInTheGarage(new Car(i_ModelName, new GasEngine(k_CarGasType, k_CarMaximumAmountOfGas, i_EnergyLeft), i_LicenseID, i_WheelManufac, i_CurrAirPressure), i_OwnerName, i_OwnerPhoneNumber));
                    break;

                case eVehicleType.Truck:
                    io_VehiclesInGarage.Add(new VehicleInTheGarage(new Truck(i_ModelName, new GasEngine(k_TruckGasType, k_TruckMaximumAmountOfGas, i_EnergyLeft), i_LicenseID, i_WheelManufac, i_CurrAirPressure), i_OwnerName, i_OwnerPhoneNumber));
                    break;
                }
            }
            else
            {
                switch (i_VehicleType)
                {
                case eVehicleType.Bike:
                    io_VehiclesInGarage.Add(new VehicleInTheGarage(new Bike(i_ModelName, i_LicenseID, new ElectricEngine(k_CarMaximumAmountOfElectric, i_EnergyLeft), i_WheelManufac, i_CurrAirPressure), i_OwnerName, i_OwnerPhoneNumber));
                    break;

                case eVehicleType.Car:
                    io_VehiclesInGarage.Add(new VehicleInTheGarage(new Car(i_ModelName, new ElectricEngine(k_CarMaximumAmountOfElectric, i_EnergyLeft), i_LicenseID, i_WheelManufac, i_CurrAirPressure), i_OwnerName, i_OwnerPhoneNumber));
                    break;
                }
            }
        }
Пример #23
0
 internal EngineType(eEngineType i_EngineType, float i_MaxEnergy)
 {
     r_EngineType = i_EngineType;
     r_MaxEnergy  = i_MaxEnergy;
 }
Пример #24
0
 protected Engine(eEngineType i_EngineType, float i_CurrentEnergyQuantity, float i_MaxEnergyQuantity)
 {
     r_EngineType            = i_EngineType;
     m_CurrentEnergyQuantity = i_CurrentEnergyQuantity;
     r_MaxEnergyQuantity     = i_MaxEnergyQuantity;
 }
Пример #25
0
 internal Engine(eEngineType i_EngineType)
 {
     EngineType = i_EngineType;
     MaxEnergy  = 0;
 }
Пример #26
0
 public ElectricEngine(float i_MaxEnergy, float i_EnergyLeft, eEngineType i_EngineType) :
     base(i_MaxEnergy, i_EnergyLeft, i_EngineType)
 {
 }
Пример #27
0
 internal Engine(eEngineType i_EngineType, float i_MaximumEnergySourceCapacity)
 {
     r_EngineType      = i_EngineType;
     r_MaximumCapacity = i_MaximumEnergySourceCapacity;
 }
Пример #28
0
 internal FuelEngine(eEngineType io_FuelType, float io_MaxAmountOfFuel) : base(io_FuelType, io_MaxAmountOfFuel)
 {
     m_FuelType = io_FuelType;
 }
Пример #29
0
 public virtual void AddEnergy(eEngineType i_Type, float i_EnergyAmountToAdd)
 {
 }
Пример #30
0
 public FuelEngine(float i_MaxEnergy, float i_EnergyLeft, eEngineType i_EngineType, eFuelType i_FuelType) :
     base(i_MaxEnergy, i_EnergyLeft, i_EngineType)
 {
     this.r_FuelType = i_FuelType;
 }