Decompiled source of Zarkow Assault Pack v0.1.70

plugins\ZarkowAssaultPack.dll

Decompiled 8 months ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Configuration;
using HarmonyLib;
using Jotunn;
using Jotunn.Configs;
using Jotunn.Entities;
using Jotunn.Managers;
using Jotunn.Utils;
using SimpleJson;
using UnityEngine;
using ZarkowAssaultPack.Models;
using ZarkowAssaultPack.Services;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: AssemblyTitle("ZarkowAssaultPack")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("ZarkowAssaultPack")]
[assembly: AssemblyCopyright("Copyright © 2023")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("e3243d22-4307-4008-ba36-9f326008cde5")]
[assembly: AssemblyFileVersion("0.0.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.6.2", FrameworkDisplayName = ".NET Framework 4.6.2")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("0.0.0.0")]
namespace ZarkowAssaultPack
{
	[BepInPlugin("com.digitalsoftware.zarkowassaultpack", "Zarkow's Assault Pack", "0.1.70")]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[NetworkCompatibility(/*Could not decode attribute arguments.*/)]
	internal class ZAssaultPack : BaseUnityPlugin
	{
		public const string PluginGUID = "com.digitalsoftware.zarkowassaultpack";

		public const string PluginName = "Zarkow's Assault Pack";

		public const string PluginVersion = "0.1.70";

		public static ConfigEntry<int> AssaultPackVolume;

		private readonly Harmony _harmony = new Harmony("com.digitalsoftware.zarkowassaultpack");

		private readonly Dictionary<string, AssetBundle> _assetBundles = new Dictionary<string, AssetBundle>();

		public static CustomLocalization Localization = LocalizationManager.Instance.GetLocalization();

		private void Awake()
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Expected O, but got Unknown
			AssaultPackVolume = ((BaseUnityPlugin)this).Config.Bind<int>("General", "Assault Pack Volume", 100, new ConfigDescription("Custom Volume", (AcceptableValueBase)(object)new AcceptableValueRange<int>(0, 100), Array.Empty<object>()));
			LoadAssetBundles();
			AddAssetPackItem();
			UnloadAssetBundles();
			_harmony.PatchAll();
			Logger.LogInfo((object)"### ALPHA 0.1.70 ### Zarkow's Assault Pack Loaded.");
		}

		private void LoadAssetBundles()
		{
			_assetBundles.Add("assaultpack", AssetUtils.LoadAssetBundleFromResources("assaultpack"));
		}

		private void UnloadAssetBundles()
		{
			foreach (KeyValuePair<string, AssetBundle> assetBundle in _assetBundles)
			{
				assetBundle.Value.Unload(false);
			}
		}

		private void AddAssetPackItem()
		{
			List<AssaultPackItemConfig> list = new List<AssaultPackItemConfig>();
			list.AddRange(AssaultPackConfigManager.LoadAssetPackItemConfigJsonFromResource("ZarkowAssaultPack.Assets.Configs.assaultpackconfigs.json"));
			list.ForEach(delegate(AssaultPackItemConfig assaultPackItemConfig)
			{
				if (assaultPackItemConfig.enabled)
				{
					Logger.LogDebug((object)("### Get AssetBundle for '" + assaultPackItemConfig.bundleName + "'"));
					AssetBundle val = _assetBundles[assaultPackItemConfig.bundleName];
					if ((Object)(object)val == (Object)null)
					{
						Logger.LogWarning((object)"### AssetBundle is null");
					}
					else
					{
						Logger.LogDebug((object)("### Read asset from " + assaultPackItemConfig.prefabPath));
						GameObject val2 = val.LoadAsset<GameObject>(assaultPackItemConfig.prefabPath);
						Logger.LogDebug((object)("### Convert " + ((Object)val2).name + " To Item"));
						CustomItem val3 = AssaultPackItemConfig.ConvertToItem(val2, assaultPackItemConfig, val);
						Logger.LogDebug((object)("### Add item " + assaultPackItemConfig.name + " to ItemManager"));
						ItemManager.Instance.AddItem(val3);
						Logger.LogDebug((object)"### --- AssaultPackItem Added ---");
					}
				}
			});
		}
	}
}
namespace ZarkowAssaultPack.Services
{
	internal class AssaultPackConfigManager
	{
		public static List<AssaultPackItemConfig> LoadAssetPackItemConfigJsonFromResource(string resourceName)
		{
			string text;
			using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName))
			{
				using StreamReader streamReader = new StreamReader(stream);
				text = streamReader.ReadToEnd();
			}
			return SimpleJson.DeserializeObject<List<AssaultPackItemConfig>>(text);
		}
	}
}
namespace ZarkowAssaultPack.Scripts
{
	public class Barrel
	{
		public GameObject ThisBarrelGameObject;

