/// <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; }
/// <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; } }