using System;
using System.Linq;
using Cpp2IlInjected;
using MarsSDK;
using UnityEngine;

// Token: 0x02000155 RID: 341
[Token(Token = "0x2000155")]
public class ItemPool
{
	// Token: 0x06001192 RID: 4498 RVA: 0x000020D3 File Offset: 0x000002D3
	[Token(Token = "0x6001192")]
	[Address(RVA = "0x10DE8C0", Offset = "0x10DD6C0", VA = "0x1810DE8C0")]
	public ItemPool(string itemName, Transform root, ItemSystem.ItemType itemType, int size, float aliveTime)
	{
		throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
	}

	// Token: 0x06001193 RID: 4499 RVA: 0x000020D3 File Offset: 0x000002D3
	[Token(Token = "0x6001193")]
	[Address(RVA = "0x10DE660", Offset = "0x10DD460", VA = "0x1810DE660")]
	private void RegisterItemProcessor()
	{
		throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
	}

	// Token: 0x06001194 RID: 4500 RVA: 0x000284C4 File Offset: 0x000266C4
	[Token(Token = "0x6001194")]
	[Address(RVA = "0x10DE320", Offset = "0x10DD120", VA = "0x1810DE320")]
	public void Init()
	{
		AssetItemRequest assetItemRequest = new AssetItemRequest(this.itemName);
		AssetItemRequest req = assetItemRequest;
		AssetItemRequest req2 = req;
		Action action = delegate
		{
			int assetGroup = req.AssetGroup;
			string <AssetName>k__BackingField = req.<AssetName>k__BackingField;
			Item component = Game.GetAsset<GameObject>(assetGroup, <AssetName>k__BackingField).GetComponent<Item>();
			ItemPool <>4__this = this;
			float g_fUseTime = component.g_fUseTime;
			<>4__this.useTime = g_fUseTime;
		};
		req2.<OnFinished>k__BackingField = action;
		Game.LoadAsset(req);
	}

	// Token: 0x06001195 RID: 4501 RVA: 0x000020D3 File Offset: 0x000002D3
	[Token(Token = "0x6001195")]
	[Address(RVA = "0x10DE470", Offset = "0x10DD270", VA = "0x1810DE470")]
	public Item NewUse(Vector3 position, Quaternion rotation, bool isDiscarded)
	{
		throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
	}

	// Token: 0x06001196 RID: 4502 RVA: 0x00028520 File Offset: 0x00026720
	[Token(Token = "0x6001196")]
	[Address(RVA = "0x10DE280", Offset = "0x10DD080", VA = "0x1810DE280")]
	public void AllCheckFloor()
	{
		GameObjectPoolLimited<Item> gameObjectPoolLimited = this.pooledItems;
		Action<Item> action = this.itemProcessor;
		gameObjectPoolLimited.ProcessActivePool(action);
	}

	// Token: 0x06001197 RID: 4503 RVA: 0x00028548 File Offset: 0x00026748
	[Token(Token = "0x6001197")]
	[Address(RVA = "0x10DE780", Offset = "0x10DD580", VA = "0x1810DE780")]
	public bool TryGetActiveProperty(int propertyID)
	{
		Item[] activePoolClone = this.pooledItems.GetActivePoolClone();
		Func<Item, bool> func = delegate(Item property)
		{
			int propertyID2 = propertyID;
			return property.g_iPropertyID == propertyID2;
		};
		Item item = Enumerable.FirstOrDefault<Item>(activePoolClone, func);
		int num = 0;
		return item != num;
	}

	// Token: 0x06001198 RID: 4504 RVA: 0x00028594 File Offset: 0x00026794
	[Token(Token = "0x6001198")]
	[Address(RVA = "0x5F9910", Offset = "0x5F8710", VA = "0x1805F9910")]
	public float GetUseTime()
	{
		return this.useTime;
	}

	// Token: 0x06001199 RID: 4505 RVA: 0x000285A8 File Offset: 0x000267A8
	[Token(Token = "0x6001199")]
	[Address(RVA = "0x10DE2D0", Offset = "0x10DD0D0", VA = "0x1810DE2D0")]
	public void Dispose()
	{
		this.pooledItems.Dispose();
	}

	// Token: 0x04001B60 RID: 7008
	[FieldOffset(Offset = "0x10")]
	[Token(Token = "0x4001B60")]
	private GameObjectPoolLimited<Item> pooledItems;

	// Token: 0x04001B61 RID: 7009
	[FieldOffset(Offset = "0x18")]
	[Token(Token = "0x4001B61")]
	private Action<Item> itemProcessor;

	// Token: 0x04001B62 RID: 7010
	[FieldOffset(Offset = "0x20")]
	[Token(Token = "0x4001B62")]
	private string itemName;

	// Token: 0x04001B63 RID: 7011
	[FieldOffset(Offset = "0x28")]
	[Token(Token = "0x4001B63")]
	private float useTime;

	// Token: 0x04001B64 RID: 7012
	[FieldOffset(Offset = "0x2C")]
	[Token(Token = "0x4001B64")]
	private float aliveTime;
}