		public GameObject LaunchEffectGameObject;

		public GameObject LaunchAudioGameObject;

		public Barrel(GameObject thisGameObject, GameObject launchEffectGameObject, GameObject launchAudioGameObject)
		{
			ThisBarrelGameObject = thisGameObject;
			LaunchEffectGameObject = launchEffectGameObject;
			LaunchAudioGameObject = launchAudioGameObject;
		}
	}
	public class DegreesSpecifier
	{
		public float DegreesY { get; set; }

		public float DegreesX { get; set; }

		public float Distance { get; set; }
	}
	public static class HelperLib
	{
		public static GameObject GetChildGameObject(GameObject fromGameObject, string withName)
		{
			Transform[] componentsInChildren = ((Component)fromGameObject.transform).GetComponentsInChildren<Transform>(true);
			foreach (Transform val in componentsInChildren)
			{
				if (((Object)((Component)val).gameObject).name == withName)
				{
					return ((Component)val).gameObject;
				}
			}
			return null;
		}

		public static void PrintOutObjectHierarchy(GameObject fromGameObject)
		{
			Logger.LogDebug((object)"### Assault Pack Item: --------------------------------------------------------------------------");
			Logger.LogDebug((object)$"### Assault Pack Item: >> Print hierarchy info for: {((Object)fromGameObject).name}, {((Object)fromGameObject).GetInstanceID()}");
			Transform[] componentsInChildren = ((Component)fromGameObject.transform).GetComponentsInChildren<Transform>(true);
			Transform[] array = componentsInChildren;
			foreach (Transform val in array)
			{
				Logger.LogDebug((object)$"### Assault Pack Item: >> {((Object)val).name} - Active: {((Component)val).gameObject.activeInHierarchy}");
			}
			Logger.LogDebug((object)$"### Assault Pack Item: >> Sum parts: {componentsInChildren.Length} --------------------------------------------------");
		}

		public static void PrintOutGameObjectInfo(GameObject fromGameObject)
		{
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_004a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0069: Unknown result type (might be due to invalid IL or missing references)
			//IL_0088: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c6: Unknown result type (might be due to invalid IL or missing references)
			Logger.LogDebug((object)$"### Assault Pack Item: >> Print info for: {((Object)fromGameObject).name}, {((Object)fromGameObject).GetInstanceID()}");
			Logger.LogDebug((object)$"### Assault Pack Item: >> position: {fromGameObject.transform.position}");
			Logger.LogDebug((object)$"### Assault Pack Item: >> localPosition: {fromGameObject.transform.localPosition}");
			Logger.LogDebug((object)$"### Assault Pack Item: >> rotation: {fromGameObject.transform.eulerAngles}");
			Logger.LogDebug((object)$"### Assault Pack Item: >> localRotation: {fromGameObject.transform.localEulerAngles}");
			Logger.LogDebug((object)$"### Assault Pack Item: >> lossyScale: {fromGameObject.transform.lossyScale}");
			Logger.LogDebug((object)$"### Assault Pack Item: >> localScale: {fromGameObject.transform.localScale}");
			Logger.LogDebug((object)"### Assault Pack Item: >> ------------------------------------------------------------------------");
		}

		public static void PrintOutAimResult(DegreesSpecifier aimResult)
		{
			Logger.LogDebug((object)$"### Assault Pack Item: >> Print info for aimResult: {aimResult.GetHashCode()}");
			Logger.LogDebug((object)$"### Assault Pack Item: >> DegreesX: {aimResult.DegreesX}");
			Logger.LogDebug((object)$"### Assault Pack Item: >> DegreesY: {aimResult.DegreesY}");
			Logger.LogDebug((object)$"### Assault Pack Item: >> Distance: {aimResult.Distance}");
		}

