Decompiled source of StatusBar v1.0.0

Mods/StatusBar.dll

Decompiled 14 hours ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using HarmonyLib;
using Il2CppFemur;
using Il2CppInterop.Runtime.InteropTypes.Arrays;
using MelonLoader;
using Microsoft.CodeAnalysis;
using StatusBarMod;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: MelonInfo(typeof(StatusBar), "StatusBar", "1.0.0", "Zooks", null)]
[assembly: MelonGame(null, null)]
[assembly: TargetFramework(".NETCoreApp,Version=v6.0", FrameworkDisplayName = ".NET 6.0")]
[assembly: AssemblyCompany("StatusBar")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyDescription("mod for Gang Beasts")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("StatusBar")]
[assembly: AssemblyTitle("StatusBar")]
[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 StatusBarMod
{
	public class StatusBar : MelonMod
	{
		private readonly List<StatusHandeler> cachedHandlers = new List<StatusHandeler>();

		private float searchTimer;

		private const float SearchInterval = 3f;

		public override void OnSceneWasLoaded(int buildIndex, string sceneName)
		{
			cachedHandlers.Clear();
			FindAndCacheHandlers();
		}

		public override void OnUpdate()
		{
			searchTimer += Time.deltaTime;
			if (searchTimer >= 3f)
			{
				searchTimer = 0f;
				FindAndCacheHandlers();
			}
			for (int num = cachedHandlers.Count - 1; num >= 0; num--)
			{
				StatusHandeler val = cachedHandlers[num];
				if ((Object)(object)val == (Object)null)
				{
					cachedHandlers.RemoveAt(num);
				}
				else if (!((Behaviour)val).enabled)
				{
					((Behaviour)val).enabled = true;
				}
			}
		}

		private void FindAndCacheHandlers()
		{
			StatusHandeler[] array = Il2CppArrayBase<StatusHandeler>.op_Implicit(Object.FindObjectsOfType<StatusHandeler>(true));
			if (array == null)
			{
				return;
			}
			StatusHandeler[] array2 = array;
			foreach (StatusHandeler val in array2)
			{
				if ((Object)(object)val != (Object)null && !cachedHandlers.Contains(val))
				{
					cachedHandlers.Add(val);
				}
			}
		}
	}
	[HarmonyPatch(typeof(StatusHandeler), "Start")]
	public static class StatusHandelerStartPatch
	{
		[HarmonyPrefix]
		public static void Prefix(StatusHandeler __instance)
		{
			if (!((Object)(object)__instance == (Object)null))
			{
				((Behaviour)__instance).enabled = true;
				__instance.showStatusBar = true;
				__instance.displayTimer = 9999f;
			}
		}
	}
	[HarmonyPatch(typeof(StatusHandeler), "Update")]
	public static class StatusHandelerUpdatePatch
	{
		[HarmonyPostfix]
		public static void Postfix(StatusHandeler __instance)
		{
			if ((Object)(object)__instance == (Object)null)
			{
				return;
			}
			((Behaviour)__instance).enabled = true;
			__instance.showStatusBar = true;
			__instance.displayTimer = 9999f;
			Actor actor = __instance.actor;
			if ((Object)(object)actor != (Object)null)
			{
				if ((Object)(object)actor.TrackingCanvas != (Object)null && !actor.TrackingCanvas.activeSelf)
				{
					actor.TrackingCanvas.SetActive(true);
				}
				if ((Object)(object)actor.TrackerObject != (Object)null && !actor.TrackerObject.activeSelf)
				{
					actor.TrackerObject.SetActive(true);
				}
			}
			if ((Object)(object)__instance.statusBarTransform != (Object)null && !((Component)__instance.statusBarTransform).gameObject.activeSelf)
			{
				((Component)__instance.statusBarTransform).gameObject.SetActive(true);
			}
		}
	}
	[HarmonyPatch(typeof(StatusHandeler), "UpdateBars")]
	public static class StatusHandelerUpdateBarsPatch
	{
		[HarmonyPostfix]
		public static void Postfix(StatusHandeler __instance)
		{
			if (!((Object)(object)__instance == (Object)null) && (Object)(object)__instance.statusBarTransform != (Object)null && !((Component)__instance.statusBarTransform).gameObject.activeSelf)
			{
				((Component)__instance.statusBarTransform).gameObject.SetActive(true);
			}
		}
	}
}