using System; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using BTD_Mod_Helper; using BTD_Mod_Helper.Api; using BTD_Mod_Helper.Extensions; using BetterAutoStart; using HarmonyLib; using Il2CppAssets.Scripts.Unity; using Il2CppAssets.Scripts.Unity.Bridge; using Il2CppAssets.Scripts.Unity.UI_New.InGame; using Il2CppAssets.Scripts.Unity.UI_New.InGame.ActionMenu; using MelonLoader; using Microsoft.CodeAnalysis; using UnityEngine; using UnityEngine.EventSystems; 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(BetterAutoStartMod), "Better Auto Start", "1.1.3", "doombubbles", null)] [assembly: MelonGame("Ninja Kiwi", "BloonsTD6")] [assembly: MelonGame("Ninja Kiwi", "BloonsTD6-Epic")] [assembly: TargetFramework(".NETCoreApp,Version=v6.0", FrameworkDisplayName = ".NET 6.0")] [assembly: AssemblyCompany("BetterAutoStart")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+14b27cf124b18d72f773ca32accc6f4f7d10dae6")] [assembly: AssemblyProduct("BetterAutoStart")] [assembly: AssemblyTitle("BetterAutoStart")] [assembly: AssemblyVersion("1.0.0.0")] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] internal sealed class NullableAttribute : Attribute { public readonly byte[] NullableFlags; public NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [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 BetterAutoStart { public class BetterAutoStartMod : BloonsTD6Mod { } public class BetterAutoStartUtility { [HarmonyPatch(typeof(Button), "OnPointerClick")] internal class Button_OnPointerClick { [HarmonyPostfix] internal static void Postfix(Button __instance, PointerEventData eventData) { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Invalid comparison between Unknown and I4 if (!((Object)(object)InGame.instance == (Object)null) && (int)eventData.button == 1 && !(((Object)__instance).name != "FastFoward-Go")) { bool autoPlay = !InGame.instance.bridge.simulation.autoPlay; GameExt.GetPlayerProfile(Game.instance).inGameSettings.autoPlay = autoPlay; InGame.instance.bridge.SetAutoPlay(autoPlay); } } } [HarmonyPatch(typeof(GoFastForwardToggle), "OnEnable")] internal static class GoFastForwardToggle_OnEnable { [HarmonyPostfix] private static void Postfix(GoFastForwardToggle __instance) { bool flag = true; UpdateTextures(__instance, GameExt.GetPlayerProfile(Game.instance).inGameSettings.autoPlay); } } [HarmonyPatch(typeof(UnityToSimulation), "SetAutoPlay")] internal static class UnityToSimulation_ToggleAutoPlay { [HarmonyPostfix] private static void Postfix(bool on) { if ((Object)(object)ShopMenuExt.instance != (Object)null && (Object)(object)ShopMenuExt.instance.goFFToggle != (Object)null) { UpdateTextures(ShopMenuExt.instance.goFFToggle, on); } } } private const bool IsEnabled = true; private static Sprite GetSprite(string name) { return ModContent.GetSprite(name, 10f); } private static void UpdateTextures(GoFastForwardToggle toggle, bool enabled) { if (enabled) { ImageExt.SetSprite(toggle.goImage.GetComponent(), GetSprite("GoBtn")); ImageExt.SetSprite(toggle.fastForwardOffImage.GetComponent(), GetSprite("FastForwardBtn")); ImageExt.SetSprite(toggle.fastForwardOnImage.GetComponent(), GetSprite("FastForwardGlowBtn")); } else { ImageExt.SetSprite(toggle.goImage.GetComponent(), "IngameUi[GoBtn]"); ImageExt.SetSprite(toggle.fastForwardOffImage.GetComponent(), "IngameUi[FastForwardBtn]"); ImageExt.SetSprite(toggle.fastForwardOnImage.GetComponent(), "IngameUi[FastForwardGlowBtn]"); } } } public class ModHelperData { public const string WorksOnVersion = "52.2"; public const string Version = "1.1.3"; public const string Name = "Better Auto Start"; public const string Description = "Adds a visual indicator on the Play / Fast Forward button to show whether Auto Start is enabled or disabled. Additionally, right clicking on the button will toggle Auto Start.\n\nAny Bloons Monkey City fans out there?"; public const string RepoOwner = "doombubbles"; public const string PrevRepoName = "better-auto-start"; public const string RepoName = "BetterAutoStart"; } }