Ejemplo n.º 1
0
        public static Vehicle GenerateVehicle(Enums.eVehicleType i_VehicleType, Dictionary <string, object> i_Properties)
        {
            Vehicle      vehicle = null;
            List <Wheel> wheels  = buildWheels(i_Properties.Values);

            switch (i_VehicleType)
            {
            case Enums.eVehicleType.FuelMotorcycle:
                vehicle = createFuelMotorcycle(i_Properties, wheels);
                break;

            case Enums.eVehicleType.ElectricMotorcycle:
                vehicle = createElectricMotorcycle(i_Properties, wheels);
                break;

            case Enums.eVehicleType.FuelCar:
                vehicle = createFuelCar(i_Properties, wheels);
                break;

            case Enums.eVehicleType.ElectricCar:
                vehicle = createElectricCar(i_Properties, wheels);
                break;

            case Enums.eVehicleType.FuelTruck:
                vehicle = createFuelTruck(i_Properties, wheels);
                break;
            }

            return(vehicle);
        }
Ejemplo n.º 2
0
        // Add new vehicle by type to the vehicle list, if the vehicle all ready exist, change his status to InRepair
        public void AddNewVehicle(string i_LicenseNumber, Enums.eVehicleType i_VehicleKind)
        {
            Vehicle NewVehicle;

            if (m_ListOfVehicles.ContainsKey(i_LicenseNumber))
            {
                m_ListOfVehicles[i_LicenseNumber].VehicleStatus = Enums.eVehicleStatus.InRepair;

                throw new Exception("Vehicle all ready exist, status changed to in repair");
            }
            else
            {
                NewVehicle = VehicleCreator.CreateNewVehicle(i_LicenseNumber, i_VehicleKind);
                m_ListOfVehicles.Add(i_LicenseNumber, NewVehicle);
            }
        }
Ejemplo n.º 3
0
        // Create new Vehicle object depends in the Vehicle type, return new vehicle
        //Polimorphism?
        public static Vehicle CreateNewVehicle(string i_LicenseNumber, Enums.eVehicleType i_VehicleKind)
        {
            Vehicle o_NewVehicle = null; //remove null later

            switch (i_VehicleKind)
            {
            case Enums.eVehicleType.FuelCar:
            {
                // = new Car(i_LicenseNumber, new FuelEngine());
                break;
            }

            case Enums.eVehicleType.ElectricCar:
            {
                //o_NewVehicle = new Car(i_LicenseNumber, new ElectricEngine());
                break;
            }

            case Enums.eVehicleType.FuelMotorcycle:
            {
                //o_NewVehicle = new Motorcycle(i_LicenseNumber, new FuelEngine());
                break;
            }

            case Enums.eVehicleType.ElectricMotorcycle:
            {
                // o_NewVehicle = new Motorcycle(i_LicenseNumber, new ElectricEngine());
                break;
            }

            case Enums.eVehicleType.Truck:
            {
                // o_NewVehicle = new Truck(i_LicenseNumber, new FuelEngine());
                break;
            }

            default:
            {
                o_NewVehicle = null;
                break;
            }
            }

            return(o_NewVehicle);
        }
Ejemplo n.º 4
0
        public object CreateGarageObject(object[] i_Parameters, Type i_Type, Type i_VehicleType)
        {
            object obj;

            Enums.eVehicleType vehicleType = (Enums.eVehicleType)Enum.Parse(typeof(Enums.eVehicleType), i_VehicleType.Name);

            if (i_Type == typeof(Wheel))
            {
                float           maxEnergy = (float)VehiclesDefualtConfigurations.sr_DefaultDictionary[vehicleType]["Maximum Air Pressure"];
                ConstructorInfo ci        = i_Type.GetConstructors()[0];
                i_Parameters[i_Parameters.Length - 1] = maxEnergy;
                obj = new Wheel((string)i_Parameters[0], (float)i_Parameters[1], (float)i_Parameters[2]);
            }
            if (i_Type == typeof(ElectricEngine))
            {
                float           maxEnergy = (float)VehiclesDefualtConfigurations.sr_DefaultDictionary[vehicleType]["Maximum Energy"];
                ConstructorInfo ci        = i_Type.GetConstructors()[0];
                i_Parameters[i_Parameters.Length - 1] = maxEnergy;
                obj = new ElectricEngine((float)i_Parameters[0], (float)i_Parameters[1]);
            }
            else if (i_Type == typeof(FuelEngine))
            {
                Enums.eFuelTypes fuelType  = (Enums.eFuelTypes)VehiclesDefualtConfigurations.sr_DefaultDictionary[vehicleType]["Fuel Type"];
                float            maxEnergy = (float)VehiclesDefualtConfigurations.sr_DefaultDictionary[vehicleType]["Maximum Energy"];
                ConstructorInfo  ci        = i_Type.GetConstructors()[0];
                i_Parameters[i_Parameters.Length - 2] = maxEnergy;
                i_Parameters[i_Parameters.Length - 1] = fuelType;
                obj = new FuelEngine((float)i_Parameters[0], (float)i_Parameters[1], (Enums.eFuelTypes)i_Parameters[2]);
            }
            else
            {
                ConstructorInfo ci = i_Type.GetConstructors()[0];
                obj = ci.Invoke(i_Parameters);
            }

            return(obj);
        }
Ejemplo n.º 5
0
        public Dictionary <string, Type> GetEmptyDictionary(Type i_Type)
        {
            Dictionary <string, Type> vehicleConfiguration = new Dictionary <string, Type>();
            ConstructorInfo           constructorTypeInfo  = i_Type.GetConstructors()[0];

            Enums.eVehicleType vehicleType = (Enums.eVehicleType)Enum.Parse(typeof(Enums.eVehicleType), i_Type.Name);

            foreach (ParameterInfo instanceParameter in constructorTypeInfo.GetParameters())
            {
                if (instanceParameter.ParameterType == typeof(List <Wheel>))
                {
                    for (int i = 0; i < (int)VehiclesDefualtConfigurations.sr_DefaultDictionary[vehicleType]["Number Of Wheels"]; i++)
                    {
                        vehicleConfiguration.Add(string.Format("Wheel {0}", i + 1), typeof(Wheel));
                    }
                }
                else
                {
                    vehicleConfiguration.Add(instanceParameter.Name, instanceParameter.ParameterType);
                }
            }

            return(vehicleConfiguration);
        }