Decompiled source of ArcadeHoe v1.0.2

ArcadeHoe.dll

Decompiled 3 days ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using HarmonyLib;
using Microsoft.CodeAnalysis;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("0.0.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Embedded]
	[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
	internal sealed class RefSafetyRulesAttribute : Attribute
	{
		public readonly int Version;

		public RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
namespace ArcadeHoe
{
	public static class ArcadeHoeController
	{
		public static readonly float[] RadiusPresets = new float[8] { 2.5f, 4f, 6f, 8f, 12f, 16f, 20f, 25f };

		public static int RadiusIndex = 2;

		public static bool IsHeightLocked = false;

		public static float LockedHeight = 0f;

		public static float CurrentRadius => RadiusPresets[Mathf.Clamp(RadiusIndex, 0, RadiusPresets.Length - 1)];

		public static bool IsHoldingArcadeHoe()
		{
			Player localPlayer = Player.m_localPlayer;
			if ((Object)(object)localPlayer == (Object)null)
			{
				return false;
			}
			ItemData item = ReflectionExtensions.RightItemRef.Invoke((Humanoid)(object)localPlayer);
			return ArcadeHoeItem.IsArcadeHoe(item);
		}

		public static void Update()
		{
			//IL_0029: Unknown result type (might be due to invalid IL or missing references)
			//IL_0115: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f0: Unknown result type (might be due to invalid IL or missing references)
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0255: Unknown result type (might be due to invalid IL or missing references)
			//IL_016f: Unknown result type (might be due to invalid IL or missing references)
			Player localPlayer = Player.m_localPlayer;
			if ((Object)(object)localPlayer == (Object)null || !IsHoldingArcadeHoe())
			{
				return;
			}
			if (Input.GetKeyDown(ArcadeHoePlugin.KeyRadiusIncrease.Value) || Input.GetKeyDown((KeyCode)61) || Input.GetKeyDown((KeyCode)43) || Input.GetKeyDown((KeyCode)270) || Input.GetKeyDown((KeyCode)93) || ((Input.GetKey((KeyCode)308) || Input.GetKey((KeyCode)307) || Input.GetKey((KeyCode)304) || Input.GetKey((KeyCode)303)) && Input.mouseScrollDelta.y > 0.1f))
			{
				if (RadiusIndex < RadiusPresets.Length - 1)
				{
					RadiusIndex++;
					ShowStatus($"Radius: {CurrentRadius:F1}m");
					UpdatePlacementVisuals(localPlayer);
				}
				else
				{
					ShowStatus($"Radius: {CurrentRadius:F1}m (MAX)");
				}
			}
			if (Input.GetKeyDown(ArcadeHoePlugin.KeyRadiusDecrease.Value) || Input.GetKeyDown((KeyCode)45) || Input.GetKeyDown((KeyCode)269) || Input.GetKeyDown((KeyCode)91) || ((Input.GetKey((KeyCode)308) || Input.GetKey((KeyCode)307) || Input.GetKey((KeyCode)304) || Input.GetKey((KeyCode)303)) && Input.mouseScrollDelta.y < -0.1f))
			{
				if (RadiusIndex > 0)
				{
					RadiusIndex--;
					ShowStatus($"Radius: {CurrentRadius:F1}m");
					UpdatePlacementVisuals(localPlayer);
				}
				else
				{
					ShowStatus($"Radius: {CurrentRadius:F1}m (MIN)");
				}
			}
			if (Input.GetKeyDown(ArcadeHoePlugin.KeyToggleHeightLock.Value))
			{
				IsHeightLocked = !IsHeightLocked;
				if (IsHeightLocked)
				{
					LockedHeight = GetCurrentAimHeight(localPlayer);
					ShowStatus($"Height Lock: ON ({LockedHeight:F1}m)");
				}
				else
				{
					ShowStatus("Height Lock: OFF (Following Player Feet / Terrain)");
				}
			}
			if (Input.GetKeyDown(ArcadeHoePlugin.KeyResetHeight.Value))
			{
				LockedHeight = GetCurrentAimHeight(localPlayer);
				IsHeightLocked = true;
				ShowStatus($"Height updated & locked to {LockedHeight:F1}m");
			}
		}

		public static void UpdatePlacementVisuals(Player player)
		{
			if (!((Object)(object)player == (Object)null))
			{
				GameObject val = ReflectionExtensions.PlacementGhostRef.Invoke(player);
				if ((Object)(object)val != (Object)null)
				{
					ArcadeHoeTerrainPatches.ApplyRadiusToCircleProjectors(val, CurrentRadius);
				}
				GameObject val2 = ReflectionExtensions.PlacementMarkerRef.Invoke(player);
				if ((Object)(object)val2 != (Object)null)
				{
					ArcadeHoeTerrainPatches.ApplyRadiusToCircleProjectors(val2, CurrentRadius);
				}
			}
		}

		private static float GetCurrentAimHeight(Player player)
		{
			//IL_0020: 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_004e: Unknown result type (might be due to invalid IL or missing references)
			GameObject val = ReflectionExtensions.PlacementGhostRef.Invoke(player);
			if ((Object)(object)val != (Object)null)
			{
				return val.transform.position.y;
			}
			GameObject val2 = ReflectionExtensions.PlacementMarkerRef.Invoke(player);
			if ((Object)(object)val2 != (Object)null)
			{
				return val2.transform.position.y;
			}
			return ((Component)player).transform.position.y;
		}

		public static void ShowStatus(string msg)
		{
			if ((Object)(object)MessageHud.instance != (Object)null)
			{
				MessageHud.instance.ShowMessage((MessageType)1, "<color=#00ffff>[Arcade Leveler]</color> " + msg, 0, (Sprite)null, false, true);
			}
		}
	}
	public static class ArcadeHoeItem
	{
		public const string PrefabName = "ArcadeHoe";

		public const string ItemName = "Arcade Runic Leveler";

		private static GameObject _prefabContainer;

		private static GameObject _arcadeHoePrefab;

		private static Sprite _customIcon;

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

		public static Sprite GetCustomIcon()
		{
			//IL_0034: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Expected O, but got Unknown
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_0070: Unknown result type (might be due to invalid IL or missing references)
			if ((Object)(object)_customIcon != (Object)null)
			{
				return _customIcon;
			}
			try
			{
				byte[] array = Convert.FromBase64String("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");
				Texture2D val = new Texture2D(128, 128, (TextureFormat)4, false);
				if (ImageConversion.LoadImage(val, array))
				{
					_customIcon = Sprite.Create(val, new Rect(0f, 0f, (float)((Texture)val).width, (float)((Texture)val).height), new Vector2(0.5f, 0.5f), 100f);
					return _customIcon;
				}
			}
			catch (Exception ex)
			{
				ArcadeHoePlugin.Log.LogError((object)("Failed to load custom icon: " + ex.Message));
			}
			return null;
		}

		public static bool IsArcadeHoe(ItemData item)
		{
			if (item == null)
			{
				return false;
			}
			if ((Object)(object)item.m_dropPrefab != (Object)null && ((Object)item.m_dropPrefab).name == "ArcadeHoe")
			{
				return true;
			}
			if (item.m_shared != null && item.m_shared.m_name == "Arcade Runic Leveler")
			{
				return true;
			}
			return false;
		}

		public static void InitPrefab(GameObject baseHoe)
		{
			//IL_01f8: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ff: Expected O, but got Unknown
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_0040: Expected O, but got Unknown
			//IL_023b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0269: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b9: Unknown result type (might be due to invalid IL or missing references)
			if ((Object)(object)_arcadeHoePrefab != (Object)null || (Object)(object)baseHoe == (Object)null)
			{
				return;
			}
			if ((Object)(object)_prefabContainer == (Object)null)
			{
				_prefabContainer = new GameObject("ArcadeHoe_PrefabContainer");
				_prefabContainer.SetActive(false);
				Object.DontDestroyOnLoad((Object)(object)_prefabContainer);
			}
			_arcadeHoePrefab = Object.Instantiate<GameObject>(baseHoe, _prefabContainer.transform);
			((Object)_arcadeHoePrefab).name = "ArcadeHoe";
			ZNetView val = _arcadeHoePrefab.GetComponent<ZNetView>();
			if ((Object)(object)val == (Object)null)
			{
				val = _arcadeHoePrefab.AddComponent<ZNetView>();
			}
			if ((Object)(object)val != (Object)null)
			{
				val.m_persistent = true;
				val.m_type = (ObjectType)0;
			}
			ItemDrop component = _arcadeHoePrefab.GetComponent<ItemDrop>();
			if ((Object)(object)component != (Object)null && component.m_itemData != null && component.m_itemData.m_shared != null)
			{
				component.m_itemData.m_dropPrefab = _arcadeHoePrefab;
				SharedData shared = component.m_itemData.m_shared;
				shared.m_name = "Arcade Runic Leveler";
				shared.m_description = "Ancient runic terraformer.\n• ⚡ Zero stamina drain\n• \ud83d\udc8e Indestructible (never breaks)\n• \ud83d\udccf True Flat Leveling (no jagged bumps)\n• \ud83c\udfaf Adjustable Radius [ [ / ] ]\n• \ud83d\udd12 Height Lock [ H ] to freeze elevation\n• \ud83c\udfaf Reset to Aim [ J ]";
				shared.m_attack.m_attackStamina = 0f;
				shared.m_useDurability = false;
				shared.m_useDurabilityDrain = 0f;
				shared.m_maxDurability = 9999f;
				shared.m_weight = 0.5f;
				shared.m_maxQuality = 1;
				component.m_itemData.m_durability = 9999f;
				Sprite customIcon = GetCustomIcon();
				if ((Object)(object)customIcon != (Object)null)
				{
					shared.m_icons = (Sprite[])(object)new Sprite[1] { customIcon };
				}
				try
				{
					ApplyBlueStoneTexture(_arcadeHoePrefab);
				}
				catch (Exception ex)
				{
					ArcadeHoePlugin.Log.LogWarning((object)("Could not apply blue stone texture: " + ex.Message));
				}
				try
				{
					Transform val2 = _arcadeHoePrefab.transform.Find("attach");
					GameObject val3 = new GameObject("ArcadeRunicGlow");
					val3.transform.SetParent(((Object)(object)val2 != (Object)null) ? val2 : _arcadeHoePrefab.transform, false);
					val3.transform.localPosition = new Vector3(0f, 0.45f, 0.15f);
					Light val4 = val3.AddComponent<Light>();
					val4.type = (LightType)2;
					val4.color = new Color(0.1f, 0.85f, 1f);
					val4.range = 3.5f;
					val4.intensity = 1.2f;
					val4.shadows = (LightShadows)0;
				}
				catch (Exception ex2)
				{
					ArcadeHoePlugin.Log.LogWarning((object)("Could not attach runic light: " + ex2.Message));
				}
			}
			ArcadeHoePlugin.Log.LogInfo((object)"ArcadeHoe prefab initialized with custom inventory icon.");
		}

		private static void ApplyBlueStoneTexture(GameObject prefab)
		{
			//IL_00a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a8: Expected O, but got Unknown
			//IL_00c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f0: Expected O, but got Unknown
			//IL_0111: Unknown result type (might be due to invalid IL or missing references)
			//IL_0116: Unknown result type (might be due to invalid IL or missing references)
			//IL_0118: Unknown result type (might be due to invalid IL or missing references)
			//IL_011f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0215: Unknown result type (might be due to invalid IL or missing references)
			//IL_021c: Expected O, but got Unknown
			//IL_0258: Unknown result type (might be due to invalid IL or missing references)
			//IL_01bc: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_017b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0182: 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_01aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_01af: Unknown result type (might be due to invalid IL or missing references)
			Renderer[] componentsInChildren = prefab.GetComponentsInChildren<Renderer>(true);
			Renderer[] array = componentsInChildren;
			foreach (Renderer val in array)
			{
				if ((Object)(object)val == (Object)null || (Object)(object)val.sharedMaterial == (Object)null)
				{
					continue;
				}
				Material sharedMaterial = val.sharedMaterial;
				Texture mainTexture = sharedMaterial.mainTexture;
				if ((Object)(object)mainTexture == (Object)null)
				{
					continue;
				}
				try
				{
					RenderTexture temporary = RenderTexture.GetTemporary(mainTexture.width, mainTexture.height, 0, (RenderTextureFormat)0);
					Graphics.Blit(mainTexture, temporary);
					RenderTexture active = RenderTexture.active;
					RenderTexture.active = temporary;
					Texture2D val2 = new Texture2D(mainTexture.width, mainTexture.height, (TextureFormat)4, false);
					val2.ReadPixels(new Rect(0f, 0f, (float)mainTexture.width, (float)mainTexture.height), 0, 0);
					val2.Apply();
					Texture2D val3 = new Texture2D(mainTexture.width, mainTexture.height, (TextureFormat)4, false);
					Color[] pixels = val2.GetPixels();
					Color[] array2 = (Color[])(object)new Color[pixels.Length];
					for (int j = 0; j < pixels.Length; j++)
					{
						Color val4 = pixels[j];
						float num = val4.r - val4.b;
						if (num < 0.12f || ((Color)(ref val4)).grayscale < 0.22f)
						{
							float grayscale = ((Color)(ref val4)).grayscale;
							pixels[j] = new Color(grayscale * 0.1f, grayscale * 0.7f + 0.12f, grayscale * 1f + 0.3f, val4.a);
							array2[j] = new Color(0f, grayscale * 0.8f, grayscale * 1.1f, 1f);
						}
						else
						{
							array2[j] = Color.black;
						}
					}
					val2.SetPixels(pixels);
					val2.Apply();
					val3.SetPixels(array2);
					val3.Apply();
					RenderTexture.active = active;
					RenderTexture.ReleaseTemporary(temporary);
					Material val5 = new Material(sharedMaterial);
					val5.mainTexture = (Texture)(object)val2;
					val5.EnableKeyword("_EMISSION");
					val5.SetTexture("_EmissionMap", (Texture)(object)val3);
					val5.SetColor("_EmissionColor", new Color(0.2f, 0.9f, 1.2f));
					val.material = val5;
					val.sharedMaterial = val5;
					ArcadeHoePlugin.Log.LogInfo((object)("Applied glowing blue stone texture to: " + ((Object)((Component)val).gameObject).name));
				}
				catch (Exception ex)
				{
					ArcadeHoePlugin.Log.LogWarning((object)("Failed to tint texture on " + ((Object)((Component)val).gameObject).name + ": " + ex.Message));
				}
			}
		}

		public static void RegisterInObjectDB(ObjectDB odb)
		{
			if ((Object)(object)odb == (Object)null || odb.m_items == null || odb.m_items.Count == 0)
			{
				return;
			}
			if ((Object)(object)_arcadeHoePrefab == (Object)null)
			{
				GameObject val = odb.GetItemPrefab("Hoe");
				if ((Object)(object)val == (Object)null)
				{
					foreach (GameObject item in odb.m_items)
					{
						if ((Object)(object)item != (Object)null && ((Object)item).name == "Hoe")
						{
							val = item;
							break;
						}
					}
				}
				if ((Object)(object)val == (Object)null && (Object)(object)ZNetScene.instance != (Object)null)
				{
					val = ZNetScene.instance.GetPrefab("Hoe");
				}
				if ((Object)(object)val == (Object)null)
				{
					ArcadeHoePlugin.Log.LogWarning((object)"Vanilla Hoe not found in ObjectDB or ZNetScene!");
					return;
				}
				InitPrefab(val);
			}
			if ((Object)(object)_arcadeHoePrefab == (Object)null)
			{
				return;
			}
			odb.m_items.RemoveAll((GameObject p) => (Object)(object)p == (Object)null || ((Object)p).name == "ArcadeHoe");
			odb.m_items.Add(_arcadeHoePrefab);
			int stableHashCode = StringExtensionMethods.GetStableHashCode("ArcadeHoe");
			FieldInfo fieldInfo = AccessTools.Field(typeof(ObjectDB), "m_itemByHash");
			if (fieldInfo != null && fieldInfo.GetValue(odb) is Dictionary<int, GameObject> dictionary)
			{
				dictionary[stableHashCode] = _arcadeHoePrefab;
			}
			ItemDrop component = _arcadeHoePrefab.GetComponent<ItemDrop>();
			if ((Object)(object)component != (Object)null && component.m_itemData != null && component.m_itemData.m_shared != null)
			{
				FieldInfo fieldInfo2 = AccessTools.Field(typeof(ObjectDB), "m_itemByData");
				if (fieldInfo2 != null && fieldInfo2.GetValue(odb) is Dictionary<SharedData, GameObject> dictionary2)
				{
					dictionary2[component.m_itemData.m_shared] = _arcadeHoePrefab;
				}
			}
			try
			{
				MethodInfo methodInfo = AccessTools.Method(typeof(ObjectDB), "UpdateRegisters", (Type[])null, (Type[])null);
				if (methodInfo != null)
				{
					methodInfo.Invoke(odb, null);
				}
			}
			catch
			{
			}
			RegisterRecipe(odb);
			ArcadeHoePlugin.Log.LogInfo((object)"ArcadeHoe item & recipe registered in ObjectDB.");
		}

		private static void RegisterRecipe(ObjectDB odb)
		{
			//IL_01d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_01da: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e7: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_01fa: Expected O, but got Unknown
			//IL_020d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0212: Unknown result type (might be due to invalid IL or missing references)
			//IL_021f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0226: Unknown result type (might be due to invalid IL or missing references)
			//IL_0232: Expected O, but got Unknown
			odb.m_recipes.RemoveAll((Recipe r) => (Object)(object)r != (Object)null && (Object)(object)r.m_item != (Object)null && (Object)(object)((Component)r.m_item).gameObject != (Object)null && ((Object)((Component)r.m_item).gameObject).name == "ArcadeHoe");
			ItemDrop component = _arcadeHoePrefab.GetComponent<ItemDrop>();
			if ((Object)(object)component == (Object)null)
			{
				return;
			}
			Recipe val = ScriptableObject.CreateInstance<Recipe>();
			((Object)val).name = "Recipe_ArcadeHoe";
			val.m_item = component;
			val.m_enabled = true;
			val.m_amount = 1;
			val.m_minStationLevel = 1;
			CraftingStation val2 = null;
			GameObject itemPrefab = odb.GetItemPrefab("Hammer");
			if ((Object)(object)itemPrefab != (Object)null)
			{
				ItemDrop component2 = itemPrefab.GetComponent<ItemDrop>();
				if ((Object)(object)component2 != (Object)null && component2.m_itemData != null && component2.m_itemData.m_shared != null && (Object)(object)component2.m_itemData.m_shared.m_buildPieces != (Object)null)
				{
					foreach (GameObject piece in component2.m_itemData.m_shared.m_buildPieces.m_pieces)
					{
						if ((Object)(object)piece != (Object)null && ((Object)piece).name == "piece_workbench")
						{
							val2 = piece.GetComponent<CraftingStation>();
							break;
						}
					}
				}
			}
			if ((Object)(object)val2 == (Object)null && (Object)(object)ZNetScene.instance != (Object)null)
			{
				GameObject prefab = ZNetScene.instance.GetPrefab("piece_workbench");
				if ((Object)(object)prefab != (Object)null)
				{
					val2 = prefab.GetComponent<CraftingStation>();
				}
			}
			val.m_craftingStation = val2;
			GameObject itemPrefab2 = odb.GetItemPrefab("Wood");
			GameObject itemPrefab3 = odb.GetItemPrefab("Stone");
			List<Requirement> list = new List<Requirement>();
			if ((Object)(object)itemPrefab2 != (Object)null)
			{
				list.Add(new Requirement
				{
					m_resItem = itemPrefab2.GetComponent<ItemDrop>(),
					m_amount = 5,
					m_recover = true
				});
			}
			if ((Object)(object)itemPrefab3 != (Object)null)
			{
				list.Add(new Requirement
				{
					m_resItem = itemPrefab3.GetComponent<ItemDrop>(),
					m_amount = 2,
					m_recover = true
				});
			}
			val.m_resources = list.ToArray();
			odb.m_recipes.Add(val);
		}

		public static void RegisterInZNetScene(ZNetScene scene)
		{
			if ((Object)(object)scene == (Object)null)
			{
				return;
			}
			if ((Object)(object)_arcadeHoePrefab == (Object)null)
			{
				GameObject prefab = scene.GetPrefab("Hoe");
				if ((Object)(object)prefab != (Object)null)
				{
					InitPrefab(prefab);
				}
			}
			if (!((Object)(object)_arcadeHoePrefab == (Object)null))
			{
				scene.m_prefabs.RemoveAll((GameObject p) => (Object)(object)p == (Object)null || ((Object)(object)p != (Object)(object)_arcadeHoePrefab && ((Object)p).name == "ArcadeHoe"));
				if (!scene.m_prefabs.Contains(_arcadeHoePrefab))
				{
					scene.m_prefabs.Add(_arcadeHoePrefab);
				}
				int stableHashCode = StringExtensionMethods.GetStableHashCode("ArcadeHoe");
				Dictionary<int, GameObject> dictionary = ReflectionExtensions.NamedPrefabsRef.Invoke(scene);
				if (dictionary != null)
				{
					dictionary[stableHashCode] = _arcadeHoePrefab;
					ArcadeHoePlugin.Log.LogInfo((object)"ArcadeHoe registered in ZNetScene.");
				}
			}
		}

		public static void EnsureIcon(ItemData item)
		{
			if (IsArcadeHoe(item) && item != null && item.m_shared != null)
			{
				Sprite customIcon = GetCustomIcon();
				if ((Object)(object)customIcon != (Object)null && (item.m_shared.m_icons == null || item.m_shared.m_icons.Length == 0 || (Object)(object)item.m_shared.m_icons[0] != (Object)(object)customIcon))
				{
					item.m_shared.m_icons = (Sprite[])(object)new Sprite[1] { customIcon };
				}
			}
		}
	}
	[HarmonyPatch(typeof(ObjectDB), "Awake")]
	internal static class ObjectDB_Awake_Patch
	{
		private static void Postfix(ObjectDB __instance)
		{
			ArcadeHoeItem.RegisterInObjectDB(__instance);
		}
	}
	[HarmonyPatch(typeof(ObjectDB), "CopyOtherDB")]
	internal static class ObjectDB_CopyOtherDB_Patch
	{
		private static void Postfix(ObjectDB __instance)
		{
			ArcadeHoeItem.RegisterInObjectDB(__instance);
		}
	}
	[HarmonyPatch(typeof(ZNetScene), "Awake")]
	internal static class ZNetScene_Awake_Patch
	{
		private static void Postfix(ZNetScene __instance)
		{
			ArcadeHoeItem.RegisterInZNetScene(__instance);
		}
	}
	[HarmonyPatch(typeof(ItemDrop), "LoadFromExternalZDO")]
	internal static class ItemDrop_LoadFromExternalZDO_Patch
	{
		private static bool Prefix(ItemDrop __instance, ZDO zdo)
		{
			if ((Object)(object)__instance == (Object)null)
			{
				return true;
			}
			ZNetView val = ReflectionExtensions.ItemDropNViewRef.Invoke(__instance);
			if ((Object)(object)val == (Object)null)
			{
				val = ((Component)__instance).GetComponent<ZNetView>();
				ReflectionExtensions.ItemDropNViewRef.Invoke(__instance) = val;
			}
			if ((Object)(object)val == (Object)null || val.GetZDO() == null)
			{
				try
				{
					ItemDrop.LoadFromZDO(__instance.m_itemData, zdo, -1);
					__instance.SetQuality(__instance.m_itemData.m_quality);
				}
				catch (Exception ex)
				{
					ArcadeHoePlugin.Log.LogWarning((object)("Fallback LoadFromZDO warning: " + ex.Message));
				}
				return false;
			}
			return true;
		}
	}
	[HarmonyPatch(typeof(ItemStand), "DropItem")]
	internal static class ItemStand_DropItem_Patch
	{
		private static void Finalizer(ItemStand __instance, Exception __exception)
		{
			if (__exception == null || !((Object)(object)__instance != (Object)null))
			{
				return;
			}
			ZNetView val = ReflectionExtensions.ItemStandNViewRef.Invoke(__instance);
			if ((Object)(object)val != (Object)null && val.IsValid())
			{
				ArcadeHoePlugin.Log.LogError((object)("Caught exception during ItemStand.DropItem, forcing item clear to prevent duplication: " + __exception));
				try
				{
					val.GetZDO().Set(ZDOVars.s_item, 0, false);
					val.GetZDO().Set(ZDOVars.s_type, 0, false);
					val.InvokeRPC(ZNetView.Everybody, "SetVisualItem", new object[4] { 0, 0, 0, 0 });
				}
				catch
				{
				}
			}
		}
	}
	[BepInPlugin("arcade.valheim.arcadehoe", "ArcadeHoe", "1.0.2")]
	[BepInProcess("valheim.exe")]
	[BepInProcess("valheim_server.exe")]
	public class ArcadeHoePlugin : BaseUnityPlugin
	{
		public const string PluginGuid = "arcade.valheim.arcadehoe";

		public const string PluginName = "ArcadeHoe";

		public const string PluginVersion = "1.0.2";

		public static ConfigEntry<KeyCode> KeyRadiusIncrease;

		public static ConfigEntry<KeyCode> KeyRadiusDecrease;

		public static ConfigEntry<KeyCode> KeyToggleHeightLock;

		public static ConfigEntry<KeyCode> KeyResetHeight;

		public static ConfigEntry<float> DefaultRadius;

		public static ConfigEntry<bool> SmoothEdges;

		private Harmony _harmony;

		internal static ManualLogSource Log { get; private set; }

		internal static ArcadeHoePlugin Instance { get; private set; }

		private void Awake()
		{
			//IL_00e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ec: Expected O, but got Unknown
			Instance = this;
			Log = ((BaseUnityPlugin)this).Logger;
			KeyRadiusIncrease = ((BaseUnityPlugin)this).Config.Bind<KeyCode>("Controls", "RadiusIncreaseKey", (KeyCode)93, "Key to increase leveling radius (default: ']')");
			KeyRadiusDecrease = ((BaseUnityPlugin)this).Config.Bind<KeyCode>("Controls", "RadiusDecreaseKey", (KeyCode)91, "Key to decrease leveling radius (default: '[')");
			KeyToggleHeightLock = ((BaseUnityPlugin)this).Config.Bind<KeyCode>("Controls", "ToggleHeightLockKey", (KeyCode)104, "Key to toggle True Flat Height Lock (default: 'H')");
			KeyResetHeight = ((BaseUnityPlugin)this).Config.Bind<KeyCode>("Controls", "ResetHeightKey", (KeyCode)106, "Key to reset locked height to current aim height (default: 'J')");
			DefaultRadius = ((BaseUnityPlugin)this).Config.Bind<float>("Settings", "DefaultRadius", 6f, "Default leveling radius in meters");
			SmoothEdges = ((BaseUnityPlugin)this).Config.Bind<bool>("Settings", "SmoothEdges", true, "Automatically smooth edges of leveled pads to blend into natural terrain");
			_harmony = new Harmony("arcade.valheim.arcadehoe");
			_harmony.PatchAll(Assembly.GetExecutingAssembly());
			((Component)this).gameObject.AddComponent<ArcadeHoeUI>();
			Log.LogInfo((object)"ArcadeHoe v1.0.2 loaded successfully.");
		}

		private void Update()
		{
			ArcadeHoeController.Update();
		}

		private void OnDestroy()
		{
			Harmony harmony = _harmony;
			if (harmony != null)
			{
				harmony.UnpatchSelf();
			}
		}
	}
	[HarmonyPatch]
	public static class ArcadeHoeTerrainPatches
	{
		[HarmonyPatch(typeof(ItemData), "GetIcon")]
		[HarmonyPrefix]
		private static bool ItemData_GetIcon_Prefix(ItemData __instance, ref Sprite __result)
		{
			if (ArcadeHoeItem.IsArcadeHoe(__instance))
			{
				Sprite customIcon = ArcadeHoeItem.GetCustomIcon();
				if ((Object)(object)customIcon != (Object)null)
				{
					__result = customIcon;
					return false;
				}
			}
			return true;
		}

		[HarmonyPatch(typeof(ItemDrop), "Pickup")]
		[HarmonyPrefix]
		private static bool ItemDrop_Pickup_Prefix(ItemDrop __instance, Humanoid character)
		{
			if ((Object)(object)__instance == (Object)null || (Object)(object)character == (Object)null)
			{
				return true;
			}
			ZNetView component = ((Component)__instance).GetComponent<ZNetView>();
			if (((Object)(object)component == (Object)null || !component.IsValid()) && character.GetInventory() != null && __instance.m_itemData != null && character.GetInventory().AddItem(__instance.m_itemData))
			{
				((Character)character).ShowPickupMessage(__instance.m_itemData, __instance.m_itemData.m_stack);
				Object.Destroy((Object)(object)((Component)__instance).gameObject);
				return false;
			}
			return true;
		}

		[HarmonyPatch(typeof(ZSyncTransform), "Awake")]
		[HarmonyPrefix]
		private static bool ZSyncTransform_Awake_Prefix(ZSyncTransform __instance)
		{
			if ((Object)(object)__instance == (Object)null)
			{
				return true;
			}
			ZNetView component = ((Component)__instance).GetComponent<ZNetView>();
			if ((Object)(object)component == (Object)null)
			{
				((Behaviour)__instance).enabled = false;
				return false;
			}
			return true;
		}

		[HarmonyPatch(typeof(Player), "GetBuildStamina")]
		[HarmonyPostfix]
		private static void Player_GetBuildStamina_Postfix(Player __instance, ref float __result)
		{
			ItemData item = ReflectionExtensions.RightItemRef.Invoke((Humanoid)(object)__instance);
			if (ArcadeHoeItem.IsArcadeHoe(item))
			{
				__result = 0f;
			}
		}

		[HarmonyPatch(typeof(Player), "UpdatePlacement")]
		[HarmonyPrefix]
		private static void Player_UpdatePlacement_Prefix(Player __instance)
		{
			ItemData val = ReflectionExtensions.RightItemRef.Invoke((Humanoid)(object)__instance);
			if (ArcadeHoeItem.IsArcadeHoe(val) && val != null)
			{
				val.m_durability = val.GetMaxDurability();
			}
		}

		public static void ApplyRadiusToCircleProjectors(GameObject root, float targetRadius)
		{
			if ((Object)(object)root == (Object)null)
			{
				return;
			}
			CircleProjector[] componentsInChildren = root.GetComponentsInChildren<CircleProjector>(true);
			CircleProjector[] array = componentsInChildren;
			foreach (CircleProjector val in array)
			{
				if (!((Object)(object)val == (Object)null) && Mathf.Abs(val.m_radius - targetRadius) > 0.05f)
				{
					val.m_radius = targetRadius;
					val.m_nrOfSegments = Mathf.Max(32, (int)(targetRadius * 6f));
					try
					{
						typeof(CircleProjector).GetMethod("CreateSegments", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)?.Invoke(val, null);
					}
					catch
					{
					}
				}
			}
		}

		[HarmonyPatch(typeof(Player), "UpdatePlacementGhost")]
		[HarmonyPostfix]
		private static void Player_UpdatePlacementGhost_Postfix(Player __instance, bool flashGuardStone)
		{
			//IL_0045: 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_005e: Unknown result type (might be due to invalid IL or missing references)
			//IL_009d: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b6: Unknown result type (might be due to invalid IL or missing references)
			if (!ArcadeHoeController.IsHoldingArcadeHoe())
			{
				return;
			}
			float currentRadius = ArcadeHoeController.CurrentRadius;
			GameObject val = ReflectionExtensions.PlacementGhostRef.Invoke(__instance);
			if ((Object)(object)val != (Object)null)
			{
				if (ArcadeHoeController.IsHeightLocked)
				{
					Vector3 position = val.transform.position;
					position.y = ArcadeHoeController.LockedHeight;
					val.transform.position = position;
				}
				ApplyRadiusToCircleProjectors(val, currentRadius);
			}
			GameObject val2 = ReflectionExtensions.PlacementMarkerRef.Invoke(__instance);
			if ((Object)(object)val2 != (Object)null)
			{
				if (ArcadeHoeController.IsHeightLocked)
				{
					Vector3 position2 = val2.transform.position;
					position2.y = ArcadeHoeController.LockedHeight;
					val2.transform.position = position2;
				}
				ApplyRadiusToCircleProjectors(val2, currentRadius);
			}
		}

		[HarmonyPatch(typeof(Player), "PlacePiece")]
		[HarmonyPrefix]
		private static void Player_PlacePiece_Prefix(Player __instance, Piece piece, ref Vector3 pos, Quaternion rot, bool doAttack, bool cheated)
		{
			//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_005c: Unknown result type (might be due to invalid IL or missing references)
			if (!ArcadeHoeController.IsHoldingArcadeHoe())
			{
				return;
			}
			GameObject val = ReflectionExtensions.PlacementGhostRef.Invoke(__instance);
			if (ArcadeHoeController.IsHeightLocked)
			{
				pos.y = ArcadeHoeController.LockedHeight;
				if ((Object)(object)val != (Object)null)
				{
					Vector3 position = val.transform.position;
					position.y = ArcadeHoeController.LockedHeight;
					val.transform.position = position;
				}
			}
		}

		[HarmonyPatch(typeof(TerrainOp), "Awake")]
		[HarmonyPrefix]
		private static void TerrainOp_Awake_Prefix(TerrainOp __instance)
		{
			//IL_00fc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0101: Unknown result type (might be due to invalid IL or missing references)
			//IL_0115: Unknown result type (might be due to invalid IL or missing references)
			if (!ArcadeHoeController.IsHoldingArcadeHoe())
			{
				return;
			}
			float currentRadius = ArcadeHoeController.CurrentRadius;
			if (__instance.m_settings.m_level)
			{
				__instance.m_settings.m_levelRadius = currentRadius;
				if (ArcadeHoePlugin.SmoothEdges.Value)
				{
					__instance.m_settings.m_smooth = true;
					__instance.m_settings.m_smoothRadius = currentRadius * 1.35f;
					__instance.m_settings.m_smoothPower = 2f;
				}
			}
			else if (__instance.m_settings.m_smooth)
			{
				__instance.m_settings.m_smoothRadius = currentRadius * 1.4f;
				__instance.m_settings.m_smoothPower = 2.5f;
			}
			else if (__instance.m_settings.m_raise)
			{
				__instance.m_settings.m_raiseRadius = currentRadius;
			}
			if (__instance.m_settings.m_paintCleared)
			{
				__instance.m_settings.m_paintRadius = currentRadius;
			}
			if (ArcadeHoeController.IsHeightLocked)
			{
				Vector3 position = ((Component)__instance).transform.position;
				position.y = ArcadeHoeController.LockedHeight;
				((Component)__instance).transform.position = position;
			}
		}

		[HarmonyPatch(typeof(TerrainModifier), "Awake")]
		[HarmonyPrefix]
		private static void TerrainModifier_Awake_Prefix(TerrainModifier __instance)
		{
			//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_00c2: Unknown result type (might be due to invalid IL or missing references)
			if (!ArcadeHoeController.IsHoldingArcadeHoe())
			{
				return;
			}
			float currentRadius = ArcadeHoeController.CurrentRadius;
			if (__instance.m_level)
			{
				__instance.m_levelRadius = currentRadius;
				if (ArcadeHoePlugin.SmoothEdges.Value)
				{
					__instance.m_smooth = true;
					__instance.m_smoothRadius = currentRadius * 1.35f;
					__instance.m_smoothPower = 2f;
				}
			}
			else if (__instance.m_smooth)
			{
				__instance.m_smoothRadius = currentRadius * 1.4f;
				__instance.m_smoothPower = 2.5f;
			}
			if (__instance.m_paintCleared)
			{
				__instance.m_paintRadius = currentRadius;
			}
			if (ArcadeHoeController.IsHeightLocked)
			{
				Vector3 position = ((Component)__instance).transform.position;
				position.y = ArcadeHoeController.LockedHeight;
				((Component)__instance).transform.position = position;
			}
		}

		[HarmonyPatch(typeof(Heightmap), "AtMaxWorldLevelDepth")]
		[HarmonyPrefix]
		private static bool Heightmap_AtMaxWorldLevelDepth_Prefix(ref bool __result)
		{
			if (ArcadeHoeController.IsHoldingArcadeHoe())
			{
				__result = false;
				return false;
			}
			return true;
		}

		[HarmonyPatch(typeof(Heightmap), "AtMaxLevelDepth")]
		[HarmonyPrefix]
		private static bool Heightmap_AtMaxLevelDepth_Prefix(ref bool __result)
		{
			if (ArcadeHoeController.IsHoldingArcadeHoe())
			{
				__result = false;
				return false;
			}
			return true;
		}

		[HarmonyPatch(typeof(TerrainComp), "LevelTerrain")]
		[HarmonyPrefix]
		private static bool TerrainComp_LevelTerrain_Prefix(TerrainComp __instance, Vector3 worldPos, float radius, bool square)
		{
			//IL_0038: 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_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_0054: 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_00d3: 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)
			if (!ArcadeHoeController.IsHoldingArcadeHoe())
			{
				return true;
			}
			try
			{
				Heightmap val = ReflectionExtensions.HMapRef.Invoke(__instance);
				if ((Object)(object)val == (Object)null)
				{
					return true;
				}
				int num = default(int);
				int num2 = default(int);
				val.WorldToVertex(worldPos, ref num, ref num2);
				Vector3 val2 = worldPos - ((Component)__instance).transform.position;
				float num3 = radius / val.m_scale;
				int num4 = Mathf.CeilToInt(num3);
				int num5 = ReflectionExtensions.TCWidthRef.Invoke(__instance) + 1;
				Vector2 val3 = default(Vector2);
				((Vector2)(ref val3))..ctor((float)num, (float)num2);
				float[] array = ReflectionExtensions.SmoothDeltaRef.Invoke(__instance);
				float[] array2 = ReflectionExtensions.LevelDeltaRef.Invoke(__instance);
				bool[] array3 = ReflectionExtensions.ModifiedHeightRef.Invoke(__instance);
				for (int i = num2 - num4; i <= num2 + num4; i++)
				{
					for (int j = num - num4; j <= num + num4; j++)
					{
						if ((square || !(Vector2.Distance(val3, new Vector2((float)j, (float)i)) > num3)) && j >= 0 && i >= 0 && j < num5 && i < num5)
						{
							float height = val.GetHeight(j, i);
							float num6 = val2.y - height;
							int num7 = i * num5 + j;
							if (array != null && num7 < array.Length)
							{
								num6 += array[num7];
								array[num7] = 0f;
							}
							if (array2 != null && num7 < array2.Length)
							{
								array2[num7] += num6;
								array2[num7] = Mathf.Clamp(array2[num7], -50f, 50f);
							}
							if (array3 != null && num7 < array3.Length)
							{
								array3[num7] = true;
							}
						}
					}
				}
				return false;
			}
			catch (Exception ex)
			{
				ArcadeHoePlugin.Log.LogError((object)("Error in custom TerrainComp.LevelTerrain: " + ex));
				return true;
			}
		}

		[HarmonyPatch(typeof(TerrainComp), "ApplyToHeightmap")]
		[HarmonyPrefix]
		private static bool TerrainComp_ApplyToHeightmap_Prefix(TerrainComp __instance, Texture2D clearedMask, List<float> heights, float[] baseHeights, float[] levelOnlyHeights, Heightmap hm)
		{
			//IL_0181: Unknown result type (might be due to invalid IL or missing references)
			if (!ReflectionExtensions.TCInitializedRef.Invoke(__instance))
			{
				return false;
			}
			int num = ReflectionExtensions.TCWidthRef.Invoke(__instance) + 1;
			float[] array = ReflectionExtensions.LevelDeltaRef.Invoke(__instance);
			float[] array2 = ReflectionExtensions.SmoothDeltaRef.Invoke(__instance);
			for (int i = 0; i < num; i++)
			{
				for (int j = 0; j < num; j++)
				{
					int num2 = i * num + j;
					float num3 = ((array != null && num2 < array.Length) ? array[num2] : 0f);
					float num4 = ((array2 != null && num2 < array2.Length) ? array2[num2] : 0f);
					if (num3 != 0f || num4 != 0f)
					{
						float num5 = baseHeights[num2];
						float num6 = num5 + num3 + num4;
						num6 = Mathf.Clamp(num6, num5 - 50f, num5 + 50f);
						heights[num2] = num6;
					}
				}
			}
			bool[] array3 = ReflectionExtensions.ModifiedPaintRef.Invoke(__instance);
			Color[] array4 = ReflectionExtensions.PaintMaskRef.Invoke(__instance);
			if ((Object)(object)clearedMask != (Object)null && array3 != null && array4 != null)
			{
				for (int k = 0; k < num; k++)
				{
					for (int l = 0; l < num; l++)
					{
						int num7 = k * num + l;
						if (num7 < array3.Length && array3[num7] && num7 < array4.Length)
						{
							clearedMask.SetPixel(l, k, array4[num7]);
						}
					}
				}
			}
			return false;
		}
	}
	public class ArcadeHoeUI : MonoBehaviour
	{
		private static Texture2D _panelTex;

		private static Font _valheimFont;

		private GUIStyle _boxStyle;

		private GUIStyle _titleStyle;

		private GUIStyle _statusLabelStyle;

		private GUIStyle _statusValStyle;

		private GUIStyle _tooltipHeaderStyle;

		private GUIStyle _tooltipItemStyle;

		private void OnGUI()
		{
			//IL_006a: Unknown result type (might be due to invalid IL or missing references)
			if (!ArcadeHoeController.IsHoldingArcadeHoe())
			{
				return;
			}
			Player localPlayer = Player.m_localPlayer;
			if (!((Object)(object)localPlayer == (Object)null))
			{
				EnsureResources();
				InitStyles();
				float num = 340f;
				float num2 = 215f;
				float num3 = (float)Screen.width - num - 20f;
				float num4 = (float)Screen.height - num2 - 120f;
				GUILayout.BeginArea(new Rect(num3, num4, num, num2), _boxStyle);
				GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
				GUILayout.FlexibleSpace();
				GUILayout.Label("◆ ARCADE RUNIC LEVELER ◆", _titleStyle, Array.Empty<GUILayoutOption>());
				GUILayout.FlexibleSpace();
				GUILayout.EndHorizontal();
				GUILayout.Space(4f);
				GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
				GUILayout.Label("Radius:", _statusLabelStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(75f) });
				GUILayout.Label($"<color=#00ffff><b>{ArcadeHoeController.CurrentRadius:F1}m</b></color>", _statusValStyle, Array.Empty<GUILayoutOption>());
				GUILayout.Label("<color=#e2b24b>[ - ] / [ + ]</color>", _statusLabelStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(80f) });
				GUILayout.EndHorizontal();
				GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
				GUILayout.Label("Elevation:", _statusLabelStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(75f) });
				if (ArcadeHoeController.IsHeightLocked)
				{
					GUILayout.Label($"<color=#57f287><b>LOCKED ({ArcadeHoeController.LockedHeight:F1}m)</b></color>", _statusValStyle, Array.Empty<GUILayoutOption>());
				}
				else
				{
					GUILayout.Label("<color=#aaaaaa>FOLLOW FEET</color>", _statusValStyle, Array.Empty<GUILayoutOption>());
				}
				GUILayout.Label("<color=#e2b24b>[ H ]</color>", _statusLabelStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(80f) });
				GUILayout.EndHorizontal();
				GUILayout.Space(6f);
				GUILayout.Label("<color=#e2b24b><b>Controls & Hotkeys:</b></color>", _tooltipHeaderStyle, Array.Empty<GUILayoutOption>());
				GUILayout.Label("• <color=#e2b24b>[ - ] / [ + ]</color> Change Radius (or Shift/Alt + Scroll)", _tooltipItemStyle, Array.Empty<GUILayoutOption>());
				GUILayout.Label("• <color=#e2b24b>[ H ]</color> Freeze Elevation (Height Lock)", _tooltipItemStyle, Array.Empty<GUILayoutOption>());
				GUILayout.Label("• <color=#e2b24b>[ J ]</color> Lock Elevation to Aim Point", _tooltipItemStyle, Array.Empty<GUILayoutOption>());
				GUILayout.Label("• <color=#e2b24b>[ L-Click ]</color> Deep True Flat Leveling", _tooltipItemStyle, Array.Empty<GUILayoutOption>());
				GUILayout.Label("• <color=#e2b24b>[ R-Click ]</color> Open Hoe Menu (Raise, Pave)", _tooltipItemStyle, Array.Empty<GUILayoutOption>());
				GUILayout.EndArea();
			}
		}

		private void EnsureResources()
		{
			//IL_001e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0028: Expected O, but got Unknown
			//IL_00b8: 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_00eb: Unknown result type (might be due to invalid IL or missing references)
			if ((Object)(object)_panelTex == (Object)null)
			{
				int num = 64;
				int num2 = 64;
				_panelTex = new Texture2D(num, num2, (TextureFormat)4, false);
				Color val = default(Color);
				((Color)(ref val))..ctor(0.85f, 0.68f, 0.32f, 1f);
				Color val2 = default(Color);
				((Color)(ref val2))..ctor(0.48f, 0.38f, 0.18f, 0.9f);
				Color val3 = default(Color);
				((Color)(ref val3))..ctor(0.08f, 0.1f, 0.12f, 0.93f);
				for (int i = 0; i < num2; i++)
				{
					for (int j = 0; j < num; j++)
					{
						if (j < 2 || j >= num - 2 || i < 2 || i >= num2 - 2)
						{
							_panelTex.SetPixel(j, i, val);
						}
						else if (j == 2 || j == num - 3 || i == 2 || i == num2 - 3)
						{
							_panelTex.SetPixel(j, i, val2);
						}
						else
						{
							_panelTex.SetPixel(j, i, val3);
						}
					}
				}
				_panelTex.Apply();
			}
			if (!((Object)(object)_valheimFont == (Object)null))
			{
				return;
			}
			Font[] array = Resources.FindObjectsOfTypeAll<Font>();
			if (array != null && array.Length != 0)
			{
				_valheimFont = ((IEnumerable<Font>)array).FirstOrDefault((Func<Font, bool>)((Font f) => (Object)(object)f != (Object)null && ((Object)f).name.IndexOf("Averia", StringComparison.OrdinalIgnoreCase) >= 0)) ?? ((IEnumerable<Font>)array).FirstOrDefault((Func<Font, bool>)((Font f) => (Object)(object)f != (Object)null && ((Object)f).name.IndexOf("Norse", StringComparison.OrdinalIgnoreCase) >= 0));
			}
		}

		private void InitStyles()
		{
			//IL_001d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0022: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0044: Expected O, but got Unknown
			//IL_004a: Expected O, but got Unknown
			//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_0066: 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_0077: Unknown result type (might be due to invalid IL or missing references)
			//IL_007f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0094: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a4: Expected O, but got Unknown
			//IL_00af: 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_00c0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f6: Expected O, but got Unknown
			//IL_0101: 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_0112: Unknown result type (might be due to invalid IL or missing references)
			//IL_011b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0123: 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_0139: Expected O, but got Unknown
			//IL_0144: Unknown result type (might be due to invalid IL or missing references)
			//IL_0149: Unknown result type (might be due to invalid IL or missing references)
			//IL_0155: Unknown result type (might be due to invalid IL or missing references)
			//IL_015e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0166: Unknown result type (might be due to invalid IL or missing references)
			//IL_017b: Unknown result type (might be due to invalid IL or missing references)
			//IL_018b: Expected O, but got Unknown
			//IL_0196: Unknown result type (might be due to invalid IL or missing references)
			//IL_019b: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b0: 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_01cd: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d8: Unknown result type (might be due to invalid IL or missing references)
			//IL_01dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e7: Expected O, but got Unknown
			//IL_01e8: 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_01f7: Expected O, but got Unknown
			//IL_01fd: Expected O, but got Unknown
			if (_boxStyle == null)
			{
				GUIStyle val = new GUIStyle(GUI.skin.box);
				val.normal.background = _panelTex;
				val.padding = new RectOffset(12, 12, 8, 8);
				_boxStyle = val;
				GUIStyle val2 = new GUIStyle(GUI.skin.label)
				{
					font = _valheimFont,
					fontStyle = (FontStyle)1,
					fontSize = 13,
					richText = true
				};
				val2.normal.textColor = new Color(0.96f, 0.78f, 0.35f);
				_titleStyle = val2;
				GUIStyle val3 = new GUIStyle(GUI.skin.label)
				{
					font = _valheimFont,
					fontSize = 11,
					richText = true
				};
				val3.normal.textColor = new Color(0.8f, 0.8f, 0.8f);
				_statusLabelStyle = val3;
				GUIStyle val4 = new GUIStyle(GUI.skin.label)
				{
					font = _valheimFont,
					fontSize = 11,
					richText = true
				};
				val4.normal.textColor = Color.white;
				_statusValStyle = val4;
				GUIStyle val5 = new GUIStyle(GUI.skin.label)
				{
					font = _valheimFont,
					fontSize = 10,
					richText = true
				};
				val5.normal.textColor = new Color(0.9f, 0.75f, 0.35f);
				_tooltipHeaderStyle = val5;
				GUIStyle val6 = new GUIStyle(GUI.skin.label)
				{
					font = _valheimFont,
					fontSize = 10,
					richText = true
				};
				val6.normal.textColor = new Color(0.85f, 0.85f, 0.85f);
				val6.margin = new RectOffset(0, 0, 1, 1);
				val6.padding = new RectOffset(0, 0, 0, 0);
				_tooltipItemStyle = val6;
			}
		}
	}
	internal static class ReflectionExtensions
	{
		public static readonly FieldRef<Humanoid, ItemData> RightItemRef = AccessTools.FieldRefAccess<Humanoid, ItemData>("m_rightItem");

		public static readonly FieldRef<Player, GameObject> PlacementGhostRef = AccessTools.FieldRefAccess<Player, GameObject>("m_placementGhost");

		public static readonly FieldRef<Player, GameObject> PlacementMarkerRef = AccessTools.FieldRefAccess<Player, GameObject>("m_placementMarkerInstance");

		public static readonly FieldRef<Player, PieceTable> BuildPiecesRef = AccessTools.FieldRefAccess<Player, PieceTable>("m_buildPieces");

		public static readonly FieldRef<ZNetScene, Dictionary<int, GameObject>> NamedPrefabsRef = AccessTools.FieldRefAccess<ZNetScene, Dictionary<int, GameObject>>("m_namedPrefabs");

		public static readonly FieldRef<ItemDrop, ZNetView> ItemDropNViewRef = AccessTools.FieldRefAccess<ItemDrop, ZNetView>("m_nview");

		public static readonly FieldRef<ItemStand, ZNetView> ItemStandNViewRef = AccessTools.FieldRefAccess<ItemStand, ZNetView>("m_nview");

		public static readonly FieldRef<TerrainComp, bool> TCInitializedRef = AccessTools.FieldRefAccess<TerrainComp, bool>("m_initialized");

		public static readonly FieldRef<TerrainComp, Heightmap> HMapRef = AccessTools.FieldRefAccess<TerrainComp, Heightmap>("m_hmap");

		public static readonly FieldRef<TerrainComp, int> TCWidthRef = AccessTools.FieldRefAccess<TerrainComp, int>("m_width");

		public static readonly FieldRef<TerrainComp, float[]> SmoothDeltaRef = AccessTools.FieldRefAccess<TerrainComp, float[]>("m_smoothDelta");

		public static readonly FieldRef<TerrainComp, float[]> LevelDeltaRef = AccessTools.FieldRefAccess<TerrainComp, float[]>("m_levelDelta");

		public static readonly FieldRef<TerrainComp, bool[]> ModifiedHeightRef = AccessTools.FieldRefAccess<TerrainComp, bool[]>("m_modifiedHeight");

		public static readonly FieldRef<TerrainComp, bool[]> ModifiedPaintRef = AccessTools.FieldRefAccess<TerrainComp, bool[]>("m_modifiedPaint");

		public static readonly FieldRef<TerrainComp, Color[]> PaintMaskRef = AccessTools.FieldRefAccess<TerrainComp, Color[]>("m_paintMask");
	}
}