Decompiled source of Ninja Tools Utils v1.0.1

plugins/SurvivorFramework.dll

Decompiled 2 days ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using System.Text;
using System.Text.RegularExpressions;
using BepInEx;
using EntityStates;
using JetBrains.Annotations;
using KinematicCharacterController;
using Microsoft.CodeAnalysis;
using On.RoR2;
using On.RoR2.UI;
using R2API;
using R2API.Networking;
using R2API.Networking.Interfaces;
using R2API.Utils;
using RoR2;
using RoR2.CameraModes;
using RoR2.Navigation;
using RoR2.Projectile;
using RoR2.Skills;
using RoR2.UI;
using SurvivorFramework.Defense;
using SurvivorFramework.Effects;
using SurvivorFramework.Forms;
using SurvivorFramework.Mastery;
using SurvivorFramework.Movement;
using SurvivorFramework.Net;
using SurvivorFramework.Ninja;
using SurvivorFramework.Resources;
using SurvivorFramework.UI;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.Networking;
using UnityEngine.Rendering;
using UnityEngine.UI;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("SurvivorFramework")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+58a86b8ad83f0e9f3dda462bae30810ec5d2d51d")]
[assembly: AssemblyProduct("SurvivorFramework")]
[assembly: AssemblyTitle("SurvivorFramework")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)]
	internal sealed class NullableAttribute : Attribute
	{
		public readonly byte[] NullableFlags;

		public NullableAttribute(byte P_0)
		{
			NullableFlags = new byte[1] { P_0 };
		}

		public NullableAttribute(byte[] P_0)
		{
			NullableFlags = P_0;
		}
	}
	[CompilerGenerated]
	[Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)]
	internal sealed class NullableContextAttribute : Attribute
	{
		public readonly byte Flag;

		public NullableContextAttribute(byte P_0)
		{
			Flag = P_0;
		}
	}
}
namespace SurvivorFramework
{
	public static class Framework
	{
		public const string Version = "1.0.1";

		private static bool initialized;

		public static void Init()
		{
			if (!initialized)
			{
				initialized = true;
				NetworkingAPI.RegisterMessageType<SurfaceStateMessage>();
				NetworkingAPI.RegisterMessageType<KillCreditMessage>();
				NetworkingAPI.RegisterMessageType<SubstitutionMessage>();
				NetworkingAPI.RegisterMessageType<SubstitutionLogMessage>();
				NetworkingAPI.RegisterMessageType<AnimSyncMessage>();
				NetworkingAPI.RegisterMessageType<FormRequestMessage>();
				NetworkingAPI.RegisterMessageType<NinjaChargeMessage>();
				NetworkingAPI.RegisterMessageType<NinjaChargeBroadcast>();
				SubstitutionController.InstallHooks();
				SurfaceWalker.InstallHooks();
				MasteryTracker.InstallHooks();
				ResourceHud.InstallHooks();
				NinjaKeyHints.InstallHooks();
				FormController.InstallHooks();
				NinjaChakra.InstallHooks();
			}
		}
	}
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[NetworkCompatibility(/*Could not decode attribute arguments.*/)]
	[BepInPlugin("com.Eddie.SurvivorFramework", "SurvivorFramework", "1.0.1")]
	public class FrameworkPlugin : BaseUnityPlugin
	{
		public const string GUID = "com.Eddie.SurvivorFramework";

		public const string NAME = "SurvivorFramework";

		private void Awake()
		{
			Framework.Init();
		}
	}
}
namespace SurvivorFramework.UI
{
	public class NinjaKeyHints : MonoBehaviour
	{
		[Serializable]
		[CompilerGenerated]
		private sealed class <>c
		{
			public static readonly <>c <>9 = new <>c();

			public static hook_Awake <>9__3_0;

			public static Converter<RectTransform, string> <>9__16_0;

			public static Predicate<RectTransform> <>9__17_0;

			public static Predicate<Transform> <>9__28_0;

			internal void <InstallHooks>b__3_0(orig_Awake orig, HUD self)
			{
				orig.Invoke(self);
				((Component)self).gameObject.AddComponent<NinjaKeyHints>().hud = self;
			}

			internal string <FindNeighbours>b__16_0(RectTransform n)
			{
				return ((Object)n).name;
			}

			internal bool <ShiftNeighbours>b__17_0(RectTransform n)
			{
				return !Object.op_Implicit((Object)(object)n);
			}

			internal bool <UpdateChargeHint>b__28_0(Transform h)
			{
				return !Object.op_Implicit((Object)(object)h);
			}
		}

		public static readonly List<Func<GameObject, KeyCode?>> chargeKeyProviders = new List<Func<GameObject, KeyCode?>>();

		private HUD hud;

		private static bool installed;

		private readonly List<RectTransform> extraBuf = new List<RectTransform>();

		private readonly List<RectTransform> neighbours = new List<RectTransform>();

		private readonly Dictionary<RectTransform, Vector3> baseLocal = new Dictionary<RectTransform, Vector3>();

		private readonly Dictionary<RectTransform, Vector3> lastSet = new Dictionary<RectTransform, Vector3>();

		private float searchAt;

		private bool logged;

		private bool hooked;

		private readonly Vector3[] corners = (Vector3[])(object)new Vector3[4];

		private const string SealPng = "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";

		private static Sprite sealSprite;

		private GameObject chargeHint;

		private Component chargeKeyText;

		private string chargeKeyShown;

		private readonly List<Transform> hintCtrls = new List<Transform>();

		internal static void InstallHooks()
		{
			//IL_0022: Unknown result type (might be due to invalid IL or missing references)
			//IL_0027: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Expected O, but got Unknown
			if (installed)
			{
				return;
			}
			installed = true;
			object obj = <>c.<>9__3_0;
			if (obj == null)
			{
				hook_Awake val = delegate(orig_Awake orig, HUD self)
				{
					orig.Invoke(self);
					((Component)self).gameObject.AddComponent<NinjaKeyHints>().hud = self;
				};
				<>c.<>9__3_0 = val;
				obj = (object)val;
			}
			HUD.Awake += (hook_Awake)obj;
		}

		private static KeyCode? ChargeKey(GameObject body)
		{
			//IL_002f: Unknown result type (might be due to invalid IL or missing references)
			if (!Object.op_Implicit((Object)(object)body))
			{
				return null;
			}
			NinjaChakra component = body.GetComponent<NinjaChakra>();
			if (Object.op_Implicit((Object)(object)component) && component.hintKey != null)
			{
				try
				{
					return component.hintKey();
				}
				catch
				{
				}
			}
			foreach (Func<GameObject, KeyCode?> chargeKeyProvider in chargeKeyProviders)
			{
				try
				{
					KeyCode? result = chargeKeyProvider?.Invoke(body);
					if (result.HasValue)
					{
						return result;
					}
				}
				catch
				{
				}
			}
			return null;
		}

		private List<RectTransform> ExtraIcons()
		{
			extraBuf.Clear();
			RectTransform val = ResourceHud.extraSkillIcon?.Invoke();
			if (Object.op_Implicit((Object)(object)val))
			{
				extraBuf.Add(val);
			}
			foreach (Func<RectTransform> extraSkillIcon in ResourceHud.extraSkillIcons)
			{
				RectTransform val2 = null;
				try
				{
					val2 = extraSkillIcon?.Invoke();
				}
				catch
				{
				}
				if (Object.op_Implicit((Object)(object)val2) && !extraBuf.Contains(val2))
				{
					extraBuf.Add(val2);
				}
			}
			return extraBuf;
		}

		private void LateUpdate()
		{
			if (Object.op_Implicit((Object)(object)hud))
			{
				ShiftNeighbours();
			}
		}

		private bool UnderSkillIcon(Transform t)
		{
			SkillIcon[] skillIcons = hud.skillIcons;
			foreach (SkillIcon val in skillIcons)
			{
				if (Object.op_Implicit((Object)(object)val) && t.IsChildOf(((Component)val).transform))
				{
					return true;
				}
			}
			foreach (RectTransform item in ExtraIcons())
			{
				if (t.IsChildOf((Transform)(object)item))
				{
					return true;
				}
			}
			return false;
		}

