Пример #1
0
        private void OnConnectionAppear()
        {
            if (IDisposableObject.IsValid(coroutineAsync))
            {
                coroutineAsync.Dispose(); // not valid any more!

                // Internet was Lost, now it is restored
                var signInID = GetSocialUserId();

                if (loginStatus != LoginStatus.Complete)
                {
                    // reinitialize auth and database!
                    Init();
                    // Sign In Again
                    SignIn(signInID);
                }
                else
                {
                    // just get the user data!
                    GetUserData(signInID);
                }
            }

            onInternetConnection?.Invoke(true);

            // there was no internet problems
        }
Пример #2
0
        private async void WaiterForinternetRestore(IDisposableObject refToCheck)
        {
            // wait for 3 seconds?
            while (IDisposableObject.IsValid(refToCheck) && !IsInternetConnected)
            {
#if UNITY_EDITOR
                Debug.LogWarning(" now is Enabled Waiter For internet!");
#endif
                await System.Threading.Tasks.Task.Delay(5000);  // wait every 5 seconds
            }
        }
Пример #3
0
        private void OnConnectionLose()
        {
            if (!IDisposableObject.IsValid(coroutineAsync))
            {
                // only now we need to start on waiting
                coroutineAsync = new IDisposableObject();
                WaiterForinternetRestore(coroutineAsync);

                onInternetConnection?.Invoke(false);
            } // else already in a bad state
        }
Пример #4
0
        /// <summary>
        /// Load all games data
        /// </summary>
        /// <param name="callback">success callback</param>
        /// <param name="error">error callback</param>
        public async Task <T> LoadData <T>(
            IDisposableObject refToCheck,
            Action <string> error,
            string url)
        {
            using (var req = UnityWebRequest.Get(url))
            {
#pragma warning disable
                req.SendWebRequest();
#pragma warning restore
                while (!req.isDone && !req.isHttpError && !req.isNetworkError && IDisposableObject.IsValid(refToCheck))
                {
                    await Task.Yield(); // 0.005s
                }


                if (!IDisposableObject.IsValid(refToCheck) || req.isHttpError || req.isNetworkError)
                {
                    error.Invoke(req.error);
                    return(default);
Пример #5
0
        public async Task GetAllUrls(IDisposableObject disposable, string Url)
        {
            string platform = null;

#if UNITY_ANDROID || UNITY_EDITOR
            platform = AndroidPlatform;
#endif
#if UNITY_IOS
            platform = IosPlatform;
#endif
            var urlWithJsonExtension = Url + ".json";
            var master = await App.Services.WebLoader
                         .LoadData <MasterSlaveUrl>(disposable, OnError, urlWithJsonExtension);

            if (!IDisposableObject.IsValid(disposable))
            {
                return;
            }
            actualDataBase = master;
        }
Пример #6
0
        public async Task <bool> LoadingAllContent()
        {
            if (startedTask != null)
            {
                var result = await startedTask;
                startedTask = null;
                return(result);
            }
            else
            {
                disposableObject = new IDisposableObject();
                var listOfItems = await App.Services.WebLoader.LoadData(disposableObject,
                                                                        (msg) => { Debug.LogError(msg); },
                                                                        App.Services.WebLoader.MainUrl
                                                                        );

                if (string.IsNullOrEmpty(listOfItems))
                {
                    Debug.LogWarning("string is null");
                    return(false);
                }
                if (!IDisposableObject.IsValid(disposableObject))
                {
                    return(false);
                }

                var master = App.Services.JsonConverter.FromJson <MasterSlaveUrl>(listOfItems);
                if (allManaged == null)
                {
                    allManaged = new Dictionary <string, T>();
                }
                else
                {
                    if (IsUnityObject)
                    {
                        foreach (var key in allManaged.Keys)
                        {
                            if (allManaged[key] != null)
                            {
                                Object.Destroy(allManaged[key] as UnityEngine.Object);
                            }
                        }
                    }
                }
                allManaged.Clear();


                if (dataType == DataType.NotInitialized)
                {
                    var typeT = typeof(T);
                    dataType = DataType.Custom;

                    bool isAssetBundle = typeT == typeof(AssetBundle);
                    if (isAssetBundle)
                    {
                        dataType = DataType.AssetBundle;
                    }
                }

                bool shouldBeParsed = dataType == DataType.Custom;
                for (int i = 0; i < master.Urls.Count; i++)
                {
                    URLLoader.WrapperDownload downloadHandler = null;
                    switch (dataType)
                    {
                    case DataType.Custom:
                        downloadHandler = await App.Services.WebLoader.LoadAndGetDownloadHandler(disposableObject,
                                                                                                 (msg) => { Debug.LogError(msg); },
                                                                                                 master.Urls[i].Url);

                        break;

                    case DataType.AssetBundle:
                        downloadHandler = await App.Services.WebLoader.LoadAndGetAssetBundle(disposableObject,
                                                                                             (msg) => { Debug.LogError(msg); },
                                                                                             master.Urls[i].Url);

                        break;
                    }

                    if (!IDisposableObject.IsValid(disposableObject))
                    {
                        return(false);
                    }
                    if (downloadHandler.assetbundle == null)
                    {
                        var parser = ParseFromHandler(downloadHandler.handler);
                        if (parser == null)
                        {
                            Debug.LogWarning($" could not parse {master.Urls[i].Name}");
                            continue;
                        }
                        allManaged.Add(master.Urls[i].Name, parser);
                    }
                    else
                    {
                        allManaged.Add(master.Urls[i].Name, downloadHandler.assetbundle as T);
                    }
                }
                return(true);
            }
        }