Esempio n. 1
0
    /// <summary>
    /// Unity Awake Method
    /// </summary>
    new void Awake()
    {
        base.Awake();

        logger = GetComponent <xPromoLogger>();

        Log($"- baseUrl: {baseUrl}");

        assetsInStorage = ReadNamesOfAssetsInStorage();

        if (assetsInStorage != null)
        {
            string filesOnLocal = "";
            for (int i = 0; i < assetsInStorage.Count; i++)
            {
                filesOnLocal += assetsInStorage[i];
                if (i < assetsInStorage.Count - 1)
                {
                    filesOnLocal += ", ";
                }
            }

            Log($"Files on local: {filesOnLocal}");
        }
        else
        {
            Log($"Files on local: None");
        }

        if (logOnUI)
        {
            logger.LogLocalStorageItems(assetsInStorage);
        }

        state = State.Idle;
    }
Esempio n. 2
0
    /// <summary>
    /// Unity Update Method
    /// </summary>
    void Update()
    {
        if (logOnUI)
        {
            xPromoLogger.Instance.LogDownloadManagerStatus(state);
        }

        switch (state)
        {
        case State.Downloading:

            downloadProgress = www.downloadProgress;

            if (www.isDone)
            {
                if (!www.isHttpError)
                {
                    File.WriteAllBytes($"{Application.persistentDataPath}/{assetsToDownload[currentAssetInDownload]}", www.downloadHandler.data);
                    Log($"Asset {assetsToDownload[currentAssetInDownload]} downloaded ok");

                    if (assetsInStorage == null)
                    {
                        assetsInStorage = new List <string>();
                    }
                    if (!assetsInStorage.Contains(assetsToDownload[currentAssetInDownload]))
                    {
                        assetsInStorage.Add(assetsToDownload[currentAssetInDownload]);
                    }
                    WriteNamesOfAssetsInStorage(assetsInStorage);

                    if (logOnUI)
                    {
                        logger.LogLocalStorageItems(assetsInStorage);
                    }
                }
                else
                {
                    Log($"Cannot download asset {assetsToDownload[currentAssetInDownload]} Response code: {www.responseCode}");
                }

                currentAssetInDownload++;
                if (currentAssetInDownload < assetsToDownload.Count)
                {
                    downloadProgress = 0f;
                    Load(assetsToDownload[currentAssetInDownload]);
                }
                else
                {
                    Log("All assets were downloaded");

                    string filesOnLocal = "";
                    for (int i = 0; i < assetsInStorage.Count; i++)
                    {
                        filesOnLocal += assetsInStorage[i];
                        if (i < assetsInStorage.Count - 1)
                        {
                            filesOnLocal += ", ";
                        }
                    }

                    Log($"Files on local: {filesOnLocal}");
                    Log($"Finished Ok");
                    state = State.End;
                }
            }

            break;

        case State.HeaderDownloading:

            downloadProgress = www.downloadProgress;

            if (www.isDone)
            {
                if (!www.isHttpError)
                {
                    var fileLen = www.GetResponseHeader("Content-Length");
                    //Debug.Log($"[xPromo] Header asset {assetsToDownloadHeader[currentAssetInDownload]} fileLen: {fileLen}");

                    //var fileMD5 = www.GetResponseHeader("Content-MD5");
                    //Debug.Log($"[xPromo] Header asset fileMD5: {fileMD5}");

                    assetsToDownloadHeaderLen.Add(long.Parse(fileLen));

                    currentAssetInDownload++;
                    if (currentAssetInDownload < assetsToDownloadHeader.Count)
                    {
                        LoadHeader(assetsToDownloadHeader[currentAssetInDownload]);
                    }
                    else
                    {
                        Log("All headers assets were downloaded");

                        for (int i = 0; i < assetsToDownloadHeader.Count; i++)
                        {
                            if (assetsToDownloadHeaderLen[i] != GetFileSize(assetsToDownloadHeader[i]))
                            {
                                Log(
                                    $"Asset {assetsToDownloadHeader[i]} local len: {GetFileSize(assetsToDownloadHeader[i])} server len: {assetsToDownloadHeaderLen[i]}. Should download.");
                                assetsToDownload.Add(assetsToDownloadHeader[i]);
                            }
                            else
                            {
                                Log($"Not necessary to download Asset {assetsToDownloadHeader[i]}. Local and server length are equal.");
                            }
                        }

                        if (assetsToDownload.Count > 0)
                        {
                            currentAssetInDownload = 0;
                            Load(assetsToDownload[currentAssetInDownload]);
                        }
                        else
                        {
                            Log($"Finished Ok");
                            state = State.Idle;
                        }
                    }
                }
                else
                {
                    Log($"Cannot download header asset {assetsToDownload[currentAssetInDownload]} Response code: {www.responseCode}");
                }
            }

            break;
        }
    }