		private void FindNeighbours()
		{
			//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_0048: 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_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e6: 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_00ea: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fb: Unknown result type (might be due to invalid IL or missing references)
			neighbours.Clear();
			hintCtrls.Clear();
			Transform transform = ((Component)hud.skillIcons[0]).transform;
			Transform transform2 = ((Component)hud.skillIcons[1]).transform;
			Vector3 val = transform.position - transform2.position;
			float magnitude = ((Vector3)(ref val)).magnitude;
			if (magnitude < 1E-05f)
			{
				return;
			}
			Vector3 val2 = val / magnitude;
			Component[] componentsInChildren = ((Component)hud).GetComponentsInChildren<Component>(true);
			foreach (Component val3 in componentsInChildren)
			{
				if (!Object.op_Implicit((Object)(object)val3) || ((object)val3).GetType().Name != "InputBindingDisplayController" || UnderSkillIcon(val3.transform))
				{
					continue;
				}
				Vector3 val4 = val3.transform.position - transform.position;
				float num = Vector3.Dot(val4, val2) / magnitude;
				Vector3 val5 = val4 - val2 * Vector3.Dot(val4, val2);
				float num2 = ((Vector3)(ref val5)).magnitude / magnitude;
				if (!(num < 0.2f) && !(num > 5f) && !(num2 > 1.6f))
				{
					Transform val6 = val3.transform;
					while (Object.op_Implicit((Object)(object)val6.parent) && !transform.IsChildOf(val6.parent))
					{
						val6 = val6.parent;
					}
					RectTransform val7 = (RectTransform)(object)((val6 is RectTransform) ? val6 : null);
					if (val7 != null && !neighbours.Contains(val7) && !transform.IsChildOf((Transform)(object)val7) && !UnderSkillIcon((Transform)(object)val7))
					{
						neighbours.Add(val7);
					}
					if (!hintCtrls.Contains(val3.transform))
					{
						hintCtrls.Add(val3.transform);
					}
				}
			}
			if (neighbours.Count > 0 && !logged)
			{
				logged = true;
				Debug.Log((object)("[SurvivorFramework] HUD key hints moved aside for the extra skill icons: " + string.Join(", ", neighbours.ConvertAll((RectTransform n) => ((Object)n).name))));
			}
		}

		private void ShiftNeighbours()
		{
			//IL_0069: Unknown result type (might be due to invalid IL or missing references)
			//IL_0073: Expected O, but got Unknown
			//IL_00ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_0106: Unknown result type (might be due to invalid IL or missing references)
			//IL_010b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0110: Unknown result type (might be due to invalid IL or missing references)
			//IL_0122: Unknown result type (might be due to invalid IL or missing references)
			//IL_0124: Unknown result type (might be due to invalid IL or missing references)
			//IL_0129: Unknown result type (might be due to invalid IL or missing references)
			//IL_018a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0164: Unknown result type (might be due to invalid IL or missing references)
			//IL_0169: Unknown result type (might be due to invalid IL or missing references)
			//IL_016b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0170: Unknown result type (might be due to invalid IL or missing references)
			//IL_022a: 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_0239: Unknown result type (might be due to invalid IL or missing references)
			//IL_023e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0243: Unknown result type (might be due to invalid IL or missing references)
			//IL_0248: Unknown result type (might be due to invalid IL or missing references)
			//IL_024c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0251: Unknown result type (might be due to invalid IL or missing references)
			//IL_0253: Unknown result type (might be due to invalid IL or missing references)
			//IL_0258: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_027b: 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)
			if (!Object.op_Implicit((Object)(object)hud) || hud.skillIcons == null || hud.skillIcons.Length < 2 || !Object.op_Implicit((Object)(object)hud.skillIcons[0]) || !Object.op_Implicit((Object)(object)hud.skillIcons[1]))
			{
				return;
			}
			if (!hooked)
			{
				hooked = true;
				Canvas.willRenderCanvases += new WillRenderCanvases(ShiftNeighbours);
			}
			neighbours.RemoveAll((RectTransform n) => !Object.op_Implicit((Object)(object)n));
			if (neighbours.Count == 0 && Time.unscaledTime >= searchAt)
			{
				searchAt = Time.unscaledTime + 1f;
				FindNeighbours();
			}
			if (neighbours.Count == 0)
			{
				return;
			}
			Vector3 val = ((Component)hud.skillIcons[0]).transform.position - ((Component)hud.skillIcons[1]).transform.position;
			float magnitude = ((Vector3)(ref val)).magnitude;
			if (magnitude < 1E-05f)
			{
				return;
			}
			Vector3 val2 = val / magnitude;
			Vector3 val3;
			foreach (RectTransform neighbour in neighbours)
			{
				if (baseLocal.ContainsKey(neighbour) && lastSet.TryGetValue(neighbour, out var value))
				{
					val3 = ((Transform)neighbour).localPosition - value;
					if (!(((Vector3)(ref val3)).sqrMagnitude > 1E-06f))
					{
						continue;
					}
				}
				baseLocal[neighbour] = ((Transform)neighbour).localPosition;
			}
			int num = 0;
			foreach (RectTransform item in ExtraIcons())
			{
				if (((Component)item).gameObject.activeInHierarchy)
				{
					num++;
				}
			}
			float num2 = (float)Mathf.Max(0, num - 1) * magnitude;
			foreach (RectTransform neighbour2 in neighbours)
			{
				if (Object.op_Implicit((Object)(object)((Transform)neighbour2).parent))
				{
					Vector3 val4 = baseLocal[neighbour2] + ((Transform)neighbour2).parent.InverseTransformVector(val2 * num2);
					val3 = ((Transform)neighbour2).localPosition - val4;
					if (((Vector3)(ref val3)).sqrMagnitude > 1E-08f)
					{
						((Transform)neighbour2).localPosition = val4;
					}
					lastSet[neighbour2] = ((Transform)neighbour2).localPosition;
				}
			}
			UpdateChargeHint(val2, magnitude);
		}

		private static Sprite SealSprite()
		{
			//IL_0010: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: 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_0024: Expected O, but got Unknown
			//IL_004e: Unknown result type (might be due to invalid IL or missing references)
			//IL_005d: Unknown result type (might be due to invalid IL or missing references)
			if (!Object.op_Implicit((Object)(object)sealSprite))
			{
				Texture2D val = new Texture2D(2, 2, (TextureFormat)4, false)
				{
					wrapMode = (TextureWrapMode)1,
					filterMode = (FilterMode)1
				};
				ImageConversion.LoadImage(val, Convert.FromBase64String("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"));
				sealSprite = Sprite.Create(val, new Rect(0f, 0f, (float)((Texture)val).width, (float)((Texture)val).height), new Vector2(0.5f, 0.5f), 100f);
			}
			return sealSprite;
		}

		public unsafe static string KeyLabel(KeyCode k)
		{
			string text = ((object)(*(KeyCode*)(&k))/*cast due to .constrained prefix*/).ToString();
			if (text.StartsWith("Alpha"))
			{
				return text.Substring(5);
			}
			if (text.StartsWith("Keypad"))
			{
				return "Num " + text.Substring(6);
			}
			text = text.Replace("Control", "Ctrl");
			if (text.StartsWith("Left") && text.Length > 4)
			{
				return "Left " + text.Substring(4);
			}
			if (text.StartsWith("Right") && text.Length > 5)
			{
				return "Right " + text.Substring(5);
			}
			switch (text)
			{
			case "Mouse0":
				return "M1";
			case "Mouse1":
				return "M2";
			case "Mouse2":
				return "M3";
			default:
				if (text.StartsWith("Mouse"))
				{
					return "M" + (int.Parse(text.Substring(5)) + 1);
				}
				return text;
			}
		}