		public static void PrintAllReflectionOfCharacter(Character character)
		{
			Logger.LogDebug((object)$"### Assault Pack Item: >> Print info for Character: {character.m_name}, {((Object)character).GetInstanceID()}");
			PropertyInfo[] properties = ((object)character).GetType().GetProperties();
			Logger.LogDebug((object)$"### Assault Pack Item: >> Properties: {properties.Length}");
			PropertyInfo[] array = properties;
			foreach (PropertyInfo propertyInfo in array)
			{
				object value = propertyInfo.GetValue(character, null);
				Logger.LogDebug((object)("### Assault Pack Item:  --- >> : " + propertyInfo.Name + ", value: " + value));
			}
			FieldInfo[] fields = ((object)character).GetType().GetFields();
			Logger.LogDebug((object)$"### Assault Pack Item: >> Fields: {fields.Length}");
			FieldInfo[] array2 = fields;
			foreach (FieldInfo fieldInfo in array2)
			{
				object value2 = fieldInfo.GetValue(character);
				Logger.LogDebug((object)("### Assault Pack Item:  --- >> : " + fieldInfo.Name + ", value: " + value2));
			}
			MemberInfo[] members = ((object)character).GetType().GetMembers();
			Logger.LogDebug((object)$"### Assault Pack Item: >> Members: {members.Length}");
			MemberInfo[] array3 = members;
			foreach (MemberInfo memberInfo in array3)
			{
				Logger.LogDebug((object)$"### Assault Pack Item:  --- >> : {memberInfo.Name}, value: {memberInfo}");
			}
			Logger.LogDebug((object)"### Assault Pack Item: >> ------------------------------------------------------------------------");
		}

		public static void PrintAllReflectionOfObject(object yourObject)
		{
			Logger.LogDebug((object)$"### Assault Pack Item: >> Print info for Object: {yourObject}, {yourObject.GetHashCode()}");
			PropertyInfo[] properties = yourObject.GetType().GetProperties();
			Logger.LogDebug((object)$"### Assault Pack Item: >> Properties: {properties.Length}");
			PropertyInfo[] array = properties;
			foreach (PropertyInfo propertyInfo in array)
			{
				object value = propertyInfo.GetValue(yourObject, null);
				Logger.LogDebug((object)("### Assault Pack Item:  --- >> : " + propertyInfo.Name + ", value: " + value));
			}
			FieldInfo[] fields = yourObject.GetType().GetFields();
			Logger.LogDebug((object)$"### Assault Pack Item: >> Fields: {fields.Length}");
			FieldInfo[] array2 = fields;
			foreach (FieldInfo fieldInfo in array2)
			{
				object value2 = fieldInfo.GetValue(yourObject);
				Logger.LogDebug((object)("### Assault Pack Item:  --- >> : " + fieldInfo.Name + ", value: " + value2));
			}
			MemberInfo[] members = yourObject.GetType().GetMembers();
			Logger.LogDebug((object)$"### Assault Pack Item: >> Members: {members.Length}");
			MemberInfo[] array3 = members;
			foreach (MemberInfo memberInfo in array3)
			{
				Logger.LogDebug((object)$"### Assault Pack Item:  --- >> : {memberInfo.Name}, value: {memberInfo}");
			}
			Logger.LogDebug((object)"### Assault Pack Item: >> ------------------------------------------------------------------------");
		}
	}
	public static class MathHelper
	{
		public static double NthRoot(double A, int N)
		{
			return Math.Pow(A, 1.0 / (double)N);
		}

		public static void GetDegreesBetweenAimAndTarget(DegreesSpecifier aimResult, Transform aimTransform, Vector3 targetLocation, Transform debug)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Unknown result type (might be due to invalid IL or missing references)
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0054: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_009f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0094: Unknown result type (might be due to invalid IL or missing references)
			Quaternion rotation = aimTransform.rotation;
			aimTransform.LookAt(targetLocation, Vector3.up);
			Quaternion localRotation = aimTransform.localRotation;
			float num = ((Quaternion)(ref localRotation)).eulerAngles.y;
			if (num > 180f)
			{
				num -= 360f;
			}
			if (num < -180f)
			{
				num += 360f;
			}
			aimResult.DegreesY = num;
			localRotation = aimTransform.localRotation;
			float num2 = ((Quaternion)(ref localRotation)).eulerAngles.x;
			if (num2 > 180f)
			{
				num2 -= 360f;
			}
			if (num2 < -180f)
			{
				num2 += 360f;
			}
			aimResult.DegreesX = num2;
			if ((Object)(object)debug != (Object)null)
			{
				debug.rotation = aimTransform.rotation;
			}
			aimTransform.rotation = rotation;
		}

