Beispiel #1
0
        internal static IClonable Clone(this IClonable original)//דרך שניה - בונוס (יש להשתמש בממשק)
        {
            IClonable target = (IClonable)Activator.CreateInstance(original.GetType());

            //...
            return(target);
        }
Beispiel #2
0
        public void DoSpecialAbility(IArmy friendlyArmy, IArmy enemiesArmy)
        {
            List <IUnit> availableRange = friendlyArmy.FightStrategy.getSpecialAbilityTargets(friendlyArmy, enemiesArmy, this);

            if (availableRange.Count <= 0)
            {
                return;
            }

            List <IUnit> allies = new List <IUnit>();

            foreach (var unit in availableRange)
            {
                if (friendlyArmy.Units.Contains(unit) && unit is IClonable)
                {
                    allies.Add(unit);
                }
            }

            if (allies.Count > 0)
            {
                int       cloneIndex   = GameEngine.Instance.Random.Next(0, allies.Count);
                IClonable clonableUnit = allies[cloneIndex] as IClonable;

                IUnit clone = clonableUnit.Clone();
                friendlyArmy.Units.Add(clone);

                GameLogger.Instance.Log(
                    String.Format("[{0}] копирует [{1}] c параметрами [H:{2}, A:{3}, D:{4}]",
                                  this.ToString(), clone.ToString(), clone.Health, clone.Attack, clone.Defence),
                    GameLogger.LOG_LEVEL__SPECIAL_ABILITY
                    );
            }
        }
Beispiel #3
0
        internal static IClonable Clone(this IClonable original)
        {
            IClonable target = (IClonable)Activator.CreateInstance(original.GetType());

            //...
            return(target);
        }
Beispiel #4
0
        public static IClonable Clone(this IClonable obj)
        {
            IClonable newObj = (IClonable)Activator.CreateInstance(obj.GetType());

            foreach (var field in obj.GetType().GetFields())
            {
                field.SetValue(newObj, field.GetValue(obj));
            }
            return(newObj);
        }
Beispiel #5
0
 protected void guardarEstadoInstancia(IClonable <TInstancia> origen)
 {
     if ((origen as object) != null)
     {
         this.instancia = origen.Clonar();
     }
     else
     {
         anularInstancia();
     }
 }
Beispiel #6
0
    public static void Main(string[] args)
    {
        Car car = new Car();

        car.Make = "BMW";
        Console.WriteLine(car.Make);
        car.Model = "Mini";
        car.Year  = "2017";

        Console.WriteLine(car is int == false);
        Console.WriteLine(car is Cake == false);
        Console.WriteLine(car is Car == true);
        Console.WriteLine(car is IEquatable == true);
        Console.WriteLine(car is IClonable == true);
        Console.WriteLine(car is object == true);

        IClonable ic = car as IClonable;

        Console.WriteLine(ic != null);
        Console.WriteLine(ic.GetType().Name == "Car");
    }
        public static IClonable Clone(this IClonable original)
        {
            IClonable target = (IClonable)Activator.CreateInstance(original.GetType());

            foreach (var Property in original.GetType().GetProperties())
            {
                ParameterInfo[] myParameters = Property.GetIndexParameters();
                if (myParameters.Length == 0)
                {
                    Property.SetValue(target, Property.GetValue(original));
                }

                /*else
                 * {
                 *  foreach(var Parameter in myParameters)
                 *  {
                 *      Parameter.
                 *  }
                 * }*/
            }
            return(target);
        }
            public IClonable Clone(IClonable source)
            {
                Card clone = new Card(source as Card);

                return(clone as IClonable);
            }
Beispiel #9
0
 public EstadoControlador(EstadosEdicionFichero edoLst, EstadosEdicionInstancias edoElm, IClonable <TInstancia> origen)
 {
     this.estadoEdicionFichero   = edoLst;
     this.estadoEdicionInstancia = edoElm;
     guardarEstadoInstancia(origen);
 }
Beispiel #10
0
 static object ShowClone(IClonable clonable)
 {
     Console.WriteLine("CLONE OBJECT.......");
     return(clonable.Clone());
 }