Decompiled source of Beetleyes v1.0.0

mods/Beetleyes.dll

Decompiled 5 days ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Resources;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using Beetle_Utils;
using Beetleyes;
using Il2Cpp;
using Il2CppInterop.Runtime.InteropTypes.Arrays;
using Il2CppSystem.Collections.Generic;
using MelonLoader;
using Microsoft.CodeAnalysis;
using Unity.Cinemachine;
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: MelonInfo(typeof(Core), "Beetleyes", "1.0.0", "pablops", null)]
[assembly: MelonGame("Bugfight Studio", "Beetleball")]
[assembly: MelonAdditionalDependencies(new string[] { "BeetleUtils" })]
[assembly: MelonAdditionalCredits("Spike")]
[assembly: TargetFramework(".NETCoreApp,Version=v6.0", FrameworkDisplayName = ".NET 6.0")]
[assembly: AssemblyCompany("Beetleyes")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("Beetleyes")]
[assembly: AssemblyTitle("Beetleyes")]
[assembly: NeutralResourcesLanguage("en-US")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.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 Beetleyes
{
	public class Core : MelonMod
	{
		public string assetFolder;

		private Camera gameCamera;

		private bool markersCreated = false;

		public bool onMainMenu = true;

		public Transform hudRoot;

		private Texture2D markerTexture;

		public RectTransform rt;

		public List<RawImage> markers = new List<RawImage>();

		public override void OnInitializeMelon()
		{
			string directoryName = Path.GetDirectoryName(((MelonBase)this).MelonAssembly.Assembly.Location);
			assetFolder = Path.Combine(directoryName, "assets");
			((MelonBase)this).LoggerInstance.Msg("BeetleEyes Initialized.");
		}

		public override void OnUpdate()
		{
			if ((Object)(object)gameCamera == (Object)null || !((Component)gameCamera).gameObject.activeInHierarchy)
			{
				gameCamera = getCamera();
			}
			if ((Object)(object)hudRoot == (Object)null || !((Component)hudRoot).gameObject.activeInHierarchy)
			{
				hudRoot = null;
				FindHudRoot();
			}
			if ((Object)(object)gameCamera == (Object)null && (Object)(object)hudRoot == (Object)null && !onMainMenu)
			{
				gameCamera = getCamera();
				return;
			}
			if (!onMainMenu)
			{
				HashSet<BeetleActor> activeBeetles = GameState.ActiveBeetles;
				if (!markersCreated || markers.Count != activeBeetles.Count)
				{
					DestroyAllMarkers();
					DrawEyesOnBeetles();
				}
				UpdateBeetleMarkers();
			}
			else if (markersCreated)
			{
				DestroyAllMarkers();
			}
			HandleInput();
		}

		private void HandleInput()
		{
			if (!Input.GetKeyDown((KeyCode)286))
			{
			}
		}

		public override void OnSceneWasLoaded(int buildIndex, string sceneName)
		{
			markersCreated = false;
			if (0 <= buildIndex && buildIndex <= 2)
			{
				onMainMenu = true;
			}
			else
			{
				onMainMenu = false;
			}
		}

		private Texture2D LoadTexture(string fileName)
		{
			//IL_0045: Unknown result type (might be due to invalid IL or missing references)
			//IL_004b: Expected O, but got Unknown
			string text = BeetleUtils.ModFolder();
			string text2 = Path.Combine(assetFolder, fileName);
			if (!File.Exists(text2))
			{
				MelonLogger.Error("Texture not found: " + text2);
				return null;
			}
			byte[] array = File.ReadAllBytes(text2);
			Texture2D val = new Texture2D(2, 2, (TextureFormat)4, false);
			ImageConversion.LoadImage(val, Il2CppStructArray<byte>.op_Implicit(array));
			return val;
		}

		private void FindHudRoot()
		{
			Il2CppArrayBase<Canvas> val = Object.FindObjectsOfType<Canvas>();
			foreach (Canvas item in val)
			{
				if (!(((Object)item).name == "Canvas") && !(((Object)item).name == "Canvas_CustomLobby"))
				{
					continue;
				}
				Transform val2 = ((Component)item).transform.Find("PlayerHUD");
				if ((Object)(object)val2 != (Object)null)
				{
					hudRoot = val2.Find("Root");
					if ((Object)(object)hudRoot != (Object)null)
					{
						break;
					}
				}
			}
		}

		public void DrawEyesOnBeetles()
		{
			//IL_004e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0054: Expected O, but got Unknown
			//IL_009b: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
			if ((Object)(object)markerTexture == (Object)null)
			{
				markerTexture = LoadTexture("point.png");
			}
			markers.Clear();
			Enumerator<BeetleActor> enumerator = GameState.ActiveBeetles.GetEnumerator();
			Vector2 val3 = default(Vector2);
			while (enumerator.MoveNext())
			{
				BeetleActor current = enumerator.Current;
				GameObject val = new GameObject("Marker");
				val.transform.SetParent(hudRoot, false);
				RawImage val2 = val.AddComponent<RawImage>();
				val2.texture = (Texture)(object)markerTexture;
				RectTransform rectTransform = ((Graphic)val2).rectTransform;
				((Vector2)(ref val3))..ctor(0.5f, 0.5f);
				rectTransform.anchorMax = val3;
				rectTransform.anchorMin = val3;
				rectTransform.pivot = new Vector2(0.5f, 0.5f);
				rectTransform.sizeDelta = new Vector2(100f, 100f);
				markers.Add(val2);
			}
			markersCreated = true;
		}

		public Vector2 ScreenToHud(Vector3 screenPos)
		{
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_000f: Unknown result type (might be due to invalid IL or missing references)
			//IL_001d: Unknown result type (might be due to invalid IL or missing references)
			//IL_001e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			RectTransform component = ((Component)hudRoot).GetComponent<RectTransform>();
			Vector2 result = default(Vector2);
			RectTransformUtility.ScreenPointToLocalPointInRectangle(component, Vector2.op_Implicit(screenPos), (Camera)null, ref result);
			return result;
		}

		public Camera getCamera()
		{
			Camera result = Camera.main;
			foreach (CinemachineBrain item in Object.FindObjectsOfType<CinemachineBrain>(true))
			{
				result = ((Component)item).GetComponent<Camera>();
			}
			return result;
		}

		public void UpdateBeetleMarkers()
		{
			//IL_00d6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00db: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e0: Unknown result type (might be due to invalid IL or missing references)
			//IL_0107: Unknown result type (might be due to invalid IL or missing references)
			//IL_0109: Unknown result type (might be due to invalid IL or missing references)
			//IL_0119: Unknown result type (might be due to invalid IL or missing references)
			//IL_0134: Unknown result type (might be due to invalid IL or missing references)
			//IL_013e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0145: Unknown result type (might be due to invalid IL or missing references)
			if (onMainMenu)
			{
				return;
			}
			HashSet<BeetleActor> activeBeetles = GameState.ActiveBeetles;
			int num = 0;
			Enumerator<BeetleActor> enumerator = GameState.ActiveBeetles.GetEnumerator();
			while (enumerator.MoveNext())
			{
				BeetleActor current = enumerator.Current;
				if (num >= markers.Count)
				{
					break;
				}
				if ((Object)(object)current == (Object)null)
				{
					((Behaviour)markers[num]).enabled = false;
					num++;
					continue;
				}
				if ((Object)(object)markers[num] == (Object)null)
				{
					num++;
					continue;
				}
				if (!IsBeetleVisible(current))
				{
					((Behaviour)markers[num]).enabled = false;
					num++;
					continue;
				}
				Vector3 val = gameCamera.WorldToScreenPoint(((Component)current).transform.position);
				((Behaviour)markers[num]).enabled = true;
				((Graphic)markers[num]).rectTransform.anchoredPosition = ScreenToHud(val);
				float num2 = 5f / val.z;
				((Graphic)markers[num]).rectTransform.sizeDelta = Vector2.one * 300f * num2;
				num++;
			}
		}

		public void DestroyAllMarkers()
		{
			foreach (RawImage marker in markers)
			{
				if ((Object)(object)marker != (Object)null)
				{
					Object.Destroy((Object)(object)((Component)marker).gameObject);
				}
			}
			markers.Clear();
			markersCreated = false;
		}

		public bool IsBeetleVisible(BeetleActor beetle)
		{
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_001e: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: 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_0025: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0031: Unknown result type (might be due to invalid IL or missing references)
			Vector3 position = ((Component)beetle).transform.position;
			Vector3 position2 = ((Component)gameCamera).transform.position;
			Vector3 val = position - position2;
			float magnitude = ((Vector3)(ref val)).magnitude;
			RaycastHit val2 = default(RaycastHit);
			if (Physics.Raycast(position2, ((Vector3)(ref val)).normalized, ref val2, magnitude) && !((RaycastHit)(ref val2)).transform.IsChildOf(((Component)beetle).transform))
			{
				return false;
			}
			return true;
		}
	}
}