		public static Vector3 FirstOrderIntercept(Vector3 shooterPosition, Vector3 shooterVelocity, float shotSpeed, Vector3 targetPosition, Vector3 targetVelocity)
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000a: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0010: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Unknown result type (might be due to invalid IL or missing references)
			//IL_0013: Unknown result type (might be due to invalid IL or missing references)
			//IL_001a: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Unknown result type (might be due to invalid IL or missing references)
			//IL_001d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0022: Unknown result type (might be due to invalid IL or missing references)
			Vector3 targetRelativePosition = targetPosition - shooterPosition;
			Vector3 val = targetVelocity - shooterVelocity;
			float num = FirstOrderInterceptTime(shotSpeed, targetRelativePosition, val);
			return targetPosition + num * val;
		}

		public static float FirstOrderInterceptTime(float shotSpeed, Vector3 targetRelativePosition, Vector3 targetRelativeVelocity)
		{
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_0037: Unknown result type (might be due to invalid IL or missing references)
			float sqrMagnitude = ((Vector3)(ref targetRelativeVelocity)).sqrMagnitude;
			if (sqrMagnitude < 0.001f)
			{
				return 0f;
			}
			float num = sqrMagnitude - shotSpeed * shotSpeed;
			if (Mathf.Abs(num) < 0.001f)
			{
				return Mathf.Max((0f - ((Vector3)(ref targetRelativePosition)).sqrMagnitude) / (2f * Vector3.Dot(targetRelativeVelocity, targetRelativePosition)), 0f);
			}
			float num2 = 2f * Vector3.Dot(targetRelativeVelocity, targetRelativePosition);
			float sqrMagnitude2 = ((Vector3)(ref targetRelativePosition)).sqrMagnitude;
			float num3 = num2 * num2 - 4f * num * sqrMagnitude2;
			if (num3 > 0f)
			{
				float num4 = (0f - num2 + Mathf.Sqrt(num3)) / (2f * num);
				float num5 = (0f - num2 - Mathf.Sqrt(num3)) / (2f * num);
				if (num4 > 0f)
				{
					if (num5 > 0f)
					{
						return Mathf.Min(num4, num5);
					}
					return num4;
				}
				return Mathf.Max(num5, 0f);
			}
			if (num3 < 0f)
			{
				return 0f;
			}
			return Mathf.Max((0f - num2) / (2f * num), 0f);
		}

		public static Rect GetBoundingBoxOnScreen(Bounds bounds, Camera camera)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_000a: Unknown result type (might be due to invalid IL or missing references)
			//IL_000f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_001e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Unknown result type (might be due to invalid IL or missing references)
			//IL_0038: Unknown result type (might be due to invalid IL or missing references)
			//IL_003d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: Unknown result type (might be due to invalid IL or missing references)
			//IL_004d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0052: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_005c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0062: Unknown result type (might be due to invalid IL or missing references)
			//IL_006c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0071: Unknown result type (might be due to invalid IL or missing references)
			//IL_0076: Unknown result type (might be due to invalid IL or missing references)
			//IL_007d: Unknown result type (might be due to invalid IL or missing references)
			//IL_007e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_0089: Unknown result type (might be due to invalid IL or missing references)
			//IL_0093: Unknown result type (might be due to invalid IL or missing references)
			//IL_0098: Unknown result type (might be due to invalid IL or missing references)
			//IL_009d: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bc: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00db: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0102: Unknown result type (might be due to invalid IL or missing references)
			//IL_0107: Unknown result type (might be due to invalid IL or missing references)
			//IL_010d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0117: Unknown result type (might be due to invalid IL or missing references)
			//IL_011c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0121: Unknown result type (might be due to invalid IL or missing references)
			//IL_0126: Unknown result type (might be due to invalid IL or missing references)
			//IL_012c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0136: Unknown result type (might be due to invalid IL or missing references)
			//IL_013b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0140: Unknown result type (might be due to invalid IL or missing references)
			//IL_0147: Unknown result type (might be due to invalid IL or missing references)
			//IL_0148: Unknown result type (might be due to invalid IL or missing references)
			//IL_014d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0153: Unknown result type (might be due to invalid IL or missing references)
			//IL_015d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0162: Unknown result type (might be due to invalid IL or missing references)
			//IL_0167: Unknown result type (might be due to invalid IL or missing references)
			//IL_016c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0172: Unknown result type (might be due to invalid IL or missing references)
			//IL_017c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0181: Unknown result type (might be due to invalid IL or missing references)
			//IL_0186: Unknown result type (might be due to invalid IL or missing references)
			//IL_018b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0191: Unknown result type (might be due to invalid IL or missing references)
			//IL_019b: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_01cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d1: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_01eb: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0200: Unknown result type (might be due to invalid IL or missing references)
			//IL_0205: Unknown result type (might be due to invalid IL or missing references)
			//IL_020a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0211: Unknown result type (might be due to invalid IL or missing references)
			//IL_0212: Unknown result type (might be due to invalid IL or missing references)
			//IL_0217: Unknown result type (might be due to invalid IL or missing references)
			//IL_021d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0227: Unknown result type (might be due to invalid IL or missing references)
			//IL_022c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0231: Unknown result type (might be due to invalid IL or missing references)
			//IL_0236: Unknown result type (might be due to invalid IL or missing references)
			//IL_023c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0246: Unknown result type (might be due to invalid IL or missing references)
			//IL_024b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0250: Unknown result type (might be due to invalid IL or missing references)
			//IL_0255: Unknown result type (might be due to invalid IL or missing references)
			//IL_025b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0265: Unknown result type (might be due to invalid IL or missing references)
			//IL_026a: Unknown result type (might be due to invalid IL or missing references)
			//IL_026f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0276: Unknown result type (might be due to invalid IL or missing references)
			//IL_0277: Unknown result type (might be due to invalid IL or missing references)
			//IL_027c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0282: Unknown result type (might be due to invalid IL or missing references)
			//IL_028c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0291: Unknown result type (might be due to invalid IL or missing references)
			//IL_0296: Unknown result type (might be due to invalid IL or missing references)
			//IL_029b: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c0: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_02cf: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_02db: Unknown result type (might be due to invalid IL or missing references)
			//IL_02dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e7: Unknown result type (might be due to invalid IL or missing references)
			//IL_02f1: Unknown result type (might be due to invalid IL or missing references)
			//IL_02f6: Unknown result type (might be due to invalid IL or missing references)
			//IL_02fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0300: Unknown result type (might be due to invalid IL or missing references)
			//IL_0306: Unknown result type (might be due to invalid IL or missing references)
			//IL_0310: Unknown result type (might be due to invalid IL or missing references)
			//IL_0315: Unknown result type (might be due to invalid IL or missing references)
			//IL_031a: Unknown result type (might be due to invalid IL or missing references)
			//IL_031f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0325: Unknown result type (might be due to invalid IL or missing references)
			//IL_032f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0334: Unknown result type (might be due to invalid IL or missing references)
			//IL_0339: Unknown result type (might be due to invalid IL or missing references)
			//IL_0353: Unknown result type (might be due to invalid IL or missing references)
			//IL_0358: Unknown result type (might be due to invalid IL or missing references)
			//IL_0365: Unknown result type (might be due to invalid IL or missing references)
			//IL_036a: Unknown result type (might be due to invalid IL or missing references)
			//IL_036f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0371: Unknown result type (might be due to invalid IL or missing references)
			//IL_03f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_038f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0383: Unknown result type (might be due to invalid IL or missing references)
			//IL_03ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_03a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_03cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_03bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_03dd: Unknown result type (might be due to invalid IL or missing references)
			Vector3 center = ((Bounds)(ref bounds)).center;
			Vector3 size = ((Bounds)(ref bounds)).size;
			Vector3[] array = (Vector3[])(object)new Vector3[8]
			{
				center + Vector3.right * size.x / 2f + Vector3.up * size.y / 2f + Vector3.forward * size.z / 2f,
				center + Vector3.right * size.x / 2f + Vector3.up * size.y / 2f - Vector3.forward * size.z / 2f,
				center + Vector3.right * size.x / 2f - Vector3.up * size.y / 2f + Vector3.forward * size.z / 2f,
				center + Vector3.right * size.x / 2f - Vector3.up * size.y / 2f - Vector3.forward * size.z / 2f,
				center - Vector3.right * size.x / 2f + Vector3.up * size.y / 2f + Vector3.forward * size.z / 2f,
				center - Vector3.right * size.x / 2f + Vector3.up * size.y / 2f - Vector3.forward * size.z / 2f,
				center - Vector3.right * size.x / 2f - Vector3.up * size.y / 2f + Vector3.forward * size.z / 2f,
				center - Vector3.right * size.x / 2f - Vector3.up * size.y / 2f - Vector3.forward * size.z / 2f
			};
			Rect result = Rect.MinMaxRect(float.MaxValue, float.MaxValue, float.MinValue, float.MinValue);
			for (int i = 0; i < array.Length; i++)
			{
				Vector3 val = camera.WorldToScreenPoint(array[i]);
				if (val.x < ((Rect)(ref result)).xMin)
				{
					((Rect)(ref result)).xMin = val.x;
				}
				if (val.y < ((Rect)(ref result)).yMin)
				{
					((Rect)(ref result)).yMin = val.y;
				}
				if (val.x > ((Rect)(ref result)).xMax)
				{
					((Rect)(ref result)).xMax = val.x;
				}
				if (val.y > ((Rect)(ref result)).yMax)
				{
					((Rect)(ref result)).yMax = val.y;
				}
			}
			return result;
		}
	}
}
namespace ZarkowAssaultPack.Models
{
	[Serializable]
	public class AssaultPackItemConfigRequirement
	{
		public string item;

