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()); }
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); } }