Esempio n. 1
0
        public IUnit DoSpecialAction(IUnit unit)
        {
            if (unit is IAmmunition)
            {
                if (((IAmmunition)unit).Access == null)
                {
                    ((IAmmunition)unit).Access = new Dictionary <int, string>();
                }

                if (((IAmmunition)unit).Access.Count == 4)
                {
                    return(null);
                }

                Component accessory = new AccessoryComponent();

                Random random = new Random();
                int    cloth  = 0;
                bool   end    = true;

                while (end)
                {
                    cloth = random.Next(0, 4);
                    if (((IAmmunition)unit).Access.ContainsKey(cloth))
                    {
                        continue;
                    }
                    else
                    {
                        end = false;
                    }
                }
                var nameAmmunition = "";
                switch (cloth)
                {
                case 0:
                    nameAmmunition = "Helmet";
                    accessory      = new HelmetDecorator(accessory, unit);
                    accessory.AddAccessory();
                    break;

                case 1:
                    nameAmmunition = "Armor";
                    accessory      = new ArmorDecorator(accessory, unit);
                    accessory.AddAccessory();
                    break;

                case 2:
                    nameAmmunition = "Horse";
                    accessory      = new HorseDecorator(accessory, unit);
                    accessory.AddAccessory();
                    break;

                case 3:
                    nameAmmunition = "Peak";
                    accessory      = new PeakDecorator(accessory, unit);
                    accessory.AddAccessory();
                    break;
                }
                ((IAmmunition)unit).Access.Add(cloth, nameAmmunition);
                return(accessory.GetUnit());
            }

            return(null);
        }