Decompiled source of ImmersiveHud v1.3.3

ImmersiveHud/ImmersiveHud.dll

Decompiled 8 months ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using BepInEx;
using BepInEx.Configuration;
using HarmonyLib;
using UnityEngine;
using UnityEngine.UI;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: AssemblyTitle("ImmersiveHud")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("ImmersiveHud")]
[assembly: AssemblyCopyright("Copyright ©  2024")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("6a171b4f-ba83-4d4f-a1e3-7f0d52a965fa")]
[assembly: AssemblyFileVersion("1.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]
[assembly: AssemblyVersion("1.0.0.0")]
internal sealed class ConfigurationManagerAttributes
{
	public bool? ShowRangeAsPercent;

	public Action<ConfigEntryBase> CustomDrawer;

	public bool? Browsable;

	public string Category;

	public object DefaultValue;

	public bool? HideDefaultButton;

	public bool? HideSettingName;

	public string Description;

	public string DispName;

	public int? Order;

	public bool? ReadOnly;

	public bool? IsAdvanced;

	public Func<object, string> ObjToStr;

	public Func<string, object> StrToObj;
}
namespace ImmersiveHud;

[HarmonyPatch]
[HarmonyPatch]
[HarmonyPatch]
[BepInPlugin("jwlei.ImmersiveHud", "Immersive Hud", "1.3.3")]
[BepInProcess("valheim.exe")]
[BepInProcess("valheim_server.exe")]
public class ImmersiveHud : BaseUnityPlugin
{
	[HarmonyPatch(typeof(Hud), "Awake")]
	public static class PatchHudAwake
	{
		private static void Postfix(Hud __instance)
		{
			if (isEnabled.Value)
			{
				Transform val = ((Component)__instance).transform.Find("hudroot");
				hudElements = new Dictionary<string, HudElement>();
				HudElementAddCanvasGroup(val);
				hudHidden = hudHiddenOnStart.Value;
				HudSetValueCrosshair(__instance);
				HudSetValuesStealth(__instance);
				HudAddCanvasGroupStealth();
				SetCrosshairSprite();
				setCompatibilityInit();
				setCompatibility(val);
			}
		}
	}

	[HarmonyPatch(typeof(Character), "Damage")]
	public static class PatchPlayerCheckDamaged
	{
		private static void Prefix(Character __instance, HitData hit)
		{
			if (__instance is Player && hit.GetTotalDamage() > 0f)
			{
				playerTookDamage = true;
			}
		}
	}

	[HarmonyPatch(typeof(Player), "Update")]
	public static class PatchPlayerCheckBowEquipped
	{
		private static void Prefix(Player __instance)
		{
			if (Object.op_Implicit((Object)(object)__instance))
			{
				ItemData currentWeapon = ((Humanoid)__instance).GetCurrentWeapon();
				CheckPlayerEquippedWeapon(currentWeapon);
			}
		}
	}

	[HarmonyPatch(typeof(Player), "UseHotbarItem")]
	public static class PatchPlayerCheckHotbarItemUsed
	{
		private static void Postfix(int index)
		{
			Player localPlayer = Player.m_localPlayer;
			ItemData itemAt = ((Humanoid)localPlayer).GetInventory().GetItemAt(index - 1, 0);
			if (itemAt != null)
			{
				playerUsedHotBarItem = true;
			}
		}
	}

	[HarmonyPatch(typeof(Player), "UseStamina")]
	public static class PatchPlayerCheckStaminaChanged
	{
		private static void Postfix(ref float v)
		{
			if ((double)v != 0.0)
			{
				playerUsedStamina = true;
			}
		}
	}

	[HarmonyPatch]
	public static class PatchPlayerCheckFoodEaten
	{
		private static MethodBase TargetMethod()
		{
			return typeof(Player).GetMethod("UpdateFood", BindingFlags.Instance | BindingFlags.NonPublic);
		}

		private static void Postfix(ref float dt, ref bool forceUpdate)
		{
			if ((dt == 0f) & forceUpdate)
			{
				playerAteFood = true;
			}
			else
			{
				playerAteFood = false;
			}
		}
	}

	[HarmonyPatch(typeof(Hud), "UpdateCrosshair")]
	public static class PatchCrosshair
	{
		private static void Postfix(Player player, float bowDrawPercentage)
		{
			SetCrosshairValues(player);
			SetStealthHudValues();
			UpdateCrosshairHudElement(bowDrawPercentage);
			UpdateStealthHudElement();
		}
	}

	[HarmonyPatch(typeof(Hud), "Update")]
	public static class PatchHudSetVisibility
	{
		private static void Postfix(Hud __instance)
		{
			//IL_0055: Unknown result type (might be due to invalid IL or missing references)
			//IL_005a: 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_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_0074: Unknown result type (might be due to invalid IL or missing references)
			Player localPlayer = Player.m_localPlayer;
			if (!isEnabled.Value || !Object.op_Implicit((Object)(object)localPlayer) || !Object.op_Implicit((Object)(object)__instance))
			{
				return;
			}
			Transform val = ((Component)__instance).transform.Find("hudroot");
			GetPlayerState(val, localPlayer);
			setCompatibility(val);
			KeyboardShortcut value = hideHudKey.Value;
			bool keyDown = Input.GetKeyDown(((KeyboardShortcut)(ref value)).MainKey);
			value = showHudKey.Value;
			HudSetValues(keyDown, Input.GetKey(((KeyboardShortcut)(ref value)).MainKey));
			if (!AzuMinimalUiEnabled.Value)
			{
				ForceVanillaStaminabar(__instance);
			}
			string[] hudElementNames = ImmersiveHud.hudElementNames;
			foreach (string key in hudElementNames)
			{
				if (hudElements[key].exists && !((Object)(object)hudElements[key].element == (Object)null))
				{
					hudElements[key].HudCheckLerpDuration(hudFadeDuration);
					if (!hudElements[key].targetAlphaReached)
					{
						hudElements[key].timeFade += Time.deltaTime;
						HudUpdateTransparency(hudElements[key], showHudDuration);
					}
					else
					{
						hudElements[key].timeDisplayed += Time.deltaTime;
					}
				}
			}
		}
	}

	public enum notificationTypes
	{
		SmallTopLeft,
		LargeCenter
	}

	public enum hungerNotificationOptions
	{
		FoodHungerAmount,
		FoodPercentage
	}

	public class HudElement
	{
		public Transform element;

		public string elementName;

		public float timeFade;

		public float timeDisplayed;

		public float targetAlphaPrev;

		public float targetAlpha;

		public float lastSetAlpha;

		public bool exists = false;

		public bool targetAlphaReached;

		public bool isVisible;

		public HudElement(string name)
		{
			element = null;
			elementName = name;
		}

		public void setElement(Transform e)
		{
			if ((Object)(object)e != (Object)null)
			{
				element = e;
				exists = true;
			}
		}

		public void HudSetTargetAlpha(float alpha)
		{
			if (!isVisible)
			{
				targetAlpha = alpha;
			}
		}

		public void HudCheckLerpDuration(ConfigEntry<float> duration)
		{
			if (timeFade >= duration.Value)
			{
				targetAlphaReached = true;
			}
			else
			{
				targetAlphaReached = false;
			}
		}

		public void ShowHudForDuration()
		{
			if (exists)
			{
				targetAlpha = 1f;
				timeDisplayed = 0f;
				isVisible = true;
			}
		}

		public void HudElementCheckDisplayTimer(ConfigEntry<float> duration)
		{
			if (timeDisplayed >= duration.Value && isVisible)
			{
				targetAlpha = 0f;
				isVisible = false;
			}
		}

		public void ResetTimers()
		{
			timeFade = 0f;
			timeDisplayed = 0f;
		}
	}

	[HarmonyPatch(typeof(Hud), "Update")]
	public static class PatchCompatibilityIdentification
	{
		private static void Postfix(Hud __instance)
		{
			//IL_0018: 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_0020: 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_003b: 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)
			Transform hud = ((Component)__instance).transform.Find("hudroot");
			KeyboardShortcut value = compatibilityIdHotkey.Value;
			DebugListOfMissingElements(hud, Input.GetKeyDown(((KeyboardShortcut)(ref value)).MainKey));
			value = listAllElementsHotkey.Value;
			DebugListOfHudElements(hud, Input.GetKeyDown(((KeyboardShortcut)(ref value)).MainKey));
		}
	}

	private static float targetCrosshairAlpha;

	private static float targetBowDrawCrosshairAlpha;

	private static Image playerCrosshair;

	private static Image playerBowCrosshair;

	private static Sprite crosshairSpriteOriginal;

	private static Sprite crosshairBowSpriteOriginal;

	private static string crosshairSprite = "ImmersiveHud/crosshair.png";

	private static string crosshairBowSprite = "ImmersiveHud/bowcrosshair.png";

	private static bool isMiniMapActive;

	private static float fadeDuration = 0.5f;

	private static float notificationTimer = 0f;

	private static bool hudHidden;

	public static float targetStealthHudAlpha;

	public static GuiBar playerStealthBar;

	public static GameObject playerStealthIndicator;

	public static GameObject playerStealthIndicatorTargeted;

	public static GameObject playerStealthIndicatorAlert;

	public static float playerTotalFoodValue;

	public static float playerCurrentFoodValue;

	public static float playerFoodPercentage;

	public static int playerHungerCount;

	public static bool characterEquippedItem;

	public static bool characterEquippedBow;

	public static bool isLookingAtActivatable;

	public static bool playerUsedStamina;

	public static bool playerAteFood;

	public static bool playerUsedHotBarItem;

	public static bool playerUsedQuickSlotsItem;

	public static bool playerHasItemEquipped;

	public static bool playerTookDamage;

	public static ConfigEntry<bool> isEnabled;

	public static ConfigEntry<int> nexusID;

	public static ConfigEntry<KeyboardShortcut> hideHudKey;

	public static ConfigEntry<KeyboardShortcut> showHudKey;

	public static ConfigEntry<bool> hudHiddenNotification;

	public static ConfigEntry<bool> hudHiddenOnStart;

	public static ConfigEntry<float> hudFadeDuration;

	public static ConfigEntry<float> showHudDuration;

	public static ConfigEntry<float> displayHealthOnDamageDuration;

	public static ConfigEntry<bool> useCustomCrosshair;

	public static ConfigEntry<bool> useCustomBowCrosshair;

	public static ConfigEntry<Color> crosshairColor;

	public static ConfigEntry<Color> crosshairBowDrawColor;

	public static ConfigEntry<bool> disableStealthHud;

	public static ConfigEntry<bool> displayCrosshairAlways;

	public static ConfigEntry<bool> displayCrosshairWhenBuilding;

	public static ConfigEntry<bool> displayCrosshairOnActivation;

	public static ConfigEntry<bool> displayCrosshairOnEquipped;

	public static ConfigEntry<bool> displayCrosshairOnBowEquipped;

	public static ConfigEntry<bool> displayBowDrawCrosshair;

	public static ConfigEntry<bool> disableCrosshairStamina;

	public static ConfigEntry<bool> displayHealthAlways;

	public static ConfigEntry<bool> displayKeyHintsAlways;

	public static ConfigEntry<bool> displayHotKeyBarAlways;

	public static ConfigEntry<bool> displayForsakenPowerAlways;

	public static ConfigEntry<bool> displayStatusEffectsAlways;

	public static ConfigEntry<bool> displayStaminaBarAlways;

	public static ConfigEntry<bool> displayMiniMapAlways;

	public static ConfigEntry<bool> displayQuickSlotsAlways;

	public static ConfigEntry<bool> displayFoodBarAlways;

	public static ConfigEntry<bool> displayCompassAlways;

	public static ConfigEntry<bool> displayTimeAlways;

	public static ConfigEntry<bool> RandyQuickSlotsEnabled;

	public static ConfigEntry<bool> BetterUIEnabled;

	public static ConfigEntry<bool> aedenCompassEnabled;

	public static ConfigEntry<bool> oryxenTimeEnabled;

	public static ConfigEntry<bool> AzuQuickSlotsEnabled;

	public static ConfigEntry<bool> AzuMinimalUiEnabled;

	public static ConfigEntry<bool> displayHealthInInventory;

	public static ConfigEntry<bool> displayHealthWhenHungry;

	public static ConfigEntry<bool> displayHealthOnDamage;

	public static ConfigEntry<bool> displayHealthOnDamageSeparateTimer;

	public static ConfigEntry<bool> displayHealthWhenEating;

	public static ConfigEntry<bool> displayHealthWhenBelow;

	public static ConfigEntry<bool> displayHealthWhenFoodBelow;

	public static ConfigEntry<float> healthPercentage;

	public static ConfigEntry<bool> showHealthOnKeyPressed;

	public static ConfigEntry<int> foodHungerAmount;

	public static ConfigEntry<float> foodPercentage;

	public static ConfigEntry<bool> hungerNotification;

	public static ConfigEntry<int> hungerNotificationInterval;

	public static ConfigEntry<hungerNotificationOptions> hungerNotificationOption;

	public static ConfigEntry<string> hungerNotificationText;

	public static ConfigEntry<notificationTypes> hungerNotificationType;

	public static ConfigEntry<bool> displayFoodBarInInventory;

	public static ConfigEntry<bool> displayFoodBarWhenHungry;

	public static ConfigEntry<bool> displayFoodBarWhenEating;

	public static ConfigEntry<bool> displayFoodBarWhenBelow;

	public static ConfigEntry<bool> showFoodBarOnKeyPressed;

	public static ConfigEntry<bool> displayStaminaBarInInventory;

	public static ConfigEntry<bool> displayStaminaBarOnUse;

	public static ConfigEntry<bool> displayStaminaBarWhenHungry;

	public static ConfigEntry<bool> displayStaminaBarWhenEating;

	public static ConfigEntry<bool> displayStaminaBarWhenBelow;

	public static ConfigEntry<bool> displayStaminaBarWhenFoodBelow;

	public static ConfigEntry<float> staminaPercentage;

	public static ConfigEntry<bool> showStaminaBarOnKeyPressed;

	public static ConfigEntry<bool> displayPowerInInventory;

	public static ConfigEntry<bool> displayPowerOnActivation;

	public static ConfigEntry<bool> displayPowerWhenTimeChanges;

	public static ConfigEntry<bool> displayPowerOnReady;

	public static ConfigEntry<float> powerTimeChangeInterval;

	public static ConfigEntry<bool> showPowerOnKeyPressed;

	public static ConfigEntry<bool> displayHotKeyBarInInventory;

	public static ConfigEntry<bool> displayHotKeyBarOnItemSwitch;

	public static ConfigEntry<bool> displayHotKeyBarWhenItemEquipped;

	public static ConfigEntry<bool> showHotKeyBarOnKeyPressed;

	public static ConfigEntry<bool> displayStatusEffectsInInventory;

	public static ConfigEntry<bool> showStatusEffectsOnKeyPressed;

	public static ConfigEntry<bool> displayMiniMapInInventory;

	public static ConfigEntry<bool> showMiniMapOnKeyPressed;

	public static ConfigEntry<bool> displayCompassInInventory;

	public static ConfigEntry<bool> showCompassOnKeyPressed;

	public static ConfigEntry<bool> displayTimeInInventory;

	public static ConfigEntry<bool> showTimeOnKeyPressed;

	public static ConfigEntry<bool> displayQuickSlotsInInventory;

	public static ConfigEntry<bool> showQuickSlotsOnKeyPressed;

	public static ConfigEntry<bool> showKeyHintsOnKeyPressed;

	public static ConfigEntry<bool> muiMinimap;

	public static ConfigEntry<bool> muiHealthbar;

	public static ConfigEntry<bool> muiStaminabar;

	public static ConfigEntry<bool> muiEitrbar;

	public static ConfigEntry<bool> muiPowerbar;

	public static ConfigEntry<bool> muiFoodbar;

	public static ConfigEntry<bool> muiFoodbox;

	public static ConfigEntry<KeyboardShortcut> compatibilityIdHotkey;

	public static ConfigEntry<KeyboardShortcut> listAllElementsHotkey;

	private const string MID = "jwlei.ImmersiveHud";

	private const string modName = "Immersive Hud";

	private const string pluginVersion = "1.3.3";

	public static Dictionary<string, HudElement> hudElements;

	public static string[] hudElementNames = new string[23]
	{
		"healthpanel", "staminapanel", "GuardianPower", "HotKeyBar", "StatusEffects", "MiniMap", "QuickSlotsHotkeyBar", "BetterUI_HPBar", "BetterUI_FoodBar", "BetterUI_StaminaBar",
		"Compass", "DayTimePanel", "KeyHints", "QuickAccessBar", "MUIMap", "MUI_HPBar", "MUI_StaminaBar", "MUI_EitrBar", "MUI_GuardianPowerBar", "MUI_FoodBar",
		"food0", "food1", "food2"
	};

	public static void UpdateCrosshairHudElement(float bowDrawPercentage)
	{
		//IL_0059: 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_008c: 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_009c: Unknown result type (might be due to invalid IL or missing references)
		((Graphic)playerCrosshair).CrossFadeAlpha(targetCrosshairAlpha, fadeDuration, false);
		if ((double)bowDrawPercentage > 0.0)
		{
			if (useCustomBowCrosshair.Value)
			{
				float num = Mathf.Lerp(0.75f, 0.25f, bowDrawPercentage);
				((Component)playerBowCrosshair).transform.localScale = new Vector3(num, num, num);
			}
			if (displayBowDrawCrosshair.Value)
			{
				((Graphic)playerBowCrosshair).color = Color.Lerp(new Color(1f, 1f, 1f, 0f), crosshairBowDrawColor.Value, bowDrawPercentage);
			}
			else
			{
				((Graphic)playerBowCrosshair).color = new Color(0f, 0f, 0f, 0f);
			}
		}
	}

	public static void UpdateStealthHudElement()
	{
		((Component)playerStealthBar).GetComponent<CanvasGroup>().alpha = targetStealthHudAlpha;
		playerStealthIndicator.GetComponent<CanvasGroup>().alpha = targetStealthHudAlpha;
		playerStealthIndicatorTargeted.GetComponent<CanvasGroup>().alpha = targetStealthHudAlpha;
		playerStealthIndicatorAlert.GetComponent<CanvasGroup>().alpha = targetStealthHudAlpha;
	}

	public static void SetCrosshairValues(Player player)
	{
		GameObject hoverObject = ((Humanoid)player).GetHoverObject();
		Hoverable val = (Object.op_Implicit((Object)(object)hoverObject) ? hoverObject.GetComponentInParent<Hoverable>() : null);
		if (val != null && !TextViewer.instance.IsVisible())
		{
			isLookingAtActivatable = true;
		}
		else
		{
			isLookingAtActivatable = false;
		}
		UpdateTargetCrosshairAlpha(player);
	}

	private static void UpdateTargetCrosshairAlpha(Player player)
	{
		//IL_0015: 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_007a: 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_00da: Unknown result type (might be due to invalid IL or missing references)
		if (displayCrosshairAlways.Value)
		{
			targetCrosshairAlpha = crosshairColor.Value.a;
		}
		else if (displayCrosshairWhenBuilding.Value && ((Character)player).InPlaceMode())
		{
			targetCrosshairAlpha = crosshairColor.Value.a;
		}
		else if (displayCrosshairOnActivation.Value && isLookingAtActivatable)
		{
			targetCrosshairAlpha = crosshairColor.Value.a;
		}
		else if (displayCrosshairOnEquipped.Value && characterEquippedItem)
		{
			targetCrosshairAlpha = crosshairColor.Value.a;
		}
		else if (displayCrosshairOnBowEquipped.Value && characterEquippedBow)
		{
			targetCrosshairAlpha = crosshairColor.Value.a;
		}
		else
		{
			targetCrosshairAlpha = 0f;
		}
	}

	public static void SetStealthHudValues()
	{
		//IL_002a: Unknown result type (might be due to invalid IL or missing references)
		if (disableStealthHud.Value || hudHidden)
		{
			targetStealthHudAlpha = 0f;
		}
		else
		{
			targetStealthHudAlpha = crosshairColor.Value.a;
		}
	}

	public static Sprite LoadCrosshairTexture(string filename)
	{
		//IL_001a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0020: Expected O, but got Unknown
		//IL_0046: Unknown result type (might be due to invalid IL or missing references)
		//IL_004b: Unknown result type (might be due to invalid IL or missing references)
		string path = Path.Combine(Paths.PluginPath, filename);
		if (File.Exists(path))
		{
			Texture2D val = new Texture2D(0, 0);
			ImageConversion.LoadImage(val, File.ReadAllBytes(path));
			return Sprite.Create(val, new Rect(0f, 0f, (float)((Texture)val).width, (float)((Texture)val).height), Vector2.zero);
		}
		Debug.Log((object)"ImmersiveHud: Error. Couldn't load provided crosshair image. Check if the folder ImmersiveHud in the plugins folder has a file named crosshair.png or bowcrosshair.png");
		return null;
	}

	private static void SetCrosshairSprite()
	{
		crosshairSpriteOriginal = playerCrosshair.sprite;
		crosshairBowSpriteOriginal = playerBowCrosshair.sprite;
		if (useCustomCrosshair.Value && crosshairSprite != null)
		{
			playerCrosshair.sprite = LoadCrosshairTexture(crosshairSprite);
		}
		if (useCustomBowCrosshair.Value && crosshairBowSprite != null)
		{
			playerBowCrosshair.sprite = LoadCrosshairTexture(crosshairBowSprite);
		}
	}

	private static void RemovePieceHealthBar()
	{
		Player localPlayer = Player.m_localPlayer;
		Piece hoveringPiece = localPlayer.GetHoveringPiece();
		Debug.Log((object)hoveringPiece);
		WearNTear component = ((Component)hoveringPiece).GetComponent<WearNTear>();
		Debug.Log((object)component);
		((Behaviour)component).enabled = false;
	}

	public static void HudUpdateTransparency(HudElement hudElement, ConfigEntry<float> duration)
	{
		float num = Mathf.Lerp(hudElement.lastSetAlpha, hudElement.targetAlpha, hudElement.timeFade / duration.Value);
		if (hudElement.elementName == "MiniMap")
		{
			((Graphic)((Component)hudElement.element).GetComponent<Minimap>().m_mapImageSmall).CrossFadeAlpha(hudElement.targetAlpha, hudElement.timeFade, false);
		}
		hudElement.lastSetAlpha = num;
		((Component)hudElement.element).GetComponent<CanvasGroup>().alpha = num;
	}

	public static void GetPlayerState(Transform hud, Player player)
	{
		Minimap component = ((Component)hud.Find("MiniMap")).GetComponent<Minimap>();
		bool flag = isMiniMapActive;
		isMiniMapActive = component.m_smallRoot.activeSelf;
		if (flag != isMiniMapActive)
		{
			hudElements["MiniMap"].timeFade = 0f;
			hudElements["MUIMap"].timeFade = 0f;
		}
		GetPlayerTotalFoodValue(player);
		ItemData currentWeapon = ((Humanoid)player).GetCurrentWeapon();
		if (currentWeapon != null)
		{
			playerHasItemEquipped = true;
		}
		else
		{
			playerHasItemEquipped = false;
		}
	}

	public static void GetPlayerTotalFoodValue(Player player)
	{
		playerTotalFoodValue = (playerCurrentFoodValue = (playerHungerCount = 0));
		foreach (Food food in player.GetFoods())
		{
			playerTotalFoodValue += food.m_item.m_shared.m_food;
			playerCurrentFoodValue += food.m_health;
			if (food.CanEatAgain())
			{
				playerHungerCount++;
			}
		}
		playerFoodPercentage = playerCurrentFoodValue / playerTotalFoodValue;
	}

	public static void HudSetValues(bool pressedHideKey, bool pressedShowKey)
	{
		Player localPlayer = Player.m_localPlayer;
		string[] array = hudElementNames;
		foreach (string key in array)
		{
			if ((Object)(object)hudElements[key].element != (Object)null)
			{
				hudElements[key].targetAlphaPrev = hudElements[key].targetAlpha;
			}
		}
		CheckPressedHideHud(pressedHideKey);
		CheckHungerNotification();
		if (hudHidden)
		{
			string[] array2 = hudElementNames;
			foreach (string key2 in array2)
			{
				hudElements[key2].targetAlpha = 0f;
			}
			if (isMiniMapActive)
			{
				CheckMinimapActive();
			}
		}
		else if (pressedShowKey)
		{
			CheckPressedShowHud();
		}
		else
		{
			CheckHealthBar(localPlayer);
			CheckFoodBar();
			CheckStaminaBar(localPlayer);
			CheckForsakenPower();
			CheckHotbar();
			CheckStatusEffect();
			CheckMinimap();
			CheckCompass();
			CheckDayTime();
			CheckKeyHints();
			CheckQuickSlots();
		}
		string[] array3 = hudElementNames;
		foreach (string key3 in array3)
		{
			hudElements[key3].HudElementCheckDisplayTimer(showHudDuration);
			if (hudElements[key3].exists && !((Object)(object)hudElements[key3].element == (Object)null) && hudElements[key3].targetAlphaPrev != hudElements[key3].targetAlpha)
			{
				hudElements[key3].timeFade = 0f;
			}
		}
		SetPlayerStates();
	}

	private static void ForceVanillaStaminabar(Hud __instance)
	{
		if (!hudElements["BetterUI_StaminaBar"].exists || !hudElements["MUI_StaminaBar"].exists)
		{
			((Component)hudElements["staminapanel"].element).gameObject.SetActive(true);
			__instance.m_staminaAnimator.SetBool("Visible", true);
		}
	}

	private static void HudElementAddCanvasGroup(Transform hudRoot)
	{
		string[] array = hudElementNames;
		foreach (string text in array)
		{
			hudElements.Add(text, new HudElement(text));
			if (!((Object)(object)hudRoot.Find(text) == (Object)null))
			{
				hudElements[text].setElement(hudRoot.Find(text));
				((Component)((Component)hudElements[text].element).GetComponent<RectTransform>()).gameObject.AddComponent<CanvasGroup>();
				Debug.Log((object)(text + " added CanvasGroup"));
			}
		}
	}

	private static void HudAddCanvasGroupStealth()
	{
		((Component)((Component)playerStealthBar).transform).gameObject.AddComponent<CanvasGroup>();
		((Component)playerStealthIndicator.transform).gameObject.AddComponent<CanvasGroup>();
		((Component)playerStealthIndicatorTargeted.transform).gameObject.AddComponent<CanvasGroup>();
		((Component)playerStealthIndicatorAlert.transform).gameObject.AddComponent<CanvasGroup>();
	}

	private static void HudSetValueCrosshair(Hud __instance)
	{
		playerCrosshair = __instance.m_crosshair;
		playerBowCrosshair = __instance.m_crosshairBow;
	}

	private static void HudSetValuesStealth(Hud __instance)
	{
		playerStealthBar = __instance.m_stealthBar;
		playerStealthIndicator = __instance.m_hidden;
		playerStealthIndicatorTargeted = __instance.m_targeted;
		playerStealthIndicatorAlert = __instance.m_targetedAlert;
	}

	private static void DebugListOfMissingElements(Transform hud, bool keyPressed)
	{
		if (!keyPressed)
		{
			return;
		}
		Transform[] componentsInChildren = ((Component)hud).GetComponentsInChildren<Transform>(true);
		foreach (Transform val in componentsInChildren)
		{
			if (hudElements.ContainsKey(((Object)val).name) && !hudElements[((Object)val).name].exists)
			{
				Debug.Log((object)("WARN: Can't find UI element: [" + ((Object)val).name + "] does not exist"));
			}
		}
	}

	private static void DebugListOfHudElements(Transform hud, bool keyPressed)
	{
		if (keyPressed)
		{
			Debug.Log((object)"-------------------------------------------");
			Transform[] componentsInChildren = ((Component)hud).GetComponentsInChildren<Transform>(false);
			foreach (Transform val in componentsInChildren)
			{
				Debug.Log((object)("[" + ((Object)val).name + "]"));
			}
			Debug.Log((object)"-------------------------------------------");
		}
	}

	private static void CheckHungerNotification()
	{
		if (!hungerNotification.Value || ((hungerNotificationOption.Value != 0 || playerHungerCount < foodHungerAmount.Value) && (hungerNotificationOption.Value != hungerNotificationOptions.FoodPercentage || !(playerFoodPercentage <= foodPercentage.Value))))
		{
			return;
		}
		notificationTimer += Time.deltaTime;
		if ((int)notificationTimer % hungerNotificationInterval.Value == 0)
		{
			switch (hungerNotificationType.Value)
			{
			case notificationTypes.SmallTopLeft:
				MessageHud.instance.ShowMessage((MessageType)1, hungerNotificationText.Value, 0, (Sprite)null);
				break;
			case notificationTypes.LargeCenter:
				MessageHud.instance.ShowMessage((MessageType)2, hungerNotificationText.Value, 0, (Sprite)null);
				break;
			}
			notificationTimer = 1f;
		}
	}

	private static void CheckPressedHideHud(bool pressedHideKey)
	{
		if (!pressedHideKey)
		{
			return;
		}
		hudHidden = !hudHidden;
		if (hudHiddenNotification.Value)
		{
			if (hudHidden)
			{
				MessageHud.instance.ShowMessage((MessageType)1, "Hud is hidden.", 0, (Sprite)null);
			}
			else
			{
				MessageHud.instance.ShowMessage((MessageType)1, "Hud is visible.", 0, (Sprite)null);
			}
		}
		string[] array = hudElementNames;
		foreach (string key in array)
		{
			hudElements[key].ResetTimers();
		}
	}

	private static void CheckMinimapActive()
	{
		if (isMiniMapActive)
		{
			hudElements[GetMinimapElement()].targetAlpha = 0f;
		}
		else
		{
			hudElements[GetMinimapElement()].targetAlpha = 1f;
		}
	}

	private static void CheckPressedShowHud()
	{
		if (showHealthOnKeyPressed.Value)
		{
			hudElements[GetHealthbarElement()].ShowHudForDuration();
		}
		if (showFoodBarOnKeyPressed.Value)
		{
			hudElements["BetterUI_FoodBar"].ShowHudForDuration();
			hudElements["MUI_FoodBar"].ShowHudForDuration();
			hudElements["food0"].ShowHudForDuration();
			hudElements["food1"].ShowHudForDuration();
			hudElements["food2"].ShowHudForDuration();
		}
		if (showStaminaBarOnKeyPressed.Value)
		{
			hudElements[GetStaminabarElement()].ShowHudForDuration();
		}
		if (showPowerOnKeyPressed.Value)
		{
			hudElements["GuardianPower"].ShowHudForDuration();
			hudElements["MUI_GuardianPowerBar"].ShowHudForDuration();
		}
		if (showHotKeyBarOnKeyPressed.Value)
		{
			hudElements["HotKeyBar"].ShowHudForDuration();
		}
		if (showStatusEffectsOnKeyPressed.Value)
		{
			hudElements["StatusEffects"].ShowHudForDuration();
		}
		if (showMiniMapOnKeyPressed.Value)
		{
			hudElements[GetMinimapElement()].ShowHudForDuration();
		}
		if (showCompassOnKeyPressed.Value)
		{
			hudElements["Compass"].ShowHudForDuration();
		}
		if (showTimeOnKeyPressed.Value && oryxenTimeEnabled.Value)
		{
			hudElements["DayTimePanel"].ShowHudForDuration();
		}
		if (showQuickSlotsOnKeyPressed.Value)
		{
			hudElements[GetQuickslotElement()].ShowHudForDuration();
		}
		if (showKeyHintsOnKeyPressed.Value)
		{
			hudElements["KeyHints"].ShowHudForDuration();
		}
	}

	private static void CheckHealthBar(Player player)
	{
		string healthbarElement = GetHealthbarElement();
		if (displayHealthAlways.Value || (displayHealthInInventory.Value && InventoryGui.IsVisible()))
		{
			hudElements[healthbarElement].targetAlpha = 1f;
			if (!displayHealthInInventory.Value && InventoryGui.IsVisible())
			{
				hudElements[healthbarElement].HudSetTargetAlpha(0f);
			}
		}
		else if ((displayHealthWhenEating.Value && playerAteFood) || (displayHealthOnDamage.Value && playerTookDamage))
		{
			hudElements[healthbarElement].ShowHudForDuration();
		}
		else if ((displayHealthWhenBelow.Value && ((Character)player).GetHealthPercentage() <= healthPercentage.Value) || (displayHealthWhenFoodBelow.Value && playerFoodPercentage <= foodPercentage.Value) || (displayHealthWhenHungry.Value && playerHungerCount >= foodHungerAmount.Value))
		{
			hudElements[healthbarElement].HudSetTargetAlpha(1f);
		}
		else
		{
			hudElements[healthbarElement].HudSetTargetAlpha(0f);
		}
	}

	private static void CheckFoodBar()
	{
		if (displayFoodBarAlways.Value || (displayFoodBarInInventory.Value && InventoryGui.IsVisible()))
		{
			hudElements["BetterUI_FoodBar"].targetAlpha = 1f;
			hudElements["MUI_FoodBar"].targetAlpha = 1f;
			hudElements["food0"].targetAlpha = 1f;
			hudElements["food1"].targetAlpha = 1f;
			hudElements["food2"].targetAlpha = 1f;
			if (!displayFoodBarInInventory.Value && InventoryGui.IsVisible())
			{
				hudElements["BetterUI_FoodBar"].HudSetTargetAlpha(0f);
				hudElements["MUI_FoodBar"].HudSetTargetAlpha(0f);
				hudElements["food0"].HudSetTargetAlpha(0f);
				hudElements["food1"].HudSetTargetAlpha(0f);
				hudElements["food2"].HudSetTargetAlpha(0f);
			}
		}
		else if ((BetterUIEnabled.Value && hudElements["BetterUI_FoodBar"].exists) || (AzuMinimalUiEnabled.Value && hudElements["MUI_FoodBar"].exists))
		{
			if (displayFoodBarWhenEating.Value && playerAteFood)
			{
				hudElements["BetterUI_FoodBar"].ShowHudForDuration();
				hudElements["MUI_FoodBar"].ShowHudForDuration();
				hudElements["food0"].ShowHudForDuration();
				hudElements["food1"].ShowHudForDuration();
				hudElements["food2"].ShowHudForDuration();
			}
			if (displayFoodBarWhenBelow.Value && (playerFoodPercentage <= foodPercentage.Value || playerHungerCount >= foodHungerAmount.Value))
			{
				hudElements["BetterUI_FoodBar"].HudSetTargetAlpha(1f);
				hudElements["MUI_FoodBar"].HudSetTargetAlpha(1f);
				hudElements["food0"].HudSetTargetAlpha(1f);
				hudElements["food1"].HudSetTargetAlpha(1f);
				hudElements["food2"].HudSetTargetAlpha(1f);
			}
			else
			{
				hudElements["BetterUI_FoodBar"].HudSetTargetAlpha(0f);
				hudElements["MUI_FoodBar"].HudSetTargetAlpha(0f);
				hudElements["food0"].HudSetTargetAlpha(0f);
				hudElements["food1"].HudSetTargetAlpha(0f);
				hudElements["food2"].HudSetTargetAlpha(0f);
			}
		}
	}

	private static void CheckStaminaBar(Player player)
	{
		string staminabarElement = GetStaminabarElement();
		if (displayStaminaBarAlways.Value || (displayStaminaBarInInventory.Value && InventoryGui.IsVisible()))
		{
			hudElements[staminabarElement].targetAlpha = 1f;
			if (!displayStaminaBarInInventory.Value && InventoryGui.IsVisible())
			{
				hudElements[staminabarElement].HudSetTargetAlpha(0f);
			}
			return;
		}
		if (displayStaminaBarOnUse.Value && playerUsedStamina)
		{
			hudElements[staminabarElement].ShowHudForDuration();
		}
		if (displayStaminaBarWhenEating.Value && playerAteFood)
		{
			hudElements[staminabarElement].ShowHudForDuration();
		}
		if ((displayStaminaBarWhenBelow.Value && ((Character)player).GetStaminaPercentage() <= staminaPercentage.Value) || (displayStaminaBarWhenFoodBelow.Value && playerFoodPercentage <= foodPercentage.Value) || (displayStaminaBarWhenHungry.Value && playerHungerCount >= foodHungerAmount.Value))
		{
			hudElements[staminabarElement].HudSetTargetAlpha(1f);
		}
		else
		{
			hudElements[staminabarElement].HudSetTargetAlpha(0f);
		}
	}

	private static void CheckForsakenPower()
	{
		if (displayForsakenPowerAlways.Value || (displayPowerInInventory.Value && InventoryGui.IsVisible()))
		{
			hudElements["GuardianPower"].targetAlpha = 1f;
			hudElements["MUI_GuardianPowerBar"].targetAlpha = 1f;
			if (!displayPowerInInventory.Value && InventoryGui.IsVisible())
			{
				hudElements["GuardianPower"].HudSetTargetAlpha(0f);
			}
			hudElements["MUI_GuardianPowerBar"].HudSetTargetAlpha(0f);
		}
		else
		{
			if (displayPowerOnActivation.Value && (ZInput.GetButtonDown("GPower") || ZInput.GetButtonDown("JoyGPower")))
			{
				hudElements["GuardianPower"].ShowHudForDuration();
				hudElements["MUI_GuardianPowerBar"].ShowHudForDuration();
			}
			hudElements["GuardianPower"].HudSetTargetAlpha(0f);
			hudElements["MUI_GuardianPowerBar"].HudSetTargetAlpha(0f);
		}
	}

	private static void CheckHotbar()
	{
		if (displayHotKeyBarAlways.Value || (displayHotKeyBarInInventory.Value && InventoryGui.IsVisible()))
		{
			hudElements["HotKeyBar"].targetAlpha = 1f;
			if (!displayHotKeyBarInInventory.Value && InventoryGui.IsVisible())
			{
				hudElements["HotKeyBar"].HudSetTargetAlpha(0f);
			}
		}
		else if (displayHotKeyBarOnItemSwitch.Value && playerUsedHotBarItem)
		{
			hudElements["HotKeyBar"].ShowHudForDuration();
		}
		else if (displayHotKeyBarWhenItemEquipped.Value && playerHasItemEquipped)
		{
			hudElements["HotKeyBar"].HudSetTargetAlpha(1f);
		}
		else
		{
			hudElements["HotKeyBar"].HudSetTargetAlpha(0f);
		}
	}

	private static void CheckStatusEffect()
	{
		if (displayStatusEffectsAlways.Value || (displayStatusEffectsInInventory.Value && InventoryGui.IsVisible()))
		{
			hudElements["StatusEffects"].targetAlpha = 1f;
			if (!displayStatusEffectsInInventory.Value && InventoryGui.IsVisible())
			{
				hudElements["StatusEffects"].HudSetTargetAlpha(0f);
			}
		}
		else
		{
			hudElements["StatusEffects"].HudSetTargetAlpha(0f);
		}
	}

	private static void CheckMinimap()
	{
		if (displayMiniMapAlways.Value || (displayMiniMapInInventory.Value && InventoryGui.IsVisible()) || !isMiniMapActive)
		{
			hudElements["MiniMap"].targetAlpha = 1f;
			hudElements["MUIMap"].targetAlpha = 1f;
			if (!displayMiniMapInInventory.Value && InventoryGui.IsVisible())
			{
				hudElements["MiniMap"].HudSetTargetAlpha(0f);
			}
			hudElements["MUIMap"].HudSetTargetAlpha(0f);
		}
		else
		{
			hudElements["MiniMap"].HudSetTargetAlpha(0f);
			hudElements["MUIMap"].HudSetTargetAlpha(0f);
		}
	}

	private static void CheckKeyHints()
	{
		if (displayKeyHintsAlways.Value && hudElements["KeyHints"].exists)
		{
			hudElements["KeyHints"].targetAlpha = 1f;
		}
		else
		{
			hudElements["KeyHints"].HudSetTargetAlpha(0f);
		}
	}

	private static void CheckQuickSlots()
	{
		CheckRandyQuickSlots();
		CheckAzuQuickSlots();
	}

	private static string GetHealthbarElement()
	{
		if (AzuMinimalUiEnabled.Value && hudElements["MUI_HPBar"].exists)
		{
			return "MUI_HPBar";
		}
		if (BetterUIEnabled.Value && hudElements["BetterUI_HPBar"].exists)
		{
			return "BetterUI_HPBar";
		}
		return "healthpanel";
	}

	private static string GetStaminabarElement()
	{
		if (AzuMinimalUiEnabled.Value && hudElements["MUI_StaminaBar"].exists)
		{
			return "MUI_StaminaBar";
		}
		if (BetterUIEnabled.Value && hudElements["BetterUI_StaminaBar"].exists)
		{
			return "BetterUI_StaminaBar";
		}
		return "staminapanel";
	}

	private static string GetQuickslotElement()
	{
		if (AzuQuickSlotsEnabled.Value && hudElements["QuickAccessBar"].exists)
		{
			return "QuickAccessBar";
		}
		if (RandyQuickSlotsEnabled.Value && hudElements["QuickSlotsHotkeyBar"].exists)
		{
			return "QuickSlotsHotkeyBar";
		}
		return "";
	}

	private static string GetMinimapElement()
	{
		if (hudElements["MUIMap"].exists)
		{
			return "MUIMap";
		}
		if (hudElements["MiniMap"].exists)
		{
			return "MiniMap";
		}
		return "";
	}

	private static void CheckCompass()
	{
		if (!aedenCompassEnabled.Value || !hudElements["Compass"].exists)
		{
			return;
		}
		if (displayCompassAlways.Value || (displayCompassInInventory.Value && InventoryGui.IsVisible()))
		{
			hudElements["Compass"].targetAlpha = 1f;
			if (!displayCompassInInventory.Value && InventoryGui.IsVisible())
			{
				hudElements["Compass"].HudSetTargetAlpha(0f);
			}
		}
		else
		{
			hudElements["Compass"].HudSetTargetAlpha(0f);
		}
	}

	private static void CheckDayTime()
	{
		if (!oryxenTimeEnabled.Value || !hudElements["DayTimePanel"].exists)
		{
			return;
		}
		if (displayTimeAlways.Value || (displayTimeInInventory.Value && InventoryGui.IsVisible()))
		{
			hudElements["DayTimePanel"].targetAlpha = 1f;
			if (!displayTimeInInventory.Value && InventoryGui.IsVisible())
			{
				hudElements["DayTimePanel"].HudSetTargetAlpha(0f);
			}
		}
		else
		{
			hudElements["DayTimePanel"].HudSetTargetAlpha(0f);
		}
	}

	private static void CheckRandyQuickSlots()
	{
		if (!RandyQuickSlotsEnabled.Value || !hudElements["QuickSlotsHotkeyBar"].exists)
		{
			return;
		}
		if (displayQuickSlotsAlways.Value || (displayQuickSlotsInInventory.Value && InventoryGui.IsVisible()))
		{
			hudElements["QuickSlotsHotkeyBar"].targetAlpha = 1f;
			if (!displayQuickSlotsInInventory.Value && InventoryGui.IsVisible())
			{
				hudElements["QuickSlotsHotkeyBar"].HudSetTargetAlpha(0f);
			}
		}
		else
		{
			hudElements["QuickSlotsHotkeyBar"].HudSetTargetAlpha(0f);
		}
	}

	private static void CheckAzuQuickSlots()
	{
		if (!AzuQuickSlotsEnabled.Value || !hudElements["QuickAccessBar"].exists)
		{
			return;
		}
		if (displayQuickSlotsAlways.Value || (displayQuickSlotsInInventory.Value && InventoryGui.IsVisible()))
		{
			hudElements["QuickAccessBar"].targetAlpha = 1f;
			if (!displayQuickSlotsInInventory.Value && InventoryGui.IsVisible())
			{
				hudElements["QuickAccessBar"].HudSetTargetAlpha(0f);
			}
		}
		else
		{
			hudElements["QuickAccessBar"].HudSetTargetAlpha(0f);
		}
	}

	private static void CheckPlayerEquippedWeapon(ItemData playerEquippedWeapon)
	{
		//IL_000a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0010: Invalid comparison between Unknown and I4
		if (playerEquippedWeapon != null && (int)playerEquippedWeapon.m_shared.m_itemType == 4)
		{
			characterEquippedBow = true;
			characterEquippedItem = false;
		}
		else if (playerEquippedWeapon != null)
		{
			characterEquippedBow = false;
			characterEquippedItem = true;
		}
		else
		{
			characterEquippedItem = false;
			characterEquippedBow = false;
		}
	}

	private static void ResetPlayerTookDamage()
	{
		playerTookDamage = false;
	}

	private static void SetPlayerUsedStamina()
	{
		playerUsedStamina = false;
	}

	private static void SetPlayerAteFood()
	{
		playerAteFood = false;
	}

	private static void SetPlayerUsedHotBarItem()
	{
		playerUsedHotBarItem = false;
	}

	private static void SetPlayerStates()
	{
		SetPlayerUsedStamina();
		SetPlayerAteFood();
		SetPlayerUsedHotBarItem();
		ResetPlayerTookDamage();
	}

	public static void setCompatibilityInit()
	{
		hudElements["BetterUI_HPBar"].exists = false;
		hudElements["BetterUI_FoodBar"].exists = false;
		hudElements["BetterUI_StaminaBar"].exists = false;
		hudElements["Compass"].exists = false;
		hudElements["QuickSlotsHotkeyBar"].exists = false;
		hudElements["QuickAccessBar"].exists = false;
		hudElements["MUIMap"].exists = false;
		hudElements["MUI_HPBar"].exists = false;
		hudElements["MUI_StaminaBar"].exists = false;
		hudElements["MUI_EitrBar"].exists = false;
		hudElements["MUI_GuardianPowerBar"].exists = false;
		hudElements["MUI_FoodBar"].exists = false;
		hudElements["food0"].exists = false;
		hudElements["food1"].exists = false;
		hudElements["food2"].exists = false;
	}

	public static void setCompatibility(Transform hud)
	{
		if (BetterUIEnabled.Value && !hudElements["BetterUI_HPBar"].exists && Object.op_Implicit((Object)(object)hud.Find("BetterUI_HPBar")))
		{
			hudElements["BetterUI_HPBar"].setElement(hud.Find("BetterUI_HPBar"));
			((Component)((Component)hudElements["BetterUI_HPBar"].element).GetComponent<RectTransform>()).gameObject.AddComponent<CanvasGroup>();
		}
		if (BetterUIEnabled.Value && !hudElements["BetterUI_FoodBar"].exists && Object.op_Implicit((Object)(object)hud.Find("BetterUI_FoodBar")))
		{
			hudElements["BetterUI_FoodBar"].setElement(hud.Find("BetterUI_FoodBar"));
			((Component)((Component)hudElements["BetterUI_FoodBar"].element).GetComponent<RectTransform>()).gameObject.AddComponent<CanvasGroup>();
		}
		if (BetterUIEnabled.Value && !hudElements["BetterUI_StaminaBar"].exists && Object.op_Implicit((Object)(object)hud.Find("BetterUI_StaminaBar")))
		{
			hudElements["BetterUI_StaminaBar"].setElement(hud.Find("BetterUI_StaminaBar"));
			((Component)((Component)hudElements["BetterUI_StaminaBar"].element).GetComponent<RectTransform>()).gameObject.AddComponent<CanvasGroup>();
		}
		if (aedenCompassEnabled.Value && !hudElements["Compass"].exists && Object.op_Implicit((Object)(object)hud.Find("Compass")))
		{
			hudElements["Compass"].setElement(hud.Find("Compass"));
			((Component)((Component)hudElements["Compass"].element).GetComponent<RectTransform>()).gameObject.AddComponent<CanvasGroup>();
		}
		if (oryxenTimeEnabled.Value && !hudElements["DayTimePanel"].exists && Object.op_Implicit((Object)(object)hud.Find("DayTimePanel")))
		{
			hudElements["DayTimePanel"].setElement(hud.Find("DayTimePanel"));
			((Component)((Component)hudElements["DayTimePanel"].element).GetComponent<RectTransform>()).gameObject.AddComponent<CanvasGroup>();
		}
		if (RandyQuickSlotsEnabled.Value && !hudElements["QuickSlotsHotkeyBar"].exists && Object.op_Implicit((Object)(object)hud.Find("QuickSlotsHotkeyBar")))
		{
			hudElements["QuickSlotsHotkeyBar"].setElement(hud.Find("QuickSlotsHotkeyBar"));
			((Component)((Component)hudElements["QuickSlotsHotkeyBar"].element).GetComponent<RectTransform>()).gameObject.AddComponent<CanvasGroup>();
		}
		if (AzuQuickSlotsEnabled.Value && !hudElements["QuickAccessBar"].exists && Object.op_Implicit((Object)(object)hud.Find("QuickAccessBar")))
		{
			hudElements["QuickAccessBar"].setElement(hud.Find("QuickAccessBar"));
			((Component)((Component)hudElements["QuickAccessBar"].element).GetComponent<RectTransform>()).gameObject.AddComponent<CanvasGroup>();
		}
		if (AzuMinimalUiEnabled.Value)
		{
			if (AzuMinimalUiEnabled.Value && !hudElements["MUIMap"].exists && Object.op_Implicit((Object)(object)hud.Find("MUIMap")))
			{
				hudElements["MUIMap"].setElement(hud.Find("MUIMap"));
				((Component)((Component)hudElements["MUIMap"].element).GetComponent<RectTransform>()).gameObject.AddComponent<CanvasGroup>();
			}
			if (muiHealthbar.Value && !hudElements["MUI_HPBar"].exists && Object.op_Implicit((Object)(object)hud.Find("MUI_HPBar")))
			{
				hudElements["MUI_HPBar"].setElement(hud.Find("MUI_HPBar"));
				((Component)((Component)hudElements["MUI_HPBar"].element).GetComponent<RectTransform>()).gameObject.AddComponent<CanvasGroup>();
			}
			if (muiStaminabar.Value && !hudElements["MUI_StaminaBar"].exists && Object.op_Implicit((Object)(object)hud.Find("MUI_StaminaBar")))
			{
				hudElements["MUI_StaminaBar"].setElement(hud.Find("MUI_StaminaBar"));
				((Component)((Component)hudElements["MUI_StaminaBar"].element).GetComponent<RectTransform>()).gameObject.AddComponent<CanvasGroup>();
			}
			if (muiEitrbar.Value && !hudElements["MUI_EitrBar"].exists && Object.op_Implicit((Object)(object)hud.Find("MUI_EitrBar")))
			{
				hudElements["MUI_EitrBar"].setElement(hud.Find("MUI_EitrBar"));
				((Component)((Component)hudElements["MUI_EitrBar"].element).GetComponent<RectTransform>()).gameObject.AddComponent<CanvasGroup>();
			}
			if (muiPowerbar.Value && !hudElements["MUI_GuardianPowerBar"].exists && Object.op_Implicit((Object)(object)hud.Find("MUI_GuardianPowerBar")))
			{
				hudElements["MUI_GuardianPowerBar"].setElement(hud.Find("MUI_GuardianPowerBar"));
				((Component)((Component)hudElements["MUI_GuardianPowerBar"].element).GetComponent<RectTransform>()).gameObject.AddComponent<CanvasGroup>();
			}
			if (muiFoodbar.Value && !hudElements["MUI_FoodBar"].exists && Object.op_Implicit((Object)(object)hud.Find("MUI_FoodBar")))
			{
				hudElements["MUI_FoodBar"].setElement(hud.Find("MUI_FoodBar"));
				((Component)((Component)hudElements["MUI_FoodBar"].element).GetComponent<RectTransform>()).gameObject.AddComponent<CanvasGroup>();
			}
			if (muiFoodbox.Value && !hudElements["food0"].exists && Object.op_Implicit((Object)(object)hud.Find("food0")))
			{
				hudElements["food0"].setElement(hud.Find("food0"));
				((Component)((Component)hudElements["food0"].element).GetComponent<RectTransform>()).gameObject.AddComponent<CanvasGroup>();
			}
			if (muiFoodbox.Value && !hudElements["food1"].exists && Object.op_Implicit((Object)(object)hud.Find("food1")))
			{
				hudElements["food1"].setElement(hud.Find("food1"));
				((Component)((Component)hudElements["food1"].element).GetComponent<RectTransform>()).gameObject.AddComponent<CanvasGroup>();
			}
			if (muiFoodbox.Value && !hudElements["food2"].exists && Object.op_Implicit((Object)(object)hud.Find("food2")))
			{
				hudElements["food2"].setElement(hud.Find("food2"));
				((Component)((Component)hudElements["food2"].element).GetComponent<RectTransform>()).gameObject.AddComponent<CanvasGroup>();
			}
		}
	}

	private void LoadConfig()
	{
		//IL_005c: 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_0383: Unknown result type (might be due to invalid IL or missing references)
		//IL_038d: Expected O, but got Unknown
		//IL_0455: Unknown result type (might be due to invalid IL or missing references)
		//IL_045f: Expected O, but got Unknown
		//IL_059d: Unknown result type (might be due to invalid IL or missing references)
		//IL_05a7: Expected O, but got Unknown
		//IL_05da: Unknown result type (might be due to invalid IL or missing references)
		//IL_05e4: Expected O, but got Unknown
		//IL_05f6: Unknown result type (might be due to invalid IL or missing references)
		//IL_0617: Unknown result type (might be due to invalid IL or missing references)
		//IL_0999: Unknown result type (might be due to invalid IL or missing references)
		//IL_09a3: Expected O, but got Unknown
		//IL_09d3: Unknown result type (might be due to invalid IL or missing references)
		//IL_09dd: Expected O, but got Unknown
		//IL_0a23: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a2d: Expected O, but got Unknown
		//IL_0a4b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a55: Expected O, but got Unknown
		//IL_0a94: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a9e: Expected O, but got Unknown
		//IL_0b8b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0b91: Unknown result type (might be due to invalid IL or missing references)
		//IL_0bb1: Unknown result type (might be due to invalid IL or missing references)
		//IL_0bb7: Unknown result type (might be due to invalid IL or missing references)
		string text = "1.0 - General";
		isEnabled = ((BaseUnityPlugin)this).Config.Bind<bool>(text, "Enable Mod", true, "Enable or disable the mod");
		nexusID = ((BaseUnityPlugin)this).Config.Bind<int>(text, "NexusID", 2732, "Nexus mod ID for updates");
		string text2 = "1.1 - Main settings";
		showHudKey = ((BaseUnityPlugin)this).Config.Bind<KeyboardShortcut>(text2, "1. Show HUD", new KeyboardShortcut((KeyCode)103, Array.Empty<KeyCode>()), "Keyboard shortcut or mouse button to display the hud for a duration.");
		hideHudKey = ((BaseUnityPlugin)this).Config.Bind<KeyboardShortcut>(text2, "2. Hide HUD", new KeyboardShortcut((KeyCode)104, Array.Empty<KeyCode>()), "Keyboard shortcut or mouse button to hide the hud permanently.");
		hudHiddenNotification = ((BaseUnityPlugin)this).Config.Bind<bool>(text2, "3. Enable notification for HUD Hide-Show", true, "Enable notifications in the top left corner for hiding the hud.");
		hudFadeDuration = ((BaseUnityPlugin)this).Config.Bind<float>(text2, "4. HUD fade duration", 1f, "How quickly the hud fades in or out.");
		showHudDuration = ((BaseUnityPlugin)this).Config.Bind<float>(text2, "5. HUD shown duration", 1f, "How long a hud element should stay up for when it is activated for certain conditions.");
		string text3 = "2.0 - Always display";
		displayHealthAlways = ((BaseUnityPlugin)this).Config.Bind<bool>(text3, "1. Health bar", false, "Always display the health panel.");
		displayStaminaBarAlways = ((BaseUnityPlugin)this).Config.Bind<bool>(text3, "2. Stamina bar", false, "Always display the stamina bar.");
		displayHotKeyBarAlways = ((BaseUnityPlugin)this).Config.Bind<bool>(text3, "3. Hotkey bar", false, "Always display the hotbar.");
		displayForsakenPowerAlways = ((BaseUnityPlugin)this).Config.Bind<bool>(text3, "4. Forsaken power", false, "Always display the forsaken power.");
		displayStatusEffectsAlways = ((BaseUnityPlugin)this).Config.Bind<bool>(text3, "5. Status effects", false, "Always display status effects.");
		displayKeyHintsAlways = ((BaseUnityPlugin)this).Config.Bind<bool>(text3, "6. Key hints", false, "Always display the key hints.");
		displayMiniMapAlways = ((BaseUnityPlugin)this).Config.Bind<bool>(text3, "7. Minimap", false, "Always display the minimap.");
		displayCrosshairAlways = ((BaseUnityPlugin)this).Config.Bind<bool>(text3, "8. Crosshair", true, "Always display the crosshair, overriding other display crosshair settings.");
		string text4 = "2.1 - Show on hotkey press";
		showHealthOnKeyPressed = ((BaseUnityPlugin)this).Config.Bind<bool>(text4, "1. Health bar", true, "Show the health panel when the show hud key is pressed.");
		showStaminaBarOnKeyPressed = ((BaseUnityPlugin)this).Config.Bind<bool>(text4, "2. Stamina bar", true, "Show the stamina bar when the show hud key is pressed.");
		showPowerOnKeyPressed = ((BaseUnityPlugin)this).Config.Bind<bool>(text4, "3. Forsaken power", true, "Show the forsaken power when the show hud key is pressed.");
		showKeyHintsOnKeyPressed = ((BaseUnityPlugin)this).Config.Bind<bool>(text4, "4. Key hints", true, "Show the key hints when the show hud key is pressed.");
		showHotKeyBarOnKeyPressed = ((BaseUnityPlugin)this).Config.Bind<bool>(text4, "5. Hotkey bar", true, "Show the hot key bar when the show hud key is pressed.");
		showStatusEffectsOnKeyPressed = ((BaseUnityPlugin)this).Config.Bind<bool>(text4, "6. Status effects", true, "Show the status effects when the show hud key is pressed.");
		showMiniMapOnKeyPressed = ((BaseUnityPlugin)this).Config.Bind<bool>(text4, "7. Minimap", true, "Show the minimap when the show hud key is pressed.");
		string text5 = "3.0 - Healthbar";
		displayHealthOnDamage = ((BaseUnityPlugin)this).Config.Bind<bool>(text5, "1. On damage", true, "Display the health panel when you take damage.");
		displayHealthInInventory = ((BaseUnityPlugin)this).Config.Bind<bool>(text5, "4. In inventory", true, "Display your health when in the inventory.");
		displayHealthWhenHungry = ((BaseUnityPlugin)this).Config.Bind<bool>(text5, "5. When hungry", false, "Display the health panel when you are hungry.");
		displayHealthWhenEating = ((BaseUnityPlugin)this).Config.Bind<bool>(text5, "6. When eating", false, "Display the health panel when you eat food.");
		displayHealthWhenBelow = ((BaseUnityPlugin)this).Config.Bind<bool>(text5, "7.1 When below health threshold", true, "When you are at or below a certain health percentage, display the health panel.");
		displayHealthWhenFoodBelow = ((BaseUnityPlugin)this).Config.Bind<bool>(text5, "7.2 When below food threshold", true, "When you are at or below a certain food percentage, display the health panel.");
		healthPercentage = ((BaseUnityPlugin)this).Config.Bind<float>(text5, "7.3 Health percentage", 0.75f, new ConfigDescription("Health percentage at which the health panel should be displayed", (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 1f), Array.Empty<object>()));
		string text6 = "3.1 - Staminabar";
		displayStaminaBarOnUse = ((BaseUnityPlugin)this).Config.Bind<bool>(text6, "1. On use", true, "Display the stamina bar when stamina is used, overrides stamina percentage.");
		displayStaminaBarInInventory = ((BaseUnityPlugin)this).Config.Bind<bool>(text6, "2. In inventory", true, "Display the stamina bar when in the inventory.");
		displayStaminaBarWhenHungry = ((BaseUnityPlugin)this).Config.Bind<bool>(text6, "3. When hungry", false, "Display the stamina bar when you are hungry.");
		displayStaminaBarWhenEating = ((BaseUnityPlugin)this).Config.Bind<bool>(text6, "4. When eating", true, "Display the stamina bar when you eat food.");
		displayStaminaBarWhenBelow = ((BaseUnityPlugin)this).Config.Bind<bool>(text6, "5. When below stamina threshold", true, "When you are at or below a certain stamina percentage, display the stamina bar.");
		staminaPercentage = ((BaseUnityPlugin)this).Config.Bind<float>(text6, "5.1 Stamina threshold", 0.99f, new ConfigDescription("Stamina percentage at which the stamina bar should be displayed.", (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 1f), Array.Empty<object>()));
		displayStaminaBarWhenFoodBelow = ((BaseUnityPlugin)this).Config.Bind<bool>(text6, "6. When below food threshold", false, "When you are at or below a certain food percentage, display the stamina bar.");
		string text7 = "3.2 - Hotkey bar";
		displayHotKeyBarInInventory = ((BaseUnityPlugin)this).Config.Bind<bool>(text7, "1. In inventory", true, "Display the hot key bar when in the inventory.");
		displayHotKeyBarOnItemSwitch = ((BaseUnityPlugin)this).Config.Bind<bool>(text7, "2. On item switch", false, "Display the hot key bar when you press any key for your hot bar items.");
		displayHotKeyBarWhenItemEquipped = ((BaseUnityPlugin)this).Config.Bind<bool>(text7, "3. On equipped item", false, "Display the hot key bar when you have an item equipped in either hand.");
		string text8 = "3.3 - Status Effects";
		displayStatusEffectsInInventory = ((BaseUnityPlugin)this).Config.Bind<bool>(text8, "1. In inventory", true, "Display status effects when in the inventory.");
		string text9 = "3.4 - Forsaken Power";
		displayPowerInInventory = ((BaseUnityPlugin)this).Config.Bind<bool>(text9, "1. In inventory", true, "Display the forsaken power when in the inventory.");
		displayPowerOnActivation = ((BaseUnityPlugin)this).Config.Bind<bool>(text9, "2. On activation", false, "Display the forsaken power when the key to use it is pressed.");
		string text10 = "3.5 Minimap";
		displayMiniMapInInventory = ((BaseUnityPlugin)this).Config.Bind<bool>(text10, "1. In inventory", true, "Display the minimap when in the inventory.");
		string text11 = "3.6 Crosshair";
		useCustomCrosshair = ((BaseUnityPlugin)this).Config.Bind<bool>(text11, "1. Use custom crosshair", false, new ConfigDescription("Enable or disable the new crosshair.", (AcceptableValueBase)null, new object[1]
		{
			new ConfigurationManagerAttributes
			{
				Order = 1
			}
		}));
		useCustomBowCrosshair = ((BaseUnityPlugin)this).Config.Bind<bool>(text11, "1.1 Use custom Bow crosshair", false, new ConfigDescription("Enable or disable the new crosshair for the bow draw.", (AcceptableValueBase)null, new object[1]
		{
			new ConfigurationManagerAttributes
			{
				Order = 2
			}
		}));
		crosshairColor = ((BaseUnityPlugin)this).Config.Bind<Color>(text11, "2. Color", Color.white, "Color and transparency of the crosshair.");
		crosshairBowDrawColor = ((BaseUnityPlugin)this).Config.Bind<Color>(text11, "2.1 Bow Draw crosshair color", Color.yellow, "Color and transparency of the bow draw crosshair.");
		displayBowDrawCrosshair = ((BaseUnityPlugin)this).Config.Bind<bool>(text11, "3. Show bow draw crosshair", true, "Display the bow draw crosshair.");
		displayCrosshairWhenBuilding = ((BaseUnityPlugin)this).Config.Bind<bool>(text11, "4. Show  while building", true, "Display the crosshair when you have the hammer equipped.");
		displayCrosshairOnActivation = ((BaseUnityPlugin)this).Config.Bind<bool>(text11, "5. Show  on object-hover", false, "Display crosshair when hovering over an activatable object.");
		displayCrosshairOnEquipped = ((BaseUnityPlugin)this).Config.Bind<bool>(text11, "6. Show on equipped item", false, "Display crosshair when an item is equipped in either hand.");
		displayCrosshairOnBowEquipped = ((BaseUnityPlugin)this).Config.Bind<bool>(text11, "7. Show on equipped bow", false, "Display crosshair when the bow is equipped.");
		disableStealthHud = ((BaseUnityPlugin)this).Config.Bind<bool>(text11, "8. Disable stealth hud", false, "Disable the stealth bar and indicator so it doesn't display.");
		disableCrosshairStamina = ((BaseUnityPlugin)this).Config.Bind<bool>(text11, "9. Hide the crosshair staminabar", false, "");
		string text12 = "4.0 - Compatibility";
		AzuMinimalUiEnabled = ((BaseUnityPlugin)this).Config.Bind<bool>(text12, "1. Minimal UI", false, "Enable compatibility for Azumatt's MinimalUI mod.");
		AzuQuickSlotsEnabled = ((BaseUnityPlugin)this).Config.Bind<bool>(text12, "2. AzuExtendedPlayerInventory", false, "Enable compatibility for Azumatt's ExtendedPlayerInventory mod.");
		RandyQuickSlotsEnabled = ((BaseUnityPlugin)this).Config.Bind<bool>(text12, "3. Equipment and Quick Slots", false, "Enable compatibility for quickslots mod.");
		aedenCompassEnabled = ((BaseUnityPlugin)this).Config.Bind<bool>(text12, "4. Compass", false, "Enable compatibility for aedenthorn's compass mod.");
		BetterUIEnabled = ((BaseUnityPlugin)this).Config.Bind<bool>(text12, "5. BetterUI", false, "Enable compatibility for Better UI.");
		oryxenTimeEnabled = ((BaseUnityPlugin)this).Config.Bind<bool>(text12, "6. Display Day and Time in HUD", false, "Enable compatibility for oryxen's display day and time mod.");
		string text13 = "4.1 - Compatibility: Quickslots";
		displayQuickSlotsInInventory = ((BaseUnityPlugin)this).Config.Bind<bool>(text13, "1. In inventory", false, "Display quick slots when in the inventory.");
		showQuickSlotsOnKeyPressed = ((BaseUnityPlugin)this).Config.Bind<bool>(text13, "2. On key pressed", false, "Show the quick slots when the show hud key is pressed.");
		displayQuickSlotsAlways = ((BaseUnityPlugin)this).Config.Bind<bool>(text13, "3. Always display", false, "Always display the quick slots (Requires [AzuExtendedInventory] or [Equipment and Quick Slots]).");
		string text14 = "4.2 - Compatibility: Day and Time";
		displayTimeInInventory = ((BaseUnityPlugin)this).Config.Bind<bool>(text14, "1. In inventory", false, "Display the time when in the inventory.");
		showTimeOnKeyPressed = ((BaseUnityPlugin)this).Config.Bind<bool>(text14, "2. On key pressed", false, "Show the time when the show hud key is pressed.");
		displayTimeAlways = ((BaseUnityPlugin)this).Config.Bind<bool>(text14, "3. Always display", false, "Always display the time or clock (Requires oryxen's display day and time mod).");
		string text15 = "4.3 - Compatibility: Compass";
		displayCompassInInventory = ((BaseUnityPlugin)this).Config.Bind<bool>(text15, "1. In inventory", false, "Display the compass when in the inventory.");
		showCompassOnKeyPressed = ((BaseUnityPlugin)this).Config.Bind<bool>(text15, "2. On key pressed", false, "Show the compass when the show hud key is pressed.");
		displayCompassAlways = ((BaseUnityPlugin)this).Config.Bind<bool>(text15, "3. Always", false, "Always display the compass (Requires aedenthorn's compass).");
		string text16 = "4.4 - Compatibility: Food bar";
		displayFoodBarAlways = ((BaseUnityPlugin)this).Config.Bind<bool>(text16, "1. Show always", false, "Always display the food bar (Requires Better UI or MinimalUI).");
		showFoodBarOnKeyPressed = ((BaseUnityPlugin)this).Config.Bind<bool>(text16, "2. On Show HUD hotkey", true, "Display the food bar when the show hud key is pressed.");
		displayFoodBarInInventory = ((BaseUnityPlugin)this).Config.Bind<bool>(text16, "3. In inventory", true, "Display the food bar when in the inventory.");
		displayFoodBarWhenHungry = ((BaseUnityPlugin)this).Config.Bind<bool>(text16, "4. When hungry", true, "Display the food bar when you are hungry.");
		displayFoodBarWhenEating = ((BaseUnityPlugin)this).Config.Bind<bool>(text16, "5. When eating", true, "Display the food bar when you eat food.");
		displayFoodBarWhenBelow = ((BaseUnityPlugin)this).Config.Bind<bool>(text16, "6. When below threshold", true, "When you are at or below a certain food percentage, display the food bar.");
		foodHungerAmount = ((BaseUnityPlugin)this).Config.Bind<int>(text16, "6.1 Hunger threshold", 3, new ConfigDescription("The minimum amount of food icons that need to be flashing to be considered hungry.", (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 3), Array.Empty<object>()));
		foodPercentage = ((BaseUnityPlugin)this).Config.Bind<float>(text16, "6.2 Food threshold", 0.35f, new ConfigDescription("Food percentage at which the food bar, health, or stamina should be displayed.", (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 1f), Array.Empty<object>()));
		hungerNotification = ((BaseUnityPlugin)this).Config.Bind<bool>(text16, "hungerNotification", false, "Enable notifications for when you are hungry.");
		hungerNotificationInterval = ((BaseUnityPlugin)this).Config.Bind<int>(text16, "hungerNotificationInterval", 25, new ConfigDescription("How often the notification should display in seconds.", (AcceptableValueBase)(object)new AcceptableValueRange<int>(5, 180), Array.Empty<object>()));
		hungerNotificationOption = ((BaseUnityPlugin)this).Config.Bind<hungerNotificationOptions>(text16, "hungerNotificationOption", hungerNotificationOptions.FoodPercentage, new ConfigDescription("Option to be used for notifications.", (AcceptableValueBase)null, Array.Empty<object>()));
		hungerNotificationText = ((BaseUnityPlugin)this).Config.Bind<string>(text16, "hungerNotificationText", "I'm feeling a bit peckish.", "Message for hunger notification.");
		hungerNotificationType = ((BaseUnityPlugin)this).Config.Bind<notificationTypes>(text16, "hungerNotificationType", notificationTypes.SmallTopLeft, new ConfigDescription("Notification types for the hunger notification.", (AcceptableValueBase)null, Array.Empty<object>()));
		string text17 = "4.5 - Compatibility: Minimal UI";
		muiHealthbar = ((BaseUnityPlugin)this).Config.Bind<bool>(text17, "1. Enable MinimalUI Health bar", true, "Has to be enabled/disabled in both mods");
		muiStaminabar = ((BaseUnityPlugin)this).Config.Bind<bool>(text17, "2. Enable MinimalUI Stamina bar", true, "Has to be enabled/disabled in both mods");
		muiEitrbar = ((BaseUnityPlugin)this).Config.Bind<bool>(text17, "3. Enable MinimalUI Eitr bar", true, "Has to be enabled/disabled in both mods");
		muiPowerbar = ((BaseUnityPlugin)this).Config.Bind<bool>(text17, "4. Enable MinimalUI Guardian Power bar", true, "Has to be enabled/disabled in both mods");
		muiFoodbar = ((BaseUnityPlugin)this).Config.Bind<bool>(text17, "5. Enable MinimalUI Food bar", true, "Has to be enabled/disabled in both mods");
		muiFoodbox = ((BaseUnityPlugin)this).Config.Bind<bool>(text17, "6. Enable MinimalUI Food boxes", true, "Has to be enabled/disabled in both mods");
		string text18 = "9.0 - Misc";
		hudHiddenOnStart = ((BaseUnityPlugin)this).Config.Bind<bool>(text18, "9.1 Hide HUD on start", false, "Hide the hud when the game is started.");
		compatibilityIdHotkey = ((BaseUnityPlugin)this).Config.Bind<KeyboardShortcut>(text18, "9.2 Prints missing UI elements to the console", default(KeyboardShortcut), "Debug purposes");
		listAllElementsHotkey = ((BaseUnityPlugin)this).Config.Bind<KeyboardShortcut>(text18, "9.3 Prints all available UI elements to the console", default(KeyboardShortcut), "Debug purposes");
	}

	private void Awake()
	{
		//IL_0006: Unknown result type (might be due to invalid IL or missing references)
		//IL_000c: Expected O, but got Unknown
		Harmony val = new Harmony("jwlei.ImmersiveHud");
		LoadConfig();
		if (!isEnabled.Value)
		{
			((BaseUnityPlugin)this).Logger.LogInfo((object)"Immersive Hud is disabled in the mod config");
			val.UnpatchSelf();
		}
		else
		{
			val.PatchAll();
		}
	}

	private void OnDestroy()
	{
		//IL_0006: Unknown result type (might be due to invalid IL or missing references)
		//IL_000c: Expected O, but got Unknown
		Harmony val = new Harmony("jwlei.ImmersiveHud");
		val.UnpatchSelf();
	}
}