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

// Token: 0x02000263 RID: 611
[Token(Token = "0x2000263")]
public class UpgradeMap
{
	// Token: 0x0600179F RID: 6047 RVA: 0x00039ED4 File Offset: 0x000380D4
	[Token(Token = "0x600179F")]
	[Address(RVA = "0x8C3B30", Offset = "0x8C2930", VA = "0x1808C3B30")]
	public UpgradeMap()
	{
		/*
An exception occurred when decompiling this method (0600179F)

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: 0x060017A0 RID: 6048 RVA: 0x00039EF4 File Offset: 0x000380F4
	[Token(Token = "0x60017A0")]
	[Address(RVA = "0x8C2C40", Offset = "0x8C1A40", VA = "0x1808C2C40")]
	public UpgradeDataHandler GetUpgradeDataHandler(int typeID)
	{
		return this.dataHandlers[typeID];
	}

	// Token: 0x060017A1 RID: 6049 RVA: 0x000020D3 File Offset: 0x000002D3
	[Token(Token = "0x60017A1")]
	[Address(RVA = "0x8C2CA0", Offset = "0x8C1AA0", VA = "0x1808C2CA0")]
	private Dictionary<int, UpgradeDataHandler> InitDataHandlers()
	{
		throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
	}

	// Token: 0x060017A2 RID: 6050 RVA: 0x000020D3 File Offset: 0x000002D3
	[Token(Token = "0x60017A2")]
	[Address(RVA = "0x8C2B50", Offset = "0x8C1950", VA = "0x1808C2B50")]
	private float[] CreateExpForm(float fExp, int iLevelMax)
	{
		throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
	}

	// Token: 0x040021D3 RID: 8659
	[Token(Token = "0x40021D3")]
	private const int NORMAL_LEVEL_MAX = 100;

	// Token: 0x040021D4 RID: 8660
	[Token(Token = "0x40021D4")]
	private const int DEX_LEVEL_MAX = 30;

	// Token: 0x040021D5 RID: 8661
	[Token(Token = "0x40021D5")]
	private const float BASE_HP_MP_EXP = 6f;

	// Token: 0x040021D6 RID: 8662
	[Token(Token = "0x40021D6")]
	private const float BASE_SP_EXP = 3f;

	// Token: 0x040021D7 RID: 8663
	[Token(Token = "0x40021D7")]
	private const float BASE_STR_INT_EXP = 9f;

	// Token: 0x040021D8 RID: 8664
	[Token(Token = "0x40021D8")]
	private const float BASE_DEX_EXP = 12f;

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

	// Token: 0x02000264 RID: 612
	[Token(Token = "0x2000264")]
	private enum UpgradeType
	{
		// Token: 0x040021DB RID: 8667
		[Token(Token = "0x40021DB")]
		HP,
		// Token: 0x040021DC RID: 8668
		[Token(Token = "0x40021DC")]
		MP,
		// Token: 0x040021DD RID: 8669
		[Token(Token = "0x40021DD")]
		SP,
		// Token: 0x040021DE RID: 8670
		[Token(Token = "0x40021DE")]
		STR,
		// Token: 0x040021DF RID: 8671
		[Token(Token = "0x40021DF")]
		INT,
		// Token: 0x040021E0 RID: 8672
		[Token(Token = "0x40021E0")]
		DEX
	}
}
