private IEnumerator NewBuyerArrived() { yield return(StartCoroutine( _buyer.AppearAt(_doorPos.x, _doorPos.y))); yield return(StartCoroutine( _buyer.WalkTo(_nearCashierPos))); List <int> orderList = _buyer.NewBuyerOrder(); List <Image> orderItemsImages = _storage.GetItemsImages(orderList); _storage.OrderSize = orderList.Count; _orderCloud.AddItemsToCloud(orderList .ToDictionary(x => x, x => orderItemsImages[orderList.IndexOf(x)])); yield return(StartCoroutine( _orderCloud.AppearAt(_orderAppearPos.x, _orderAppearPos.y))); yield return(new WaitForSeconds(5)); yield return(StartCoroutine( _storage.AppearAt(_inventoryOutPos.x, _inventoryOutPos.y))); yield return(StartCoroutine( _storage.MoveTo(_inventoryInPos))); yield return(StartCoroutine( _orderCloud.Disappear())); yield return(new WaitUntil( () => _storage.SellClicked)); List <int> selectedItems = _storage.GETSelectedItems(); yield return(StartCoroutine( _storage.MoveTo(_inventoryOutPos))); yield return(StartCoroutine( _storage.Disappear())); List <Image> itemsImages = _storage.GetItemsImages(selectedItems); _answersCloud.AddItemsToCloud(selectedItems .ToDictionary(x => x, x => itemsImages[selectedItems.IndexOf(x)])); yield return(StartCoroutine( _answersCloud.AppearAt(_answersAppearPos.x, _answersAppearPos.y))); yield return(StartCoroutine( _answersCloud.CheckCorrectAnswers(orderList))); AddMoney(_answersCloud.NumberOfCorrectAnswers * (_answersCloud.NumberOfCorrectAnswers == orderList.Count ? 20 : 10)); yield return(new WaitForSeconds(1)); _emotionCloud.SetEmotion(_answersCloud.NumberOfCorrectAnswers == orderList.Count ? emotions[0] : emotions[1]); yield return(StartCoroutine( _answersCloud.Disappear())); yield return(StartCoroutine( _emotionCloud.AppearAt(_orderAppearPos.x, _orderAppearPos.y))); yield return(new WaitForSeconds(2)); yield return(StartCoroutine(_buyer.TurnLeft())); yield return(StartCoroutine(_emotionCloud.Disappear())); yield return(StartCoroutine(_buyer.WalkTo(_doorPos))); yield return(new WaitForSeconds(0.3f)); yield return(StartCoroutine(_buyer.Disappear())); yield return(StartCoroutine(_buyer.TurnRight())); yield return(new WaitForSeconds(1)); NextBuyer(); }