Esempio n. 1
0
        private IEnumerator SearchCoroutine(string query, int skip)
        {
            // Сформировать данные для запроса
            var itemsPerPage = searchSettingsRuntime.ItemsPerPage;

            // Сформировать запрос
            var requestOper = managerServer.Search(query, skip, itemsPerPage);

            // Выполнить запрос
            yield return(requestOper);

            // Получить ответ
            var response = requestOper.Current as SearchResponse;

            // Создать переменную для хранения обратного вызова
            UnityEvent callback;

            if (response == null || response.IsError)
            {
                // Сообщить об ошибке
                callback = searchSettingsRuntime.OnSearchError;

                // Сбросить данные поиска
                ResetSearchSettings();
            }
            else
            {
                // Сообщить об успешном завершении поиска
                callback = searchSettingsRuntime.OnSearchComplite;

                // Сохранить полученные данные
                dataRuntime.SearchResponse          = response.data.ToList();
                searchSettingsRuntime.ItemsCount    = response.RecordsFoundCount;
                searchSettingsRuntime.LastItemIndex = Mathf.Min(skip + searchSettingsRuntime.ItemsPerPage, searchSettingsRuntime.ItemsCount) - 1;
            }

            // Завершить поиск
            searchSettingsRuntime.SearchCoroutine = null;

            // Сообщить о завершении поиска
            callback?.Invoke();
        }