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

// Token: 0x0200020B RID: 523
[Token(Token = "0x200020B")]
public class StageTimeManager : MonoBehaviour
{
	// Token: 0x06001498 RID: 5272 RVA: 0x0002ECDC File Offset: 0x0002CEDC
	[Token(Token = "0x6001498")]
	[Address(RVA = "0xAB07B0", Offset = "0xAAF5B0", VA = "0x180AB07B0")]
	public void Init()
	{
		Game.OnGameSettingsChanged += new Action(this.UpdateWithGameSetting);
		bool hitStop = Game.Config.gameSettings.hitStop;
		this.enableHitStop = hitStop;
	}

	// Token: 0x06001499 RID: 5273 RVA: 0x0002ED1C File Offset: 0x0002CF1C
	[Token(Token = "0x6001499")]
	[Address(RVA = "0xAB10B0", Offset = "0xAAFEB0", VA = "0x180AB10B0")]
	private void UpdateWithGameSetting(GameSettings gameSettings)
	{
		bool hitStop = gameSettings.hitStop;
		this.enableHitStop = hitStop;
	}

	// Token: 0x0600149A RID: 5274 RVA: 0x0002ED40 File Offset: 0x0002CF40
	[Token(Token = "0x600149A")]
	[Address(RVA = "0xAB0590", Offset = "0xAAF390", VA = "0x180AB0590")]
	public void Execute(Action<TimeEffectType, StageTimeManager> timeEventHandler)
	{
		/*
An exception occurred when decompiling this method (0600149A)

ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void StageTimeManager::Execute(System.Action`2<TimeEffectType,StageTimeManager>)

 ---> System.ArgumentOutOfRangeException: Non-negative number required. (Parameter 'length')
   at System.Array.Copy(Array sourceArray, Int32 sourceIndex, Array destinationArray, Int32 destinationIndex, Int32 length, Boolean reliable)
   at System.Array.Copy(Array sourceArray, Array destinationArray, Int32 length)
   at ICSharpCode.Decompiler.ILAst.ILAstBuilder.StackSlot.ModifyStack(StackSlot[] stack, Int32 popCount, Int32 pushCount, ByteCode pushDefinition) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstBuilder.cs:line 51
   at ICSharpCode.Decompiler.ILAst.ILAstBuilder.StackAnalysis(MethodDef methodDef) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstBuilder.cs:line 401
   at ICSharpCode.Decompiler.ILAst.ILAstBuilder.Build(MethodDef methodDef, Boolean optimize, DecompilerContext context) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstBuilder.cs:line 276
   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 112
   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: 0x0600149B RID: 5275 RVA: 0x000020D3 File Offset: 0x000002D3
	[Token(Token = "0x600149B")]
	[Address(RVA = "0xAB08D0", Offset = "0xAAF6D0", VA = "0x180AB08D0")]
	private IEnumerator<float> Tick()
	{
		throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
	}

	// Token: 0x0600149C RID: 5276 RVA: 0x0002EE14 File Offset: 0x0002D014
	[Token(Token = "0x600149C")]
	[Address(RVA = "0xAB00D0", Offset = "0xAAEED0", VA = "0x180AB00D0")]
	private void CalculateTimeValues()
	{
		/*
An exception occurred when decompiling this method (0600149C)

ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void StageTimeManager::CalculateTimeValues()

 ---> System.ArgumentOutOfRangeException: Non-negative number required. (Parameter 'length')
   at System.Array.Copy(Array sourceArray, Int32 sourceIndex, Array destinationArray, Int32 destinationIndex, Int32 length, Boolean reliable)
   at System.Array.Copy(Array sourceArray, Array destinationArray, Int32 length)
   at ICSharpCode.Decompiler.ILAst.ILAstBuilder.StackSlot.ModifyStack(StackSlot[] stack, Int32 popCount, Int32 pushCount, ByteCode pushDefinition) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstBuilder.cs:line 51
   at ICSharpCode.Decompiler.ILAst.ILAstBuilder.StackAnalysis(MethodDef methodDef) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstBuilder.cs:line 401
   at ICSharpCode.Decompiler.ILAst.ILAstBuilder.Build(MethodDef methodDef, Boolean optimize, DecompilerContext context) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstBuilder.cs:line 276
   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 112
   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: 0x0600149D RID: 5277 RVA: 0x000020D3 File Offset: 0x000002D3
	[Token(Token = "0x600149D")]
	[Address(RVA = "0xAB0880", Offset = "0xAAF680", VA = "0x180AB0880")]
	private void SendEvents(TimeEffectType effectType)
	{
		throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
	}

	// Token: 0x0600149E RID: 5278 RVA: 0x000020D3 File Offset: 0x000002D3
	[Token(Token = "0x600149E")]
	[Address(RVA = "0xAB0D20", Offset = "0xAAFB20", VA = "0x180AB0D20")]
	public void UpdateSystemTimeScale(float timeScale, bool clearHitStop)
	{
		throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
	}

	// Token: 0x0600149F RID: 5279 RVA: 0x000020D3 File Offset: 0x000002D3
	[Token(Token = "0x600149F")]
	[Address(RVA = "0xAB0E90", Offset = "0xAAFC90", VA = "0x180AB0E90")]
	public void UpdateTimeScaleFactor(float timeScale, float duration)
	{
		throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
	}

	// Token: 0x060014A0 RID: 5280 RVA: 0x000020D3 File Offset: 0x000002D3
	[Token(Token = "0x60014A0")]
	[Address(RVA = "0xAB0AC0", Offset = "0xAAF8C0", VA = "0x180AB0AC0")]
	public void UpdatePlayerTimeScale(float timeScale)
	{
		throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
	}

	// Token: 0x060014A1 RID: 5281 RVA: 0x000020D3 File Offset: 0x000002D3
	[Token(Token = "0x60014A1")]
	[Address(RVA = "0xAB0BF0", Offset = "0xAAF9F0", VA = "0x180AB0BF0")]
	public void UpdateStageTimeScale(float timeScale)
	{
		throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
	}

	// Token: 0x060014A2 RID: 5282 RVA: 0x000020D3 File Offset: 0x000002D3
	[Token(Token = "0x60014A2")]
	[Address(RVA = "0xAB0250", Offset = "0xAAF050", VA = "0x180AB0250")]
	public void EnablePlayerHitStop(float duration, float hitStopFactor)
	{
		throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
	}

	// Token: 0x060014A3 RID: 5283 RVA: 0x000020D3 File Offset: 0x000002D3
	[Token(Token = "0x60014A3")]
	[Address(RVA = "0xAB03F0", Offset = "0xAAF1F0", VA = "0x180AB03F0")]
	public void EnableStageHitStop(float duration, float hitStopFactor)
	{
		throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
	}

	// Token: 0x060014A4 RID: 5284 RVA: 0x0002EE68 File Offset: 0x0002D068
	[Token(Token = "0x60014A4")]
	[Address(RVA = "0x603D30", Offset = "0x602B30", VA = "0x180603D30")]
	public float GetGameDeltaTime()
	{
		return this.gameDeltaTime;
	}

	// Token: 0x060014A5 RID: 5285 RVA: 0x0002EE7C File Offset: 0x0002D07C
	[Token(Token = "0x60014A5")]
	[Address(RVA = "0x5B5B10", Offset = "0x5B4910", VA = "0x1805B5B10")]
	public float GetSystemDeltaTime()
	{
		return this.systemDeltaTime;
	}

	// Token: 0x060014A6 RID: 5286 RVA: 0x0002EE90 File Offset: 0x0002D090
	[Token(Token = "0x60014A6")]
	[Address(RVA = "0x31E490", Offset = "0x31D290", VA = "0x18031E490")]
	public TimeData GetPlayerTimeData()
	{
		return this.playerTimeData;
	}

	// Token: 0x060014A7 RID: 5287 RVA: 0x0002EEA4 File Offset: 0x0002D0A4
	[Token(Token = "0x60014A7")]
	[Address(RVA = "0x31E390", Offset = "0x31D190", VA = "0x18031E390")]
	public TimeData GetStageTimeData()
	{
		return this.stageTimeData;
	}

	// Token: 0x060014A8 RID: 5288 RVA: 0x000020D3 File Offset: 0x000002D3
	[Token(Token = "0x60014A8")]
	[Address(RVA = "0xAB0760", Offset = "0xAAF560", VA = "0x180AB0760")]
	public ulong GetPlayedSeconds()
	{
		throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
	}

	// Token: 0x060014A9 RID: 5289 RVA: 0x0002EEB8 File Offset: 0x0002D0B8
	[Token(Token = "0x60014A9")]
	[Address(RVA = "0xAB0140", Offset = "0xAAEF40", VA = "0x180AB0140")]
	public void Dispose()
	{
		CoroutineHandle[] array = new CoroutineHandle[4];
		int length = array.Length;
		CoroutineHandle coroutineHandle = this.mainProcessor;
		array[0] = coroutineHandle;
		CoroutineHandle coroutineHandle2 = this.systemFactorProcessor;
		array[0] = coroutineHandle2;
		CoroutineHandle coroutineHandle3 = this.playerHitStopProcessor;
		array[1] = coroutineHandle3;
		CoroutineHandle coroutineHandle4 = this.stageHitStopProcessor;
		array[1] = coroutineHandle4;
		int num = Timing.KillCoroutines(array);
		int num2 = 0;
		this.systemTimeScale = (float)num2;
		this.timeEventHandler = num2;
		throw new NullReferenceException();
	}

	// Token: 0x060014AA RID: 5290 RVA: 0x0002EF34 File Offset: 0x0002D134
	[Token(Token = "0x60014AA")]
	[Address(RVA = "0xAB10D0", Offset = "0xAAFED0", VA = "0x180AB10D0")]
	public StageTimeManager()
	{
		TimeData timeData = new TimeData();
		this.playerTimeData = timeData;
		TimeData timeData2 = new TimeData();
		this.stageTimeData = timeData2;
		base..ctor();
	}

	// Token: 0x060014AB RID: 5291 RVA: 0x000020D3 File Offset: 0x000002D3
	[Token(Token = "0x60014AB")]
	[Address(RVA = "0xAB0A40", Offset = "0xAAF840", VA = "0x180AB0A40")]
	[CompilerGenerated]
	private IEnumerator<float> <UpdateTimeScaleFactor>g__WaitForRestore|22_0(float delay)
	{
		throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
	}

	// Token: 0x060014AC RID: 5292 RVA: 0x000020D3 File Offset: 0x000002D3
	[Token(Token = "0x60014AC")]
	[Address(RVA = "0xAB0940", Offset = "0xAAF740", VA = "0x180AB0940")]
	[CompilerGenerated]
	private IEnumerator<float> <EnablePlayerHitStop>g__WaitForRestore|25_0(float timer)
	{
		throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
	}

	// Token: 0x060014AD RID: 5293 RVA: 0x000020D3 File Offset: 0x000002D3
	[Token(Token = "0x60014AD")]
	[Address(RVA = "0xAB09C0", Offset = "0xAAF7C0", VA = "0x180AB09C0")]
	[CompilerGenerated]
	private IEnumerator<float> <EnableStageHitStop>g__WaitForRestore|26_0(float timer)
	{
		throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
	}

	// Token: 0x04001FC6 RID: 8134
	[FieldOffset(Offset = "0x18")]
	[Token(Token = "0x4001FC6")]
	[SerializeField]
	private float gameDeltaTime;

	// Token: 0x04001FC7 RID: 8135
	[FieldOffset(Offset = "0x1C")]
	[Token(Token = "0x4001FC7")]
	[SerializeField]
	private float systemDeltaTime;

	// Token: 0x04001FC8 RID: 8136
	[FieldOffset(Offset = "0x20")]
	[Token(Token = "0x4001FC8")]
	[SerializeField]
	private bool enableHitStop = true;

	// Token: 0x04001FC9 RID: 8137
	[FieldOffset(Offset = "0x24")]
	[Token(Token = "0x4001FC9")]
	[SerializeField]
	private float systemTimeScale = 1f;

	// Token: 0x04001FCA RID: 8138
	[FieldOffset(Offset = "0x28")]
	[Token(Token = "0x4001FCA")]
	[SerializeField]
	private float systemTimeScaleFactor = 1f;

	// Token: 0x04001FCB RID: 8139
	[FieldOffset(Offset = "0x30")]
	[Token(Token = "0x4001FCB")]
	[SerializeField]
	private TimeData playerTimeData;

	// Token: 0x04001FCC RID: 8140
	[FieldOffset(Offset = "0x38")]
	[Token(Token = "0x4001FCC")]
	[SerializeField]
	private float playerHitStopTimer;

	// Token: 0x04001FCD RID: 8141
	[FieldOffset(Offset = "0x40")]
	[Token(Token = "0x4001FCD")]
	[SerializeField]
	private TimeData stageTimeData;

	// Token: 0x04001FCE RID: 8142
	[FieldOffset(Offset = "0x48")]
	[Token(Token = "0x4001FCE")]
	[SerializeField]
	private float stageHitStopTimer;

	// Token: 0x04001FCF RID: 8143
	[FieldOffset(Offset = "0x50")]
	[Token(Token = "0x4001FCF")]
	private ulong playedSeconds;

	// Token: 0x04001FD0 RID: 8144
	[FieldOffset(Offset = "0x58")]
	[Token(Token = "0x4001FD0")]
	private CoroutineHandle mainProcessor;

	// Token: 0x04001FD1 RID: 8145
	[FieldOffset(Offset = "0x5C")]
	[Token(Token = "0x4001FD1")]
	private CoroutineHandle systemFactorProcessor;

	// Token: 0x04001FD2 RID: 8146
	[FieldOffset(Offset = "0x60")]
	[Token(Token = "0x4001FD2")]
	private CoroutineHandle playerHitStopProcessor;

	// Token: 0x04001FD3 RID: 8147
	[FieldOffset(Offset = "0x64")]
	[Token(Token = "0x4001FD3")]
	private CoroutineHandle stageHitStopProcessor;

	// Token: 0x04001FD4 RID: 8148
	[FieldOffset(Offset = "0x68")]
	[Token(Token = "0x4001FD4")]
	private Action<TimeEffectType, StageTimeManager> timeEventHandler;
}