		private void BuildChargeHint(RectTransform template)
		{
			//IL_0353: 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_02e6: Unknown result type (might be due to invalid IL or missing references)
			StringBuilder stringBuilder = new StringBuilder("[SurvivorFramework] charge key hint built from: ");
			Transform[] componentsInChildren = ((Component)template).GetComponentsInChildren<Transform>(true);
			foreach (Transform val in componentsInChildren)
			{
				stringBuilder.Append(((Object)(object)val == (Object)(object)template) ? "" : " | ").Append(((Object)val).name).Append(((Component)val).gameObject.activeSelf ? "" : "(off)")
					.Append(" [");
				Component[] components = ((Component)val).GetComponents<Component>();
				foreach (Component val2 in components)
				{
					if (Object.op_Implicit((Object)(object)val2) && !(val2 is Transform) && !(val2 is CanvasRenderer))
					{
						stringBuilder.Append(((object)val2).GetType().Name).Append(' ');
					}
				}
				stringBuilder.Append(']');
			}
			Debug.Log((object)stringBuilder.ToString());
			chargeHint = Object.Instantiate<GameObject>(((Component)template).gameObject, ((Transform)template).parent, false);
			((Object)chargeHint).name = "NinjaChargeKeyHint";
			(chargeHint.GetComponent<LayoutElement>() ?? chargeHint.AddComponent<LayoutElement>()).ignoreLayout = true;
			Graphic val3 = null;
			MonoBehaviour[] componentsInChildren2 = chargeHint.GetComponentsInChildren<MonoBehaviour>(true);
			foreach (MonoBehaviour val4 in componentsInChildren2)
			{
				if (!Object.op_Implicit((Object)(object)val4))
				{
					continue;
				}
				Type type = ((object)val4).GetType();
				if (!(val4 is Graphic) && !(val4 is LayoutElement) && !(val4 is LayoutGroup) && !(val4 is ContentSizeFitter) && !(val4 is Mask) && !(val4 is RectMask2D) && !(type.Namespace == "TMPro") && !type.Name.Contains("TextMeshPro"))
				{
					try
					{
						Object.DestroyImmediate((Object)(object)val4);
					}
					catch
					{
					}
				}
			}
			Graphic[] componentsInChildren3 = chargeHint.GetComponentsInChildren<Graphic>(true);
			foreach (Graphic val5 in componentsInChildren3)
			{
				if (Object.op_Implicit((Object)(object)val5) && ((object)val5).GetType().GetProperty("text") != null && (((object)val5).GetType().Name.Contains("TextMeshPro") || val5 is Text))
				{
					val3 = val5;
					break;
				}
			}
			chargeKeyText = (Component)(object)val3;
			Image val6 = null;
			int num = int.MinValue;
			Image[] componentsInChildren4 = chargeHint.GetComponentsInChildren<Image>(true);
			foreach (Image val7 in componentsInChildren4)
			{
				if (!Object.op_Implicit((Object)(object)val7) || !((Component)val7).gameObject.activeSelf || (Object.op_Implicit((Object)(object)val3) && ((Component)val3).transform.IsChildOf(((Component)val7).transform)))
				{
					continue;
				}
				string name = ((Object)((Component)val7).gameObject).name;
				if (name.IndexOf("Background", StringComparison.OrdinalIgnoreCase) < 0)
				{
					Rect rect = ((Graphic)val7).rectTransform.rect;
					int num2 = (name.EndsWith("Icon") ? 100000 : 0) + Mathf.RoundToInt(((Rect)(ref rect)).width * ((Rect)(ref rect)).height);
					if (num2 > num)
					{
						num = num2;
						val6 = val7;
					}
				}
			}
			if (Object.op_Implicit((Object)(object)val6))
			{
				val6.sprite = SealSprite();
				val6.overrideSprite = null;
				val6.preserveAspect = true;
				((Graphic)val6).color = Color.white;
				val6.type = (Type)0;
			}
			chargeKeyShown = null;
		}

		private Transform HintItem(Transform ctrl)
		{
			Transform val = ctrl;
			while (Object.op_Implicit((Object)(object)val.parent))
			{
				bool flag = false;
				foreach (Transform hintCtrl in hintCtrls)
				{
					if (Object.op_Implicit((Object)(object)hintCtrl) && (Object)(object)hintCtrl != (Object)(object)ctrl && hintCtrl.IsChildOf(val.parent))
					{
						flag = true;
						break;
					}
				}
				if (flag || neighbours.Contains((RectTransform)(object)((val is RectTransform) ? val : null)))
				{
					break;
				}
				val = val.parent;
			}
			return val;
		}

		private void UpdateChargeHint(Vector3 L, float step)
		{
			//IL_00c2: 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_0173: Unknown result type (might be due to invalid IL or missing references)
			//IL_0175: Unknown result type (might be due to invalid IL or missing references)
			//IL_017f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0197: 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_01aa: 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_01b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0187: Unknown result type (might be due to invalid IL or missing references)
			//IL_018d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0192: Unknown result type (might be due to invalid IL or missing references)
			GameObject targetBodyObject = hud.targetBodyObject;
			hintCtrls.RemoveAll((Transform h) => !Object.op_Implicit((Object)(object)h));
			KeyCode? val = ChargeKey(targetBodyObject);
			if (!val.HasValue || hintCtrls.Count <= 0)
			{
				if (Object.op_Implicit((Object)(object)chargeHint) && chargeHint.activeSelf)
				{
					chargeHint.SetActive(false);
				}
				return;
			}
			Transform val2 = null;
			Transform val3 = null;
			float num = float.MinValue;
			float num2 = float.MaxValue;
			foreach (Transform hintCtrl in hintCtrls)
			{
				if (((Component)hintCtrl).gameObject.activeInHierarchy)
				{
					Transform val4 = HintItem(hintCtrl);
					float num3 = Vector3.Dot(val4.position, L);
					if (num3 > num)
					{
						num = num3;
						val2 = val4;
					}
					if (num3 < num2)
					{
						num2 = num3;
						val3 = val4;
					}
				}
			}
			RectTransform val5 = (RectTransform)(object)((val2 is RectTransform) ? val2 : null);
			if (val5 == null)
			{
				if (Object.op_Implicit((Object)(object)chargeHint))
				{
					chargeHint.SetActive(false);
				}
				return;
			}
			if (!Object.op_Implicit((Object)(object)chargeHint))
			{
				BuildChargeHint(val5);
			}
			if (!Object.op_Implicit((Object)(object)chargeHint))
			{
				return;
			}
			if (!chargeHint.activeSelf)
			{
				chargeHint.SetActive(true);
			}
			Vector3 val6 = ((Object.op_Implicit((Object)(object)val3) && (Object)(object)val3 != (Object)(object)val2) ? (val2.position - val3.position) : (L * step * 0.7f));
			chargeHint.transform.position = val2.position + val6;
			string text = KeyLabel(val.Value);
			if (!Object.op_Implicit((Object)(object)chargeKeyText) || !(text != chargeKeyShown))
			{
				return;
			}
			chargeKeyShown = text;
			try
			{
				((object)chargeKeyText).GetType().GetProperty("text").SetValue(chargeKeyText, text);
			}
			catch
			{
			}
		}

		private void OnDestroy()
		{
			//IL_000f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0019: Expected O, but got Unknown
			if (hooked)
			{
				Canvas.willRenderCanvases -= new WillRenderCanvases(ShiftNeighbours);
			}
			if (Object.op_Implicit((Object)(object)chargeHint))
			{
				Object.Destroy((Object)(object)chargeHint);
			}
		}
	}
	public class RadialMenu
	{
		public struct Item
		{
			public string label;

			public string sub;

			public string initials;

			public string detail;

			public Color color;

			public bool disabled;
		}

		public Item[] items = new Item[0];

		public float[] angles;

		public int centerItem = -1;

		public string idleTitle = "";

		public string idleDetail = "";

		public Color idleColor = Color.white;

		public Action<float> drawUnder;

		public float underHeight;

		public Action<Vector2, float> drawSide;

		public bool drawCursor = true;

		private MPEventSystem cursorSystem;

		private float hoverAnim;

		private int lastHover = -2;

		private static Texture2D texDisc;

		private static Texture2D texRing;

		private static Texture2D texGlow;

		private static Texture2D texPixel;

		private static GUIStyle sName;

		private static GUIStyle sSmall;

		private static GUIStyle sCenterName;

		private static GUIStyle sCenterSmall;

		private static Texture2D texPointer;

		private int RingCount => items.Length - ((centerItem >= 0 && centerItem < items.Length) ? 1 : 0);

		public bool isOpen { get; private set; }

		public int hover { get; private set; } = -1;

		private int RingIndex(int i)
		{
			if (centerItem < 0 || i <= centerItem)
			{
				return i;
			}
			return i - 1;
		}

		private float AngleOf(int i)
		{
			if (angles == null || angles.Length != items.Length)
			{
				return (float)RingIndex(i) * 360f / (float)Mathf.Max(1, RingCount);
			}
			return angles[i];
		}

