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