Esempio n. 1
0
 /// <summary>
 /// 是否相等
 /// </summary>
 /// <param name="electric"></param>
 /// <returns></returns>
 public bool IsEqual(IElectric electric)
 {
     if (m_quantity == electric.Quantity && m_position == electric.Position)
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
Esempio n. 2
0
        public static void Main(string[] args)
        {
            // Register car factories with factory finder
            CarInstaller.install();

            // Access factory finder
            var finder = FactoryFinder.getInstance();

            try
            {
                IFactory  factory = null;
                IDiesel   dCar    = null;
                IElectric eCar    = null;
                IHybrid   hCar    = null;

                factory = finder.findFactory(InterfaceID.ID_Diesel);
                dCar    = (IDiesel)factory.create();
                dCar.fuel();

                factory = finder.findFactory(InterfaceID.ID_Electric);
                eCar    = (IElectric)factory.create();
                eCar.charge();

                factory = finder.findFactory(InterfaceID.ID_Hybrid);
                dCar    = (IDiesel)factory.create();
                dCar.fuel();
                eCar = (IElectric)dCar.getExtension(InterfaceID.ID_Electric);
                eCar.charge();

                factory = finder.findFactory(InterfaceID.ID_Hybridic);
                hCar    = (IHybrid)factory.create();
                hCar.fuel();
                hCar.charge();

                // oder mit Rollenwechsel
                ICar car = null;
                factory = finder.findFactory(InterfaceID.ID_Hybrid); // supports only IDiesel und IElectric
                car     = factory.create();
                ((IDiesel)car).fuel();
                ((IElectric)car).charge();

                car = car.getExtension(InterfaceID.ID_Diesel);  // Role ID_Diesel
                ((IDiesel)car).fuel();

                car = car.getExtension(InterfaceID.ID_Electric); // Role ID_Electric
                ((IElectric)car).charge();

                // car = car.getExtension(InterfaceID.ID_Hybrid);  // UnknownExtensionException: IHybrid not supported
                // ((IDiesel) car).fuel();
                // ((IElectric) car).charge();

                // car = car.getExtension(InterfaceID.ID_Hybridic); // UnknownExtensionException: IHybridic not supported
                // ((IHybrid) car).fuel();
                // ((IHybrid) car).charge();

                /* Result
                 *
                 *  Filled up with Diesel
                 *  Charged with Electricity
                 *  Filled up with Diesel
                 *  Charged with Electricity
                 *  Filled up with Diesel
                 *  Charged with Electricity
                 *  Filled up with Diesel
                 *  Charged with Electricity
                 *  Filled up with Diesel
                 *  Charged with Electricity
                 *
                 */
            }
            catch (UnknownExtensionException ex)
            {
                Console.WriteLine(ex);
                throw;
            }
        }
Esempio n. 3
0
        /// <summary>
        /// 生产单根电场线绘制器
        /// </summary>
        /// <param name="startPoint">起点</param>
        /// <param name="parent">父物体</param>
        /// <param name="delta">步进值</param>
        /// <param name="minDistance">最小距离</param>
        /// <param name="maxDistance">最大距离</param>
        /// <param name="genertateElectic">生成该电场线的点电荷</param>
        /// <param name="electricsList">所有的点电荷</param>
        /// <returns></returns>
        private IFieldLineRenderer CreateFieldLineRender(Vector3 startPoint, Transform parent, float delta,
                                                         float minDistance, float maxDistance, IElectric genertateElectic, List <Transform> electricsList)
        {
            var obj = Resources.Load <GameObject>(FL_RENDERER_PATH);

            if (obj == null)
            {
                throw new System.Exception("Wrong Path :" + FL_RENDERER_PATH);
            }
            var renderer = Instantiate(obj, startPoint, Quaternion.identity, parent).GetComponent <IFieldLineRenderer>();

            renderer.SetDelta(delta);
            //renderer.SetMaximumIntensity(max_Intensity);
            //renderer.SetMinimumIntensity(min_intensity);
            renderer.SetMinDistance(minDistance);
            renderer.SetMaxDistance(maxDistance);
            renderer.SetGenertateElectric(genertateElectic.transform);
            renderer.SetSign(Mathf.Sign(genertateElectic.Quantity));
            renderer.SetElectricsList(electricsList);
            return(renderer);
        }
Esempio n. 4
0
 /// <summary>
 /// 记录状态
 /// </summary>
 private void RecordStatus()
 {
     m_electric_LastRecord = (IElectric)this.Clone();
 }
Esempio n. 5
0
 /// <summary>
 /// 将对应带电体移除List
 /// </summary>
 /// <param name="electric"></param>
 public static void Remove(IElectric electric)
 {
     s_electricList.Remove(electric);
     electric.StatusChanged.RemoveListener(OnStatusChanged);
 }
Esempio n. 6
0
 /// <summary>
 /// 将对应带电体加入List当中
 /// </summary>
 /// <param name="electric"></param>
 public static void Add(IElectric electric)
 {
     s_electricList.Add(electric);
     electric.StatusChanged.AddListener(OnStatusChanged);
 }