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 markers = new List(); 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 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.op_Implicit(array)); return val; } private void FindHudRoot() { Il2CppArrayBase val = Object.FindObjectsOfType(); 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 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(); 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(); 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(true)) { result = ((Component)item).GetComponent(); } 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 activeBeetles = GameState.ActiveBeetles; int num = 0; Enumerator 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; } } }