		public void Open()
		{
			if (!isOpen)
			{
				isOpen = true;
				hover = -1;
				LocalUser firstLocalUser = LocalUserManager.GetFirstLocalUser();
				cursorSystem = ((firstLocalUser != null) ? firstLocalUser.eventSystem : null);
				if (Object.op_Implicit((Object)(object)cursorSystem))
				{
					MPEventSystem obj = cursorSystem;
					int cursorOpenerCount = obj.cursorOpenerCount;
					obj.cursorOpenerCount = cursorOpenerCount + 1;
				}
			}
		}

		public void Close()
		{
			if (isOpen)
			{
				isOpen = false;
				if (Object.op_Implicit((Object)(object)cursorSystem))
				{
					cursorSystem.cursorOpenerCount = Mathf.Max(0, cursorSystem.cursorOpenerCount - 1);
					cursorSystem = null;
				}
			}
		}

		public int UpdatePick()
		{
			//IL_0039: Unknown result type (might be due to invalid IL or missing references)
			//IL_003e: 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_0044: Unknown result type (might be due to invalid IL or missing references)
			//IL_0049: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b6: 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)
			hover = -1;
			if (!isOpen || items.Length == 0)
			{
				return -1;
			}
			Vector2 val = default(Vector2);
			((Vector2)(ref val))..ctor((float)Screen.width * 0.5f, (float)Screen.height * 0.5f);
			Vector2 val2 = Vector2.op_Implicit(Input.mousePosition) - val;
			bool flag = centerItem >= 0 && centerItem < items.Length;
			float num = (float)Screen.height * (flag ? 0.1f : 0.06f);
			if (((Vector2)(ref val2)).magnitude < num)
			{
				if (flag && !items[centerItem].disabled)
				{
					hover = centerItem;
				}
				return hover;
			}
			float num2 = Mathf.Atan2(val2.x, val2.y) * 57.29578f;
			if (num2 < 0f)
			{
				num2 += 360f;
			}
			int num3 = -1;
			float num4 = 999f;
			for (int i = 0; i < items.Length; i++)
			{
				if (i != centerItem)
				{
					float num5 = Mathf.Abs(Mathf.DeltaAngle(num2, AngleOf(i)));
					if (num5 < num4)
					{
						num4 = num5;
						num3 = i;
					}
				}
			}
			if (num3 < 0)
			{
				return -1;
			}
			hover = (items[num3].disabled ? (-1) : num3);
			return hover;
		}

		private static Texture2D MakeCircle(int n, float inner, float softness, bool radialFade)
		{
			//IL_0004: 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_0010: Unknown result type (might be due to invalid IL or missing references)
			//IL_0018: Expected O, but got Unknown
			//IL_00bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c2: Unknown result type (might be due to invalid IL or missing references)
			Texture2D val = new Texture2D(n, n, (TextureFormat)4, false)
			{
				wrapMode = (TextureWrapMode)1,
				filterMode = (FilterMode)1
			};
			Color32[] array = (Color32[])(object)new Color32[n * n];
			float num = (float)(n - 1) * 0.5f;
			for (int i = 0; i < n; i++)
			{
				for (int j = 0; j < n; j++)
				{
					float num2 = Mathf.Sqrt(((float)j - num) * ((float)j - num) + ((float)i - num) * ((float)i - num)) / num;
					float num3 = Mathf.Clamp01((1f - num2) / softness);
					if (inner > 0f)
					{
						num3 *= Mathf.Clamp01((num2 - inner) / softness);
					}
					if (radialFade)
					{
						num3 = Mathf.Pow(Mathf.Clamp01(1f - num2), 2f);
					}
					array[i * n + j] = new Color32(byte.MaxValue, byte.MaxValue, byte.MaxValue, (byte)(num3 * 255f));
				}
			}
			val.SetPixels32(array);
			val.Apply();
			return val;
		}

		private static void EnsureGui()
		{
			//IL_0080: Unknown result type (might be due to invalid IL or missing references)
			//IL_008a: Expected O, but got Unknown
			//IL_0091: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cd: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d4: 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_00ee: Expected O, but got Unknown
			//IL_00f3: 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_0104: Expected O, but got Unknown
			//IL_0109: Unknown result type (might be due to invalid IL or missing references)
			//IL_010e: Unknown result type (might be due to invalid IL or missing references)
			//IL_011a: Expected O, but got Unknown
			//IL_011f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0124: Unknown result type (might be due to invalid IL or missing references)
			//IL_0130: Expected O, but got Unknown
			if (!Object.op_Implicit((Object)(object)texDisc))
			{
				texDisc = MakeCircle(128, 0f, 0.04f, radialFade: false);
			}
			if (!Object.op_Implicit((Object)(object)texRing))
			{
				texRing = MakeCircle(128, 0.86f, 0.04f, radialFade: false);
			}
			if (!Object.op_Implicit((Object)(object)texGlow))
			{
				texGlow = MakeCircle(128, 0f, 1f, radialFade: true);
			}
			if (!Object.op_Implicit((Object)(object)texPixel))
			{
				texPixel = new Texture2D(1, 1);
				texPixel.SetPixel(0, 0, Color.white);
				texPixel.Apply();
			}
			int num = Mathf.RoundToInt((float)Screen.height / 52f);
			if (sName == null)
			{
				sName = new GUIStyle(GUI.skin.label)
				{
					alignment = (TextAnchor)1,
					fontStyle = (FontStyle)1,
					richText = true,
					wordWrap = true
				};
				sSmall = new GUIStyle(sName)
				{
					fontStyle = (FontStyle)0
				};
				sCenterName = new GUIStyle(sName)
				{
					alignment = (TextAnchor)4
				};
				sCenterSmall = new GUIStyle(sSmall)
				{
					alignment = (TextAnchor)4
				};
			}
			sName.fontSize = num;
			sSmall.fontSize = Mathf.RoundToInt((float)num * 0.8f);
			sCenterName.fontSize = Mathf.RoundToInt((float)num * 1.15f);
			sCenterSmall.fontSize = Mathf.RoundToInt((float)num * 0.85f);
		}

		private static void Disc(Texture2D t, Vector2 c, float r, Color col)
		{
			//IL_0000: 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_000e: 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)
			GUI.color = col;
			GUI.DrawTexture(new Rect(c.x - r, c.y - r, r * 2f, r * 2f), (Texture)(object)t);
		}

		public static void Shadowed(Rect r, string text, GUIStyle st)
		{
			//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_001a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_0053: Unknown result type (might be due to invalid IL or missing references)
			//IL_006e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0074: Unknown result type (might be due to invalid IL or missing references)
			Color color = GUI.color;
			GUI.color = new Color(0f, 0f, 0f, 0.8f * color.a);
			GUI.Label(new Rect(((Rect)(ref r)).x + 1.5f, ((Rect)(ref r)).y + 1.5f, ((Rect)(ref r)).width, ((Rect)(ref r)).height), Regex.Replace(text, "<color=[^>]*>|</color>", ""), st);
			GUI.color = color;
			GUI.Label(r, text, st);
		}

		public static void Label(Rect r, string text, float sizeOfHeight, TextAnchor anchor)
		{
			//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_0010: Unknown result type (might be due to invalid IL or missing references)
			//IL_0016: 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
			//IL_0031: Unknown result type (might be due to invalid IL or missing references)
			//IL_003b: Unknown result type (might be due to invalid IL or missing references)
			EnsureGui();
			GUIStyle st = new GUIStyle(sSmall)
			{
				alignment = anchor,
				fontSize = Mathf.RoundToInt((float)Screen.height * sizeOfHeight),
				wordWrap = false
			};
			GUI.color = Color.white;
			Shadowed(r, text, st);
		}

		public void Draw()
		{
			//IL_0027: 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_0076: Unknown result type (might be due to invalid IL or missing references)
			if (isOpen && items.Length != 0)
			{
				DrawBody();
				float num = Screen.height;
				if (drawSide != null)
				{
					GUI.color = Color.white;
					drawSide(new Vector2((float)Screen.width * 0.5f, num * 0.5f), num * 0.235f + num * 0.055f * 2.4f);
				}
				if (drawCursor)
				{
					DrawPointer();
				}
				GUI.color = Color.white;
			}
		}