		public int amount;

		public int amountPerLevel;

		public static RequirementConfig Convert(AssaultPackItemConfigRequirement assaultPackItemConfigRequirement)
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			//IL_0005: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_001d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0029: Unknown result type (might be due to invalid IL or missing references)
			//IL_0031: Expected O, but got Unknown
			return new RequirementConfig
			{
				Amount = assaultPackItemConfigRequirement.amount,
				Item = assaultPackItemConfigRequirement.item,
				AmountPerLevel = assaultPackItemConfigRequirement.amountPerLevel,
				Recover = false
			};
		}
	}
	[Serializable]
	public class AssaultPackItemConfigIcon
	{
		public string iconPath;

		public static string Convert(AssaultPackItemConfigIcon assaultPackItemConfigIcon)
		{
			return assaultPackItemConfigIcon.iconPath;
		}
	}
	[Serializable]
	public class AssaultPackItemConfig
	{
		public string name;

		public string bundleName;

		public string prefabPath;

		public string description;

		public string craftingStation;

		public int minStationLevel = 1;

		public bool enabled;

		public string type;

		public List<AssaultPackItemConfigRequirement> resources;

		public List<AssaultPackItemConfigIcon> icons;

		public static CustomItem ConvertToItem(GameObject prefab, AssaultPackItemConfig assaultPackItemConfig, AssetBundle assetBundle)
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			//IL_0005: Unknown result type (might be due to invalid IL or missing references)
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_0030: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0048: Unknown result type (might be due to invalid IL or missing references)
			//IL_0054: Unknown result type (might be due to invalid IL or missing references)
			//IL_0077: Expected O, but got Unknown
			//IL_00af: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b5: Expected O, but got Unknown
			ItemConfig val = new ItemConfig
			{
				Amount = 1,
				MinStationLevel = ((assaultPackItemConfig.minStationLevel <= 1) ? 1 : assaultPackItemConfig.minStationLevel),
				Name = assaultPackItemConfig.name,
				Description = assaultPackItemConfig.description,
				Enabled = assaultPackItemConfig.enabled,
				CraftingStation = assaultPackItemConfig.craftingStation,
				Requirements = assaultPackItemConfig.resources.Select(AssaultPackItemConfigRequirement.Convert).ToArray()
			};
			Sprite[] array = TurnIconPathsToIcons(assaultPackItemConfig.icons?.Select(AssaultPackItemConfigIcon.Convert).ToArray(), assetBundle);
			if (array.Length != 0)
			{
				val.Icons = array;
			}
			return new CustomItem(prefab, false, val);
		}

		public static Sprite[] TurnIconPathsToIcons(string[] iconPaths, AssetBundle assetBundle)
		{
			Logger.LogDebug((object)$"### TurnIconPathsToIcons(), {iconPaths}, {assetBundle}");
			List<Sprite> list = new List<Sprite>();
			if (iconPaths == null)
			{
				Logger.LogDebug((object)"### TurnIconPathsToIcons(), no icons defined, skip all");
				return list.ToArray();
			}
			foreach (string text in iconPaths)
			{
				if (string.IsNullOrWhiteSpace(text))
				{
					Logger.LogDebug((object)"### TurnIconPathsToIcons(), icons resolve to null or blank, skip");
					continue;
				}
				Logger.LogDebug((object)("### TurnIconPathsToIcons(), icon: " + text));
				Sprite val = assetBundle.LoadAsset<Sprite>(text);
				if ((Object)(object)val == (Object)null)
				{
					Logger.LogDebug((object)"### TurnIconPathsToIcons(), icons resolve from asset bundle to null, skip");
				}
				else
				{
					list.Add(val);
				}
			}
			return list.ToArray();
		}
	}
}