using System;
using System.Collections;
using Qoo;
using UnityEngine;

// Token: 0x02000148 RID: 328
public class UnityFile
{
	// Token: 0x1700010E RID: 270
	// (get) Token: 0x06000901 RID: 2305 RVA: 0x0002768C File Offset: 0x0002588C
	public bool IsReadEnd
	{
		get
		{
			return this.m_isReadEnd;
		}
	}

	// Token: 0x1700010F RID: 271
	// (get) Token: 0x06000902 RID: 2306 RVA: 0x00027694 File Offset: 0x00025894
	public string Name
	{
		get
		{
			return this.m_szName;
		}
	}

	// Token: 0x17000110 RID: 272
	// (get) Token: 0x06000903 RID: 2307 RVA: 0x0002769C File Offset: 0x0002589C
	public string Path
	{
		get
		{
			return this.m_szPath;
		}
	}

	// Token: 0x17000111 RID: 273
	// (get) Token: 0x06000904 RID: 2308 RVA: 0x000276A4 File Offset: 0x000258A4
	public byte[] Data
	{
		get
		{
			return this.m_ReadData;
		}
	}

	// Token: 0x17000112 RID: 274
	// (get) Token: 0x06000905 RID: 2309 RVA: 0x000276AC File Offset: 0x000258AC
	public AssetBundle Asset
	{
		get
		{
			return this.m_asset;
		}
	}

	// Token: 0x17000113 RID: 275
	// (get) Token: 0x06000906 RID: 2310 RVA: 0x000276B4 File Offset: 0x000258B4
	public UnityEngine.Object Obj
	{
		get
		{
			return this.m_object;
		}
	}

	// Token: 0x17000114 RID: 276
	// (get) Token: 0x06000907 RID: 2311 RVA: 0x000276BC File Offset: 0x000258BC
	public bool IsError
	{
		get
		{
			return this.m_IsError;
		}
	}

	// Token: 0x06000908 RID: 2312 RVA: 0x000276C4 File Offset: 0x000258C4
	public bool Create(WWW loader, string name, string path, bool IsAssetBandle)
	{
		this.m_szName = name;
		this.m_szPath = path;
		this.m_IsAssetBandle = IsAssetBandle;
		UnityTask.SetReadTask(this.LoadWait());

		return true;
	}

	// Token: 0x06000909 RID: 2313 RVA: 0x000276F4 File Offset: 0x000258F4
	public bool CreateFromAssetBundle(AssetBundle asset, string name)
	{
		this.m_szName = name;
		this.m_ReadData = (asset.LoadAsset(name) as TextAsset).bytes;
		this.m_isReadEnd = true;
		return true;
	}

	// Token: 0x0600090A RID: 2314 RVA: 0x00027728 File Offset: 0x00025928
	public bool LoadResource(string name_, string path_)
	{
		this.m_szName = name_;
		this.m_szPath = path_;
		this.m_object = Resources.Load(path_ + name_);
		if (this.m_object != null)
		{
			this.m_isReadEnd = true;
		}
		return this.m_isReadEnd;
	}

	// Token: 0x0600090B RID: 2315 RVA: 0x00027774 File Offset: 0x00025974
	public bool CreateAssetBandle(WWW loader, string name, string path)
	{
		this.m_szName = name;
		this.m_szPath = path;
		this.m_isLoadAssetBandle = true;
		this.m_IsAssetBandle = true;
		UnityTask.SetReadTask(this.LoadWait());
		return true;
	}

	// Token: 0x0600090C RID: 2316 RVA: 0x000277AC File Offset: 0x000259AC
	private string CreateLoader(string name, string localpath, bool IsAssetBandle)
	{
		localpath = localpath.Replace('\\', '/');
		name = name.Replace('\\', '/');
		if (IsAssetBandle)
		{
			name = Pathing.ToPlatformAssetBundleName(name);
		}
		string text = Pathing.appContentDataPath + localpath + name;
		Qoo.Debug.Print("FileLoad:" + text);
		return text;
	}

	// Token: 0x0600090D RID: 2317 RVA: 0x00027800 File Offset: 0x00025A00
	private IEnumerator LoadWait()
	{
		if (this.m_isLoadPackFile)
		{
			AssetBundleCreateRequest req = AssetBundle.LoadFromMemoryAsync(this.m_ReadData);
			yield return req;
			this.m_object = req.assetBundle.mainAsset;
			req.assetBundle.Unload(false);
			req = null;
			this.m_isReadEnd = true;
			Resources.UnloadUnusedAssets();
			yield return new WaitForEndOfFrame();
		}
		else
		{
			WWW loader = null;
			string path = this.CreateLoader(this.m_szName, this.m_szPath, this.m_IsAssetBandle);
			for (int i = 0; i <= 10; i++)
			{
				loader = new WWW(path);
				yield return loader;
				/*this.m_szErrorMsg = loader.error;
				if (this.m_szErrorMsg != null && this.m_szErrorMsg.Length > 0)
				{
					Qoo.Debug.Print("Error:" + this.m_szErrorMsg);
					if (i == 10)
					{
						this.m_IsError = true;
						break;
					}
					if (this.m_isLoadAssetBandle)
					{
						this.m_IsError = true;
						break;
					}
					loader = null;
				}
				else if (loader.isDone)
				{
					break;
				}*/
				break;
				yield return 0;
			}
			if (loader.isDone)
			{
				if (this.m_isLoadAssetBandle)
				{
					this.m_asset = loader.assetBundle;
				}
				else if (this.m_IsAssetBandle)
				{
					UnityEngine.Debug.Log (Application.streamingAssetsPath + m_szPath + m_szName + ".png");
					byte[] data = System.IO.File.ReadAllBytes(Application.streamingAssetsPath + m_szPath + m_szName + ".png");
					this.m_ReadData = data;
				}
				else
				{
					this.m_ReadData = loader.bytes;
				}
				loader.Dispose();
				this.m_isReadEnd = true;
			}
			else
			{
				UnityEngine.Debug.LogError("Error:FileRead Failed" + this.m_szName);
				this.m_IsError = true;
			}
			loader = null;
		}
		yield break;
	}

	// Token: 0x04000799 RID: 1945
	private const int RETRY_COUNT = 10;

	// Token: 0x0400079A RID: 1946
	private bool m_isReadEnd;

	// Token: 0x0400079B RID: 1947
	private string m_szName = string.Empty;

	// Token: 0x0400079C RID: 1948
	private string m_szPath = string.Empty;

	// Token: 0x0400079D RID: 1949
	private bool m_IsAssetBandle;

	// Token: 0x0400079E RID: 1950
	private bool m_IsError;

	// Token: 0x0400079F RID: 1951
	private string m_szErrorMsg = string.Empty;

	// Token: 0x040007A0 RID: 1952
	private byte[] m_ReadData;

	// Token: 0x040007A1 RID: 1953
	private AssetBundle m_asset;

	// Token: 0x040007A2 RID: 1954
	private UnityEngine.Object m_object;

	// Token: 0x040007A3 RID: 1955
	private bool m_isLoadAssetBandle;

	// Token: 0x040007A4 RID: 1956
	private bool m_isLoadPackFile;
}