		public static void DrawPointer()
		{
			//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_01b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_01cf: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d9: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ed: Unknown result type (might be due to invalid IL or missing references)
			//IL_01fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: 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_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Expected O, but got Unknown
			//IL_004a: 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_0060: Unknown result type (might be due to invalid IL or missing references)
			//IL_0065: 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_007b: Unknown result type (might be due to invalid IL or missing references)
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0091: 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_00a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_0103: Unknown result type (might be due to invalid IL or missing references)
			//IL_0173: Unknown result type (might be due to invalid IL or missing references)
			//IL_0175: Unknown result type (might be due to invalid IL or missing references)
			if (!Object.op_Implicit((Object)(object)texPointer))
			{
				texPointer = new Texture2D(32, 32, (TextureFormat)4, false)
				{
					filterMode = (FilterMode)1,
					wrapMode = (TextureWrapMode)1
				};
				Color32[] array = (Color32[])(object)new Color32[1024];
				Vector2[] v = (Vector2[])(object)new Vector2[7]
				{
					new Vector2(1f, 1f),
					new Vector2(1f, 24f),
					new Vector2(7f, 18.5f),
					new Vector2(11f, 28f),
					new Vector2(15f, 26.5f),
					new Vector2(11f, 17.5f),
					new Vector2(19f, 17.5f)
				};
				Vector2 p = default(Vector2);
				Color32 val = default(Color32);
				for (int i = 0; i < 32; i++)
				{
					for (int j = 0; j < 32; j++)
					{
						((Vector2)(ref p))..ctor((float)j + 0.5f, (float)i + 0.5f);
						float num = PolyDist(v, p);
						((Color32)(ref val))..ctor((byte)0, (byte)0, (byte)0, (byte)0);
						if (num < -1.6f)
						{
							((Color32)(ref val))..ctor(byte.MaxValue, byte.MaxValue, byte.MaxValue, byte.MaxValue);
						}
						else if (num < 0.6f)
						{
							((Color32)(ref val))..ctor((byte)20, (byte)20, (byte)24, (byte)(255f * Mathf.Clamp01(0.6f - num)));
						}
						array[(31 - i) * 32 + j] = val;
					}
				}
				texPointer.SetPixels32(array);
				texPointer.Apply();
			}
			Vector2 val2 = Vector2.op_Implicit(Input.mousePosition);
			float num2 = Mathf.Max(20f, (float)Screen.height / 34f);
			GUI.color = Color.white;
			GUI.DrawTexture(new Rect(val2.x - num2 * 0.03f, (float)Screen.height - val2.y - num2 * 0.03f, num2, num2), (Texture)(object)texPointer);
		}

		private static float PolyDist(Vector2[] v, Vector2 p)
		{
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_0035: 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_00a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ea: 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_00f3: 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_00f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_003f: Unknown result type (might be due to invalid IL or missing references)
			//IL_005e: Unknown result type (might be due to invalid IL or missing references)
			bool flag = false;
			float num = float.MaxValue;
			int num2 = 0;
			int num3 = v.Length - 1;
			while (num2 < v.Length)
			{
				if (v[num2].y > p.y != v[num3].y > p.y && p.x < (v[num3].x - v[num2].x) * (p.y - v[num2].y) / (v[num3].y - v[num2].y) + v[num2].x)
				{
					flag = !flag;
				}
				Vector2 val = v[num2] - v[num3];
				float num4 = Mathf.Clamp01(Vector2.Dot(p - v[num3], val) / Mathf.Max(1E-05f, ((Vector2)(ref val)).sqrMagnitude));
				float num5 = num;
				Vector2 val2 = v[num3] + val * num4 - p;
				num = Mathf.Min(num5, ((Vector2)(ref val2)).magnitude);
				num3 = num2++;
			}
			if (!flag)
			{
				return num;
			}
			return 0f - num;
		}

		private void DrawBody()
		{
			//IL_0099: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_0111: Unknown result type (might be due to invalid IL or missing references)
			//IL_0177: 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_017e: Unknown result type (might be due to invalid IL or missing references)
			//IL_018f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0195: Unknown result type (might be due to invalid IL or missing references)
			//IL_019c: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c0: 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_01e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0229: Unknown result type (might be due to invalid IL or missing references)
			//IL_0239: Unknown result type (might be due to invalid IL or missing references)
			//IL_023f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0244: Unknown result type (might be due to invalid IL or missing references)
			//IL_0249: Unknown result type (might be due to invalid IL or missing references)
			//IL_0500: Unknown result type (might be due to invalid IL or missing references)
			//IL_0517: Unknown result type (might be due to invalid IL or missing references)
			//IL_04f1: Unknown result type (might be due to invalid IL or missing references)
			//IL_026c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0256: Unknown result type (might be due to invalid IL or missing references)
			//IL_0543: Unknown result type (might be due to invalid IL or missing references)
			//IL_052b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0271: Unknown result type (might be due to invalid IL or missing references)
			//IL_0548: Unknown result type (might be due to invalid IL or missing references)
			//IL_054f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0552: Unknown result type (might be due to invalid IL or missing references)
			//IL_0559: Unknown result type (might be due to invalid IL or missing references)
			//IL_0560: Unknown result type (might be due to invalid IL or missing references)
			//IL_056c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0576: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_02fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_030d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0317: Unknown result type (might be due to invalid IL or missing references)
			//IL_0324: Unknown result type (might be due to invalid IL or missing references)
			//IL_0331: Unknown result type (might be due to invalid IL or missing references)
			//IL_0343: Unknown result type (might be due to invalid IL or missing references)
			//IL_0352: Unknown result type (might be due to invalid IL or missing references)
			//IL_0356: Unknown result type (might be due to invalid IL or missing references)
			//IL_035d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0364: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_02bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_05d2: Unknown result type (might be due to invalid IL or missing references)
			//IL_05db: Unknown result type (might be due to invalid IL or missing references)
			//IL_05fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_060f: Unknown result type (might be due to invalid IL or missing references)
			//IL_037b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0385: 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_0399: Unknown result type (might be due to invalid IL or missing references)
			//IL_03b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_03c8: Unknown result type (might be due to invalid IL or missing references)
			//IL_03ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_03d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_06a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0658: Unknown result type (might be due to invalid IL or missing references)
			//IL_0662: Unknown result type (might be due to invalid IL or missing references)
			//IL_0671: Unknown result type (might be due to invalid IL or missing references)
			//IL_0690: Unknown result type (might be due to invalid IL or missing references)
			//IL_0437: Unknown result type (might be due to invalid IL or missing references)
			//IL_0441: Unknown result type (might be due to invalid IL or missing references)
			//IL_0450: Unknown result type (might be due to invalid IL or missing references)
			//IL_046e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0492: Unknown result type (might be due to invalid IL or missing references)
			//IL_04a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_04c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0430: Unknown result type (might be due to invalid IL or missing references)
			EnsureGui();
			float num = Screen.height;
			Vector2 val = default(Vector2);
			((Vector2)(ref val))..ctor((float)Screen.width * 0.5f, num * 0.5f);
			float num2 = num * 0.235f;
			float num3 = num * 0.055f;
			float num4 = num * 0.11f;
			if (hover != lastHover)
			{
				lastHover = hover;
				hoverAnim = 0f;
			}
			hoverAnim = Mathf.MoveTowards(hoverAnim, 1f, Time.unscaledDeltaTime * 8f);
			GUI.color = new Color(0f, 0f, 0f, 0.35f);
			GUI.DrawTexture(new Rect(0f, 0f, (float)Screen.width, num), (Texture)(object)texPixel);
			Disc(texGlow, val, num2 + num3 * 2.4f, new Color(0f, 0f, 0f, 0.75f));
			Disc(texRing, val, num2 + 1.5f, new Color(1f, 1f, 1f, 0.12f));
			_ = 360f / (float)items.Length;
			bool flag = centerItem >= 0 && centerItem < items.Length;
			if (hover >= 0 && hover != centerItem)
			{
				Color color = items[hover].color;
				Matrix4x4 matrix = GUI.matrix;
				GUIUtility.RotateAroundPivot(AngleOf(hover), val);
				GUI.color = new Color(color.r, color.g, color.b, 0.55f * hoverAnim);
				GUI.DrawTexture(new Rect(val.x - 2f, val.y - num2 + num3, 4f, num2 - num3 - num4), (Texture)(object)texPixel);
				GUI.matrix = matrix;
			}
			for (int i = 0; i < items.Length; i++)
			{
				if (i != centerItem)
				{
					Item item = items[i];
					float num5 = AngleOf(i) * (MathF.PI / 180f);
					Vector2 val2 = val + new Vector2(Mathf.Sin(num5), 0f - Mathf.Cos(num5)) * num2;
					Color val3 = (Color)(item.disabled ? new Color(0.45f, 0.45f, 0.45f) : item.color);
					bool flag2 = i == hover;
					float num6 = num3 * (flag2 ? Mathf.Lerp(1f, 1.18f, hoverAnim) : 1f);
					if (flag2)
					{
						Disc(texGlow, val2, num6 * 2.1f, new Color(val3.r, val3.g, val3.b, 0.55f * hoverAnim));
					}
					Disc(texDisc, val2, num6, new Color(0.06f, 0.06f, 0.09f, 0.95f));
					Disc(texDisc, val2, num6 * 0.78f, new Color(val3.r * 0.35f, val3.g * 0.35f, val3.b * 0.35f, 0.9f));
					Disc(texRing, val2, num6, new Color(val3.r, val3.g, val3.b, flag2 ? 1f : 0.7f));
					GUI.color = Color.white;
					Shadowed(new Rect(val2.x - num6, val2.y - num6 * 0.45f, num6 * 2f, num6), "<color=#" + ColorUtility.ToHtmlStringRGB(Color.Lerp(val3, Color.white, 0.4f)) + ">" + item.initials + "</color>", sCenterName);
					GUI.color = (Color)(flag2 ? Color.white : new Color(1f, 1f, 1f, item.disabled ? 0.45f : 0.75f));
					Shadowed(new Rect(val2.x - num3 * 2.2f, val2.y + num6 + 2f, num3 * 4.4f, num * 0.03f), item.label, sName);
					if (!string.IsNullOrEmpty(item.sub))
					{
						Shadowed(new Rect(val2.x - num3 * 2.2f, val2.y + num6 + num * 0.026f, num3 * 4.4f, num * 0.03f), item.sub, sSmall);
					}
				}
			}
			if (flag)
			{
				DrawCenterButton(val, num4, num);
				return;
			}
			Disc(texDisc, val, num4, new Color(0.04f, 0.04f, 0.07f, 0.92f));
			Color val4 = ((hover >= 0) ? items[hover].color : idleColor);
			Disc(texRing, val, num4, new Color(val4.r, val4.g, val4.b, 0.8f));
			GUI.color = Color.white;
			string text = ((hover >= 0) ? items[hover].label : idleTitle);
			string text2 = ((hover >= 0) ? items[hover].detail : idleDetail);
			Shadowed(new Rect(val.x - num4, val.y - num4 * 0.55f, num4 * 2f, num4 * 0.5f), "<color=#" + ColorUtility.ToHtmlStringRGB(val4) + ">" + text + "</color>", sCenterName);
			if (!string.IsNullOrEmpty(text2))
			{
				GUI.color = new Color(1f, 1f, 1f, 0.8f);
				Shadowed(new Rect(val.x - num4 * 0.85f, val.y - num4 * 0.05f, num4 * 1.7f, num4 * 0.8f), text2, sCenterSmall);
			}
			GUI.color = Color.white;
		}

