using System;
using System.Collections.Generic;
using Cpp2IlInjected;
using MEC;
using UnityEngine;

// Token: 0x0200010D RID: 269
[Token(Token = "0x200010D")]
public sealed class GameAssetManager
{
	// Token: 0x06000E7B RID: 3707 RVA: 0x000228CC File Offset: 0x00020ACC
	[Token(Token = "0x6000E7B")]
	[Address(RVA = "0x538FE0", Offset = "0x537DE0", VA = "0x180538FE0")]
	public void Init()
	{
		AssetLoader assetLoader = new AssetLoader();
		Action<AssetRequestBase, UnityEngine.Object[]> action = new Action(this.OnAssetLoaded);
		assetLoader.<OnFinished>k__BackingField = action;
		this.assetLoader = assetLoader;
		Queue<AssetRequestBase> queue = new Queue();
		this.handlingRequests = queue;
		List<AssetRequestBase> list = new List();
		this.pendingRequests = list;
		Dictionary<string, UnityEngine.Object[]> dictionary = new Dictionary();
		this.assetsCache = dictionary;
		int num;
		GameAssetManager.<Tick>d__20 <Tick>d__ = new GameAssetManager.<Tick>d__20(num);
		num = 0;
		<Tick>d__.<>4__this = this;
		CoroutineHandle coroutineHandle = MECExtensionMethods1.RunCoroutine(<Tick>d__);
		this.assetRequestProcessor = coroutineHandle;
	}

	// Token: 0x06000E7C RID: 3708 RVA: 0x00022950 File Offset: 0x00020B50
	[Token(Token = "0x6000E7C")]
	[Address(RVA = "0x417A20", Offset = "0x416820", VA = "0x180417A20")]
	public void BindAssetRequestUpdateHandler(Action<float> handler)
	{
		/*
An exception occurred when decompiling this method (06000E7C)

ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void GameAssetManager::BindAssetRequestUpdateHandler(System.Action`1<System.Single>)

 ---> System.Exception: Basic block has to end with unconditional control flow. 
{; 	Block_0:; 	stfld:class [mscorlib]System.Action`1<float32>(GameAssetManager::updateHandler, ldloc:GameAssetManager(this), ldloc:class [mscorlib]System.Action`1<float32>(handler)); }; 
   at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1810
   at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.Optimize(DecompilerContext context, ILBlock method, AutoPropertyProvider autoPropertyProvider, StateMachineKind& stateMachineKind, MethodDef& inlinedMethod, AsyncMethodDebugInfo& asyncInfo, ILAstOptimizationStep abortBeforeStep) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 344
   at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(IEnumerable`1 parameters, MethodDebugInfoBuilder& builder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 123
   at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 88
   --- End of inner exception stack trace ---
   at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 92
   at ICSharpCode.Decompiler.Ast.AstBuilder.AddMethodBody(EntityDeclaration methodNode, EntityDeclaration& updatedNode, MethodDef method, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, MethodKind methodKind) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstBuilder.cs:line 1618
*/;
	}

	// Token: 0x06000E7D RID: 3709 RVA: 0x000020D3 File Offset: 0x000002D3
	[Token(Token = "0x6000E7D")]
	[Address(RVA = "0x5392D0", Offset = "0x5380D0", VA = "0x1805392D0")]
	public void LoadAllPendingAssetAsync(Action handler)
	{
		throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
	}

	// Token: 0x06000E7E RID: 3710 RVA: 0x000020D3 File Offset: 0x000002D3
	[Token(Token = "0x6000E7E")]
	[Address(RVA = "0x538D50", Offset = "0x537B50", VA = "0x180538D50")]
	public void AddAssetRequest(AssetRequestBase req)
	{
		throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
	}

	// Token: 0x06000E7F RID: 3711 RVA: 0x00022964 File Offset: 0x00020B64
	[Token(Token = "0x6000E7F")]
	[Address(RVA = "0x539500", Offset = "0x538300", VA = "0x180539500")]
	public void LoadAssetAsync(AssetRequestBase req)
	{
		this.handlingRequests.Enqueue(req);
	}

	// Token: 0x06000E80 RID: 3712 RVA: 0x000020D3 File Offset: 0x000002D3
	[Token(Token = "0x6000E80")]
	[Address(RVA = "0x539560", Offset = "0x538360", VA = "0x180539560")]
	public void LoadAsset(AssetRequestBase req)
	{
		throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
	}

	// Token: 0x06000E81 RID: 3713 RVA: 0x000020D3 File Offset: 0x000002D3
	[Token(Token = "0x6000E81")]
	[Address(RVA = "0x2D0F60", Offset = "0x2CFD60", VA = "0x1802D0F60")]
	public T GetAsset<T>(int assetType, string assetName) where T : UnityEngine.Object
	{
		throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
	}

	// Token: 0x06000E82 RID: 3714 RVA: 0x000020D3 File Offset: 0x000002D3
	[Token(Token = "0x6000E82")]
	[Address(RVA = "0x2D10C0", Offset = "0x2CFEC0", VA = "0x1802D10C0")]
	public T GetSubAsset<T>(int assetType, string assetName, string subAssetName) where T : UnityEngine.Object
	{
		throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
	}

	// Token: 0x06000E83 RID: 3715 RVA: 0x000020D3 File Offset: 0x000002D3
	[Token(Token = "0x6000E83")]
	[Address(RVA = "0x2D0D50", Offset = "0x2CFB50", VA = "0x1802D0D50")]
	public T[] GetAllAssets<T>(int assetType, string assetName) where T : UnityEngine.Object
	{
		throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
	}

	// Token: 0x06000E84 RID: 3716 RVA: 0x00022984 File Offset: 0x00020B84
	[Token(Token = "0x6000E84")]
	[Address(RVA = "0x5399C0", Offset = "0x5387C0", VA = "0x1805399C0")]
	public void UnloadUnusedAssets()
	{
		this.assetsCache.Clear();
		AsyncOperation asyncOperation = Resources.UnloadUnusedAssets();
	}

	// Token: 0x06000E85 RID: 3717 RVA: 0x000020D3 File Offset: 0x000002D3
	[Token(Token = "0x6000E85")]
	[Address(RVA = "0x5397A0", Offset = "0x5385A0", VA = "0x1805397A0")]
	public void UnloadAssetsCache(string resType)
	{
		throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
	}

	// Token: 0x06000E86 RID: 3718 RVA: 0x000020D3 File Offset: 0x000002D3
	[Token(Token = "0x6000E86")]
	[Address(RVA = "0x538DB0", Offset = "0x537BB0", VA = "0x180538DB0")]
	public void Dispose()
	{
		throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
	}

	// Token: 0x06000E87 RID: 3719 RVA: 0x000020D3 File Offset: 0x000002D3
	[Token(Token = "0x6000E87")]
	[Address(RVA = "0x539730", Offset = "0x538530", VA = "0x180539730")]
	private IEnumerator<float> Tick()
	{
		throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
	}

	// Token: 0x06000E88 RID: 3720 RVA: 0x000020D3 File Offset: 0x000002D3
	[Token(Token = "0x6000E88")]
	[Address(RVA = "0x539A10", Offset = "0x538810", VA = "0x180539A10")]
	private IEnumerator<float> WaitForAllHandlingRequest()
	{
		throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
	}

	// Token: 0x06000E89 RID: 3721 RVA: 0x000020D3 File Offset: 0x000002D3
	[Token(Token = "0x6000E89")]
	[Address(RVA = "0x538F30", Offset = "0x537D30", VA = "0x180538F30")]
	private void HandleRequests()
	{
		throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
	}

	// Token: 0x06000E8A RID: 3722 RVA: 0x000020D3 File Offset: 0x000002D3
	[Token(Token = "0x6000E8A")]
	[Address(RVA = "0x538E60", Offset = "0x537C60", VA = "0x180538E60")]
	private UnityEngine.Object[] GetAssetFromCache(string assetKey)
	{
		throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
	}

	// Token: 0x06000E8B RID: 3723 RVA: 0x000020D3 File Offset: 0x000002D3
	[Token(Token = "0x6000E8B")]
	[Address(RVA = "0x5391E0", Offset = "0x537FE0", VA = "0x1805391E0")]
	private bool IsRequestHandled(AssetRequestBase req)
	{
		throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
	}

	// Token: 0x06000E8C RID: 3724 RVA: 0x000020D3 File Offset: 0x000002D3
	[Token(Token = "0x6000E8C")]
	[Address(RVA = "0x539640", Offset = "0x538440", VA = "0x180539640")]
	private void OnAssetLoaded(AssetRequestBase req, UnityEngine.Object[] assetObjs)
	{
		throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
	}

	// Token: 0x06000E8D RID: 3725 RVA: 0x000020D3 File Offset: 0x000002D3
	[Token(Token = "0x6000E8D")]
	[Address(RVA = "0x538EE0", Offset = "0x537CE0", VA = "0x180538EE0")]
	private string GetCacheKey(int resType, string assetName)
	{
		throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
	}

	// Token: 0x06000E8E RID: 3726 RVA: 0x000229AC File Offset: 0x00020BAC
	[Token(Token = "0x6000E8E")]
	[Address(RVA = "0x3D8B20", Offset = "0x3D7920", VA = "0x1803D8B20")]
	public GameAssetManager()
	{
	}

	// Token: 0x0400190C RID: 6412
	[FieldOffset(Offset = "0x10")]
	[Token(Token = "0x400190C")]
	private AssetLoader assetLoader;

	// Token: 0x0400190D RID: 6413
	[FieldOffset(Offset = "0x18")]
	[Token(Token = "0x400190D")]
	private Queue<AssetRequestBase> handlingRequests;

	// Token: 0x0400190E RID: 6414
	[FieldOffset(Offset = "0x20")]
	[Token(Token = "0x400190E")]
	private List<AssetRequestBase> pendingRequests;

	// Token: 0x0400190F RID: 6415
	[FieldOffset(Offset = "0x28")]
	[Token(Token = "0x400190F")]
	private Dictionary<string, UnityEngine.Object[]> assetsCache;

	// Token: 0x04001910 RID: 6416
	[FieldOffset(Offset = "0x30")]
	[Token(Token = "0x4001910")]
	private CoroutineHandle assetRequestProcessor;

	// Token: 0x04001911 RID: 6417
	[FieldOffset(Offset = "0x38")]
	[Token(Token = "0x4001911")]
	private Action<float> updateHandler;

	// Token: 0x04001912 RID: 6418
	[FieldOffset(Offset = "0x40")]
	[Token(Token = "0x4001912")]
	private Action completeHandler;

	// Token: 0x04001913 RID: 6419
	[Token(Token = "0x4001913")]
	private const int ASSET_REQUEST_HANDLING_RATE = 8;
}
