using System;
using System.Collections.Generic;
using Cpp2IlInjected;

// Token: 0x020002AD RID: 685
[Token(Token = "0x20002AD")]
public class UpgradeMap
{
	// Token: 0x060019BF RID: 6591 RVA: 0x0003F6B8 File Offset: 0x0003D8B8
	[Token(Token = "0x60019BF")]
	[Address(RVA = "0x4ACD30", Offset = "0x4ABD30", VA = "0x1804ACD30")]
	public UpgradeMap()
	{
		/*
An exception occurred when decompiling this method (060019BF)

ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void UpgradeMap::.ctor()

 ---> System.Exception: Basic block has to end with unconditional control flow. 
{; 	Block_0:; 	call:void(object::.ctor, ldloc:UpgradeMap[exp:object](this)); 	stloc:class [mscorlib]System.Collections.Generic.Dictionary`2<int32, class UpgradeDataHandler>(var_0_0C, call:Dictionary`2[exp:class [mscorlib]System.Collections.Generic.Dictionary`2<int32, class UpgradeDataHandler>](UpgradeMap::InitDataHandlers, ldloc:UpgradeMap(this))); 	stfld:class [mscorlib]System.Collections.Generic.Dictionary`2<int32, class UpgradeDataHandler>(UpgradeMap::dataHandlers, ldloc:UpgradeMap(this), ldloc:class [mscorlib]System.Collections.Generic.Dictionary`2<int32, class UpgradeDataHandler>(var_0_0C)); }; 
   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: 0x060019C0 RID: 6592 RVA: 0x0003F6D8 File Offset: 0x0003D8D8
	[Token(Token = "0x60019C0")]
	[Address(RVA = "0x4ABD70", Offset = "0x4AAD70", VA = "0x1804ABD70")]
	public UpgradeDataHandler GetUpgradeDataHandler(int typeID)
	{
		return this.dataHandlers[typeID];
	}

	// Token: 0x060019C1 RID: 6593 RVA: 0x000020D3 File Offset: 0x000002D3
	[Token(Token = "0x60019C1")]
	[Address(RVA = "0x4ABDD0", Offset = "0x4AADD0", VA = "0x1804ABDD0")]
	private Dictionary<int, UpgradeDataHandler> InitDataHandlers()
	{
		throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
	}

	// Token: 0x060019C2 RID: 6594 RVA: 0x000020D3 File Offset: 0x000002D3
	[Token(Token = "0x60019C2")]
	[Address(RVA = "0x4ABC80", Offset = "0x4AAC80", VA = "0x1804ABC80")]
	private float[] CreateExpForm(float fExp, int iLevelMax)
	{
		throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
	}

	// Token: 0x04002423 RID: 9251
	[Token(Token = "0x4002423")]
	private const int NORMAL_LEVEL_MAX = 100;

	// Token: 0x04002424 RID: 9252
	[Token(Token = "0x4002424")]
	private const int DEX_LEVEL_MAX = 30;

	// Token: 0x04002425 RID: 9253
	[Token(Token = "0x4002425")]
	private const float BASE_HP_MP_EXP = 6f;

	// Token: 0x04002426 RID: 9254
	[Token(Token = "0x4002426")]
	private const float BASE_SP_EXP = 3f;

	// Token: 0x04002427 RID: 9255
	[Token(Token = "0x4002427")]
	private const float BASE_STR_INT_EXP = 9f;

	// Token: 0x04002428 RID: 9256
	[Token(Token = "0x4002428")]
	private const float BASE_DEX_EXP = 12f;

	// Token: 0x04002429 RID: 9257
	[FieldOffset(Offset = "0x10")]
	[Token(Token = "0x4002429")]
	private readonly Dictionary<int, UpgradeDataHandler> dataHandlers;

	// Token: 0x020002AE RID: 686
	[Token(Token = "0x20002AE")]
	private enum UpgradeType
	{
		// Token: 0x0400242B RID: 9259
		[Token(Token = "0x400242B")]
		HP,
		// Token: 0x0400242C RID: 9260
		[Token(Token = "0x400242C")]
		MP,
		// Token: 0x0400242D RID: 9261
		[Token(Token = "0x400242D")]
		SP,
		// Token: 0x0400242E RID: 9262
		[Token(Token = "0x400242E")]
		STR,
		// Token: 0x0400242F RID: 9263
		[Token(Token = "0x400242F")]
		INT,
		// Token: 0x04002430 RID: 9264
		[Token(Token = "0x4002430")]
		DEX
	}
}