		private void DrawCenterButton(Vector2 c, float centreR, float H)
		{
			//IL_0040: Unknown result type (might be due to invalid IL or missing references)
			//IL_002a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0045: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ab: 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_00d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f0: 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_007e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0084: Unknown result type (might be due to invalid IL or missing references)
			//IL_008a: Unknown result type (might be due to invalid IL or missing references)
			//IL_009c: Unknown result type (might be due to invalid IL or missing references)
			//IL_010b: Unknown result type (might be due to invalid IL or missing references)
			//IL_011a: 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_0122: Unknown result type (might be due to invalid IL or missing references)
			//IL_0128: Unknown result type (might be due to invalid IL or missing references)
			//IL_013d: Unknown result type (might be due to invalid IL or missing references)
			//IL_014c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0154: Unknown result type (might be due to invalid IL or missing references)
			//IL_015a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0160: Unknown result type (might be due to invalid IL or missing references)
			//IL_016b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0175: Unknown result type (might be due to invalid IL or missing references)
			//IL_017f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0187: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a3: 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_01b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c3: Unknown result type (might be due to invalid IL or missing references)
			//IL_027b: 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_0221: Unknown result type (might be due to invalid IL or missing references)
			//IL_022f: 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_0299: Unknown result type (might be due to invalid IL or missing references)
			//IL_02dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c5: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_031d: Unknown result type (might be due to invalid IL or missing references)
			//IL_032f: Expected O, but got Unknown
			//IL_036d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0377: Unknown result type (might be due to invalid IL or missing references)
			//IL_038c: Unknown result type (might be due to invalid IL or missing references)
			//IL_039b: Unknown result type (might be due to invalid IL or missing references)
			//IL_03a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_03a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_03b5: 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_03d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_03e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0442: Unknown result type (might be due to invalid IL or missing references)
			//IL_0464: Unknown result type (might be due to invalid IL or missing references)
			//IL_0479: Unknown result type (might be due to invalid IL or missing references)
			//IL_0508: Unknown result type (might be due to invalid IL or missing references)
			//IL_04c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_04cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_04f7: Unknown result type (might be due to invalid IL or missing references)
			Item item = items[centerItem];
			bool flag = hover == centerItem;
			Color val = (Color)(item.disabled ? new Color(0.45f, 0.45f, 0.45f) : item.color);
			float num = centreR * 0.82f * (flag ? Mathf.Lerp(1f, 1.1f, hoverAnim) : 1f);
			if (flag)
			{
				Disc(texGlow, c, num * 2f, new Color(val.r, val.g, val.b, 0.5f * hoverAnim));
			}
			Disc(texDisc, c, num, new Color(0.05f, 0.05f, 0.08f, 0.95f));
			Disc(texDisc, c, num * 0.84f, new Color(val.r * 0.3f, val.g * 0.3f, val.b * 0.3f, flag ? 0.95f : 0.8f));
			Disc(texRing, c, num, new Color(val.r, val.g, val.b, flag ? 1f : 0.65f));
			Disc(texRing, c, num * 0.86f, new Color(val.r, val.g, val.b, 0.18f));
			GUI.color = Color.white;
			Shadowed(new Rect(c.x - num, c.y - num * 0.5f, num * 2f, num * 0.55f), "<color=#" + ColorUtility.ToHtmlStringRGB(Color.Lerp(val, Color.white, 0.35f)) + ">" + item.label + "</color>", sCenterName);
			if (!string.IsNullOrEmpty(item.sub))
			{
				GUI.color = new Color(1f, 1f, 1f, 0.75f);
				Shadowed(new Rect(c.x - num * 0.9f, c.y + num * 0.05f, num * 1.8f, num * 0.45f), item.sub, sCenterSmall);
			}
			float num2 = H * 0.235f;
			float num3 = H * 0.055f;
			float num4 = H * 0.46f;
			float num5 = c.y + num2 + num3 + H * 0.075f;
			if (drawUnder != null)
			{
				GUI.color = Color.white;
				drawUnder(num5);
				num5 += underHeight;
			}
			Color val2 = ((hover >= 0) ? items[hover].color : idleColor);
			string text = ((hover >= 0) ? items[hover].detail : idleDetail);
			float num6 = (string.IsNullOrEmpty(text) ? 0f : sSmall.CalcHeight(new GUIContent(text), num4 * 0.94f));
			float num7 = H * 0.044f + num6;
			num5 = Mathf.Min(num5, H - num7 - H * 0.01f);
			GUI.color = new Color(0f, 0f, 0f, 0.6f);
			GUI.DrawTexture(new Rect(c.x - num4 * 0.5f, num5, num4, num7), (Texture)(object)texPixel);
			GUI.color = new Color(val2.r, val2.g, val2.b, 0.85f);
			GUI.DrawTexture(new Rect(c.x - num4 * 0.5f, num5, num4, 2f), (Texture)(object)texPixel);
			GUI.color = Color.white;
			string text2 = ((hover >= 0) ? items[hover].label : idleTitle);
			string text3 = ((hover >= 0) ? items[hover].detail : idleDetail);
			Shadowed(new Rect(c.x - num4 * 0.5f, num5 + H * 0.006f, num4, H * 0.03f), "<color=#" + ColorUtility.ToHtmlStringRGB(val2) + ">" + text2 + "</color>", sName);
			if (!string.IsNullOrEmpty(text3))
			{
				GUI.color = new Color(1f, 1f, 1f, 0.82f);
				Shadowed(new Rect(c.x - num4 * 0.47f, num5 + H * 0.034f, num4 * 0.94f, num7 - H * 0.036f), text3, sSmall);
			}
			GUI.color = Color.white;
		}
	}
	public class ResourceHud : MonoBehaviour
	{
		private class Mote
		{
			public RectTransform r;

