public static string Processor(IEnumerable <Animal> animals)
        {
            var stringBuilder = new StringBuilder();
            // The other part of the processor code constructs the actual chain.
            var monkey   = new MonkeyHandler();
            var squirrel = new SquirrelHandler();
            var dog      = new DogHandler();
            var cat      = new CatHandler();

            // The client should be able to send a request to any handler, not
            // just the first one in the chain.
            monkey.SetNext(squirrel).SetNext(dog).SetNext(cat);
            if (animals == null)
            {
                return(stringBuilder.ToString());
            }
            foreach (var animal in animals)
            {
                stringBuilder.Append($"Client: Who wants a {animal.Food}?");
                var result = monkey.Handle(animal);
                stringBuilder.Append(result == null ? $"   {animal.Food} was left untouched.\n" : $"   {result}");
            }

            return(stringBuilder.ToString());
        }
Esempio n. 2
0
    private void Awake()
    {
        Instance = this;
        Cat.gameObject.SetActive(false);
        foreach (var catWave in CatWaves)
        {
            catWave.SetActive(false);
        }
        _attacks = new List <Animator>();
        for (int i = 0; i < BaseAttackSpawnCount - 1; i++)
        {
            var attackInstance = Instantiate(CatAttackIndicatorPrefab, transform).GetComponent <Animator>();
            attackInstance.gameObject.SetActive(false);
            _attacks.Add(attackInstance);
        }

        _meowing = new List <MeowingHandler>();
        for (int i = 0; i < 50; i++)
        {
            var meowInstance = Instantiate(MeowingPrefab, transform);
            meowInstance.gameObject.SetActive(false);
            _meowing.Add(meowInstance);
        }
    }