			public Image img;

			public float age;

			public float life;

			public float x;

			public float rise;

			public float size;

			public float drift;
		}

		[Serializable]
		[CompilerGenerated]
		private sealed class <>c
		{
			public static readonly <>c <>9 = new <>c();

			public static Predicate<Mote> <>9__47_0;

			public static hook_Awake <>9__48_0;

			internal bool <UpdateMotes>b__47_0(Mote q)
			{
				return q.age >= q.life;
			}

			internal void <InstallHooks>b__48_0(orig_Awake orig, HUD self)
			{
				orig.Invoke(self);
				((Component)self).gameObject.AddComponent<ResourceHud>().hud = self;
			}
		}

		private const float BarHeight = 22f;

		private const float PanelHeight = 30f;

		private const float Gap = 4f;

		private const float GlowPad = 9f;

		private HUD hud;

		private GameObject root;

		private RectTransform fill;

		private RectTransform reservedFill;

		private RectTransform xpFill;

		private Image fillImage;

		private Image xpImage;

		private Image formStripe;

		private Text label;

		private Text formName;

		private Text formInfo;

		private Text abilityText;

		private GameObject formPanel;

		private RectTransform ticks;

		private int tickCount = -1;

		private float shownFraction;

		private float shownXp;

		private float glowLevel;

		private Image glowImage;

		private Image shimmerImage;

		private Image tipImage;

		private Image rimImage;

		private RawImage flowImage;

		private RectTransform tip;

		private RectTransform motesRoot;

		private readonly List<Mote> motes = new List<Mote>();

		private float moteTimer;

		private static Texture2D flowTex;

		private RectTransform shimmer;

		private static Sprite softRect;

		private static Sprite softBand;

		private static Sprite roundRect;

		private static Sprite roundFill;

		private static Sprite diamond;

		private Image formAccent;

		private Image formEmblem;

		private Image formGlow;

		private Image formRim;

		private RectTransform formRow;

		public static Func<RectTransform> extraSkillIcon;

		public static readonly List<Func<RectTransform>> extraSkillIcons = new List<Func<RectTransform>>();

		private RectTransform nameRect;

		private RectTransform infoRect;

		private bool twoLines;

		private const float LineH = 22.5f;

		private const float TwoLineHeight = 50f;

		private readonly Vector3[] corners = (Vector3[])(object)new Vector3[4];

		private float DesignHeight
		{
			get
			{
				if (!twoLines)
				{
					return 30f;
				}
				return 50f;
			}
		}

		private static void EnsureSprites()
		{
			//IL_0015: 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_0022: Expected O, but got Unknown
			//IL_0122: Unknown result type (might be due to invalid IL or missing references)
			//IL_0127: Unknown result type (might be due to invalid IL or missing references)
			//IL_0130: Expected O, but got Unknown
			//IL_00d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00df: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ff: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b3: 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_0096: Unknown result type (might be due to invalid IL or missing references)
			//IL_0175: Unknown result type (might be due to invalid IL or missing references)
			if (!Object.op_Implicit((Object)(object)softRect))
			{
				Texture2D val = new Texture2D(48, 48, (TextureFormat)4, false)
				{
					wrapMode = (TextureWrapMode)1
				};
				for (int i = 0; i < 48; i++)
				{
					for (int j = 0; j < 48; j++)
					{
						float num = Mathf.Max(0, Mathf.Max(18 - j, j - 29));
						float num2 = Mathf.Max(0, Mathf.Max(18 - i, i - 29));
						float num3 = Mathf.Sqrt(num * num + num2 * num2) / 18f;
						float num4 = Mathf.Pow(Mathf.Clamp01(1f - num3), 2f);
						val.SetPixel(j, i, new Color(1f, 1f, 1f, num4));
					}
				}
				val.Apply();
				softRect = Sprite.Create(val, new Rect(0f, 0f, 48f, 48f), new Vector2(0.5f, 0.5f), 100f, 0u, (SpriteMeshType)0, new Vector4(18f, 18f, 18f, 18f));
			}
			if (Object.op_Implicit((Object)(object)softBand))
			{
				return;
			}
			Texture2D val2 = new Texture2D(32, 4, (TextureFormat)4, false)
			{
				wrapMode = (TextureWrapMode)1
			};
			for (int k = 0; k < 32; k++)
			{
				float num5 = ((float)k - 15.5f) / 15.5f;
				float num6 = Mathf.Exp((0f - num5) * num5 * 4f);
				for (int l = 0; l < 4; l++)
				{
					val2.SetPixel(k, l, new Color(1f, 1f, 1f, num6));
				}
			}
			val2.Apply();
			softBand = Sprite.Create(val2, new Rect(0f, 0f, 32f, 4f), new Vector2(0.5f, 0.5f));
		}

		private static void EnsurePanelSprites()
		{
			//IL_0042: Unknown result type (might be due to invalid IL or missing references)
			//IL_0051: Unknown result type (might be due to invalid IL or missing references)
			//IL_005d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0082: Unknown result type (might be due to invalid IL or missing references)
			//IL_0091: 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_00ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bb: Expected O, but got Unknown
			//IL_0184: Unknown result type (might be due to invalid IL or missing references)
			//IL_0193: 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)
			if (Object.op_Implicit((Object)(object)roundRect))
			{
				return;
			}
			Vector4 val = default(Vector4);
			((Vector4)(ref val))..ctor(9f, 9f, 9f, 9f);
			roundRect = Sprite.Create(Make(rim: true), new Rect(0f, 0f, 32f, 32f), new Vector2(0.5f, 0.5f), 100f, 0u, (SpriteMeshType)0, val);
			roundFill = Sprite.Create(Make(rim: false), new Rect(0f, 0f, 32f, 32f), new Vector2(0.5f, 0.5f), 100f, 0u, (SpriteMeshType)0, val);
			Texture2D val2 = new Texture2D(32, 32, (TextureFormat)4, false)
			{
				wrapMode = (TextureWrapMode)1
			};
			for (int i = 0; i < 32; i++)
			{
				for (int j = 0; j < 32; j++)
				{
					float num = Mathf.Abs((float)j + 0.5f - 16f) + Mathf.Abs((float)i + 0.5f - 16f);
					float num2 = Mathf.Clamp01(15.5f - num + 0.5f);
					float num3 = Mathf.Clamp01(10f - num);
					val2.SetPixel(j, i, new Color(1f, 1f, 1f, Mathf.Max(num2 * ((num > 11.5f) ? 1f : 0.25f), num3)));
				}
			}
			val2.Apply();
			diamond = Sprite.Create(val2, new Rect(0f, 0f, 32f, 32f), new Vector2(0.5f, 0.5f));
			static Texture2D Make(bool rim)
			{
				//IL_0006: 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_0012: Unknown result type (might be due to invalid IL or missing references)
				//IL_001a: Expected O, but got Unknown
				//IL_00b9: Unknown result type (might be due to invalid IL or missing references)
				//IL_012f: Unknown result type (might be due to invalid IL or missing references)
				Texture2D val3 = new Texture2D(32, 32, (TextureFormat)4, false)
				{
					wrapMode = (TextureWrapMode)1,
					filterMode = (FilterMode)1
				};
				for (int k = 0; k < 32; k++)
				{
					for (int l = 0; l < 32; l++)
					{
						float num4 = Mathf.Clamp((float)l + 0.5f, 8f, 24f);
						float num5 = Mathf.Clamp((float)k + 0.5f, 8f, 24f);
						float num6 = Mathf.Sqrt(((float)l + 0.5f - num4) * ((float)l + 0.5f - num4) + ((float)k + 0.5f - num5) * ((float)k + 0.5f - num5));
						float num7 = Mathf.Clamp01(8f - num6 + 0.5f);
						if (!rim)
						{
							val3.SetPixel(l, k, new Color(1f, 1f, 1f, num7));
						}
						else
						{
							float num8 = Mathf.Max(Mathf.Clamp01(1.6f - Mathf.Abs(6.8f - num6)) * ((num6 > 5f) ? 1f : 0f), (l < 1 || k < 1 || l > 30 || k > 30) ? 1f : 0f) * num7;
							val3.SetPixel(l, k, new Color(1f, 1f, 1f, num8));
						}
					}
				}
				val3.Apply();
				return val3;
			}
		}

		private static Texture2D FlowTexture()
		{
			//IL_001b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_0027: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Expected O, but got Unknown
			//IL_00f1: Unknown result type (might be due to invalid IL or missing references)
			if (Object.op_Implicit((Object)(object)flowTex))
			{
				return flowTex;
			}
			flowTex = new Texture2D(128, 32, (TextureFormat)4, false)
			{
				wrapMode = (TextureWrapMode)0,
				filterMode = (FilterMode)1
			};
			for (int i = 0; i < 32; i++)
			{
				for (int j = 0; j < 128; j++)
				{
					float num = (float)j / 128f * MathF.PI * 2f;
					float num2 = (float)i / 32f;
					float num3 = 0f;
					for (int k = 0; k < 3; k++)
					{
						float num4 = 0.5f + 0.32f * Mathf.Sin(num * (float)(k + 1) + (float)k * 2.1f);
						float num5 = Mathf.Abs(num2 - num4) / (0.06f + 0.03f * (float)k);
						num3 = Mathf.Max(num3, Mathf.Exp((0f - num5) * num5) * (0.9f - 0.2f * (float)k));
					}
					flowTex.SetPixel(j, i, new Color(1f, 1f, 1f, num3));
				}
			}
			flowTex.Apply();
			return flowTex;
		}

		private void UpdateMotes(float level, float frac, float barW, Color c, float dt)
		{
			//IL_0230: Unknown result type (might be due to invalid IL or missing references)
			//IL_0241: Unknown result type (might be due to invalid IL or missing references)
			//IL_024d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0260: Unknown result type (might be due to invalid IL or missing references)
			//IL_0271: Unknown result type (might be due to invalid IL or missing references)
			//IL_0287: Unknown result type (might be due to invalid IL or missing references)
			//IL_029d: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ca: 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)
			if (level > 0.05f)
			{
				moteTimer -= dt * (6f + 18f * level);
				Vector2 val3 = default(Vector2);
				while (moteTimer <= 0f)
				{
					moteTimer += 1f;
					Mote mote = motes.Find((Mote q) => q.age >= q.life);
					if (mote == null && motes.Count < 28)
					{
						RectTransform val = Rect("Mote", (Transform)(object)motesRoot);
						Image val2 = ((Component)val).gameObject.AddComponent<Image>();
						val2.sprite = softRect;
						((Graphic)val2).raycastTarget = false;
						((Vector2)(ref val3))..ctor(0f, 0f);
						val.anchorMax = val3;
						val.anchorMin = val3;
						val.pivot = new Vector2(0.5f, 0.5f);
						mote = new Mote
						{
							r = val,
							img = val2
						};
						motes.Add(mote);
					}
					if (mote == null)
					{
						break;
					}
					mote.age = 0f;
					mote.life = Random.Range(0.45f, 0.9f);
					mote.x = Random.Range(0.02f, Mathf.Max(0.03f, frac)) * barW;
					mote.rise = Random.Range(10f, 26f);
					mote.size = Random.Range(3f, 7f);
					mote.drift = Random.Range(-6f, 6f);
				}
			}
			foreach (Mote mote2 in motes)
			{
				if (mote2.age >= mote2.life)
				{
					((Behaviour)mote2.img).enabled = false;
					continue;
				}
				mote2.age += dt;
				float num = Mathf.Clamp01(mote2.age / mote2.life);
				((Behaviour)mote2.img).enabled = true;
				mote2.r.anchoredPosition = new Vector2(mote2.x + mote2.drift * num, -7.7f + mote2.rise * num);
				mote2.r.sizeDelta = Vector2.one * mote2.size * (1f - 0.5f * num);
				((Graphic)mote2.img).color = new Color(Mathf.Lerp(c.r, 1f, 0.5f), Mathf.Lerp(c.g, 1f, 0.5f), Mathf.Lerp(c.b, 1f, 0.5f), Mathf.Sin(num * MathF.PI) * 0.9f);
			}
		}

		internal static void InstallHooks()
		{
			//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_001f: Expected O, but got Unknown
			object obj = <>c.<>9__48_0;
			if (obj == null)
			{
				hook_Awake val = delegate(orig_Awake orig, HUD self)
				{
					orig.Invoke(self);
					((Component)self).gameObject.AddComponent<ResourceHud>().hud = self;
				};
				<>c.<>9__48_0 = val;
				obj = (object)val;
			}
			HUD.Awake += (hook_Awake)obj;
		}

		private static Font GetFont()
		{
			Font val = null;
			try
			{
				val = Resources.GetBuiltinResource<Font>("Arial.ttf");
			}
			catch
			{
			}
			if (!Object.op_Implicit((Object)(object)val))
			{
				try
				{
					val = Resources.GetBuiltinResource<Font>("LegacyRuntime.ttf");
				}
				catch
				{
				}
			}
			return val;
		}

		private static RectTransform Rect(string name, Transform parent)
		{
			//IL_0014: 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_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_002c: Expected O, but got Unknown
			RectTransform val = (RectTransform)new GameObject(name, new Type[1] { typeof(RectTransform) }).transform;
			((Transform)val).SetParent(parent, false);
			return val;
		}

		private static RectTransform Stretch(RectTransform r, float l, float b, float rr, float t)
		{
			//IL_0001: 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_0019: 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)
			r.anchorMin = Vector2.zero;
			r.anchorMax = Vector2.one;
			r.offsetMin = new Vector2(l, b);
			r.offsetMax = new Vector2(0f - rr, 0f - t);
			return r;
		}

		private void Build()
		{
			//IL_0044: Unknown result type (might be due to invalid IL or missing references)
			//IL_004e: Expected O, but got Unknown
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Expected O, but got Unknown
			//IL_008e: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cd: 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_01a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_01be: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e8: Unknown result type (might be due to invalid IL or missing references)
			//IL_01fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_025e: Unknown result type (might be due to invalid IL or missing references)
			//IL_028d: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b9: 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_02db: Unknown result type (might be due to invalid IL or missing references)
			//IL_0305: Unknown result type (might be due to invalid IL or missing references)
			//IL_0356: Unknown result type (might be due to invalid IL or missing references)
			//IL_03af: Unknown result type (might be due to invalid IL or missing references)
			//IL_0415: Unknown result type (might be due to invalid IL or missing references)
			//IL_0420: Unknown result type (might be due to invalid IL or missing references)
			//IL_042c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0431: Unknown result type (might be due to invalid IL or missing references)
			//IL_0432: Unknown result type (might be due to invalid IL or missing references)
			//IL_0439: Unknown result type (might be due to invalid IL or missing references)
			//IL_045e: Unknown result type (might be due to invalid IL or missing references)
			//IL_04ec: Unknown result type (might be due to invalid IL or missing references)
			//IL_051c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0536: Unknown result type (might be due to invalid IL or missing references)
			//IL_0550: Unknown result type (might be due to invalid IL or missing references)
			//IL_059a: Unknown result type (might be due to invalid IL or missing references)
			//IL_066b: Unknown result type (might be due to invalid IL or missing references)
			//IL_06a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_06ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_06c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_06dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_074e: Unknown result type (might be due to invalid IL or missing references)
			//IL_077a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0794: Unknown result type (might be due to invalid IL or missing references)
			//IL_07ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_07be: Unknown result type (might be due to invalid IL or missing references)
			//IL_07eb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0809: Expected O, but got Unknown
			//IL_013a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0141: 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_0168: Unknown result type (might be due to invalid IL or missing references)
			//IL_017d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0868: Unknown result type (might be due to invalid IL or missing references)
			//IL_087e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0894: Unknown result type (might be due to invalid IL or missing references)
			//IL_08aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_08c0: Unknown result type (might be due to invalid IL or missing references)
			//IL_099c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a37: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a4d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a63: Unknown result type (might be due to invalid IL or miss