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 BepInEx; using BepInEx.Logging; using HarmonyLib; using Microsoft.CodeAnalysis; 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: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: AssemblyCompany("InstantScores")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyDescription("Trombone Champ instant scores")] [assembly: AssemblyFileVersion("1.0.10.0")] [assembly: AssemblyInformationalVersion("1.0.10+6c1c72039172dbf52068317f48fa562a5e86cf00")] [assembly: AssemblyProduct("InstantScores")] [assembly: AssemblyTitle("InstantScores")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.10.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.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 InstantScores { [BepInPlugin("InstantScores", "InstantScores", "1.0.10")] public class Plugin : BaseUnityPlugin { public static Plugin Instance; public static ManualLogSource Log; private void Awake() { //IL_0017: Unknown result type (might be due to invalid IL or missing references) Instance = this; Log = ((BaseUnityPlugin)this).Logger; new Harmony("InstantScores").PatchAll(); } } [HarmonyPatch(typeof(PointSceneController), "Start")] public class PointSceneControllerStartPatch : MonoBehaviour { [HarmonyPatch(typeof(PointSceneController), "doCoins")] public class PointSceneControllerDoCoinsPatch : MonoBehaviour { private static bool Prefix(PointSceneController __instance) { __instance.tootstext.text = "EARNED " + __instance.getTootsNum() + " TOOTS"; __instance.totaltootstext.text = GlobalVariables.localsave.currency_toots.ToString("n0"); return false; } } [HarmonyPatch(typeof(PointSceneController), "showContinue")] public class PointSceneControllerShowContinuePatch : MonoBehaviour { private static bool Prefix() { return false; } } public static Dictionary Scores = new Dictionary { { "F", 0 }, { "D", 1 }, { "C", 2 }, { "B", 3 }, { "A", 4 }, { "S", 5 } }; private static float trackdotspacing = 89.5f; private static float trackypos = 99f; private static float trackxpos = 179f; private static float trackdotsize = 20f; private static float trackbarheight = 6f; private static float trackfullwidth = trackdotspacing * 5f; private static float num = trackdotsize * 0.5f; private static bool Prefix(PointSceneController __instance) { SavedCardCollection localsave = GlobalVariables.localsave; localsave.tracks_played++; Plugin.Log.LogDebug((object)"Starting PointSceneController"); Object.Destroy((Object)(object)GameObject.Find("Canvas/Perfect")); Object.Destroy((Object)(object)GameObject.Find("Canvas/buttons/coingroup/practice_turbo_flag")); Object.Destroy((Object)(object)GameObject.Find("Canvas/FullPanel/LeftLabels/txt-highscore")); __instance.screenfade.SetActive(false); __instance.sfx = __instance.sfxholder.GetComponents(); __instance.totalscore = GlobalVariables.gameplay_scoretotal; __instance.scorepercentage = GlobalVariables.gameplay_scoreperc; __instance.letterscore = getLetterScore(__instance.scorepercentage); __instance.scoreindex = Scores[__instance.letterscore]; __instance.txt_trackname.text = GlobalVariables.chosen_track_data.trackname_long; __instance.txt_prevhigh.text = SaverLoader.grabHighestScore(GlobalVariables.chosen_track_data).ToString("n0"); __instance.txt_score.text = __instance.totalscore.ToString("n0"); __instance.giantscoretext.text = __instance.letterscore; __instance.giantscoretextshad.text = __instance.letterscore; __instance.txt_nasties.text = GlobalVariables.gameplay_notescores[0].ToString("n0"); __instance.txt_mehs.text = GlobalVariables.gameplay_notescores[1].ToString("n0"); __instance.txt_okays.text = GlobalVariables.gameplay_notescores[2].ToString("n0"); __instance.txt_nices.text = GlobalVariables.gameplay_notescores[3].ToString("n0"); __instance.txt_perfectos.text = GlobalVariables.gameplay_notescores[4].ToString("n0"); setTrackPositions(__instance); __instance.wallbreak.SetActive(__instance.scorepercentage > 1.35f); __instance.scorepopupcamera.SetActive(false); for (int i = 0; i < 4; i++) { __instance.track_arrows_objs[i].SetActive(false); ((Component)__instance.txt_scores_mp[i]).gameObject.SetActive(false); ((Component)__instance.txt_scorelabels_mp[i]).gameObject.SetActive(false); } if (__instance.scoreindex > 3) { __instance.confettic.setUpConfetti(); __instance.confettic.startConfetti(); } __instance.startAnims(); __instance.checkScoreCheevos(); __instance.updateSave(); __instance.doCoins(); return false; } private static void setTrackPositions(PointSceneController __instance) { //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_01c2: Unknown result type (might be due to invalid IL or missing references) //IL_020f: Unknown result type (might be due to invalid IL or missing references) //IL_0243: 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_010c: Unknown result type (might be due to invalid IL or missing references) //IL_0133: Unknown result type (might be due to invalid IL or missing references) //IL_0138: Unknown result type (might be due to invalid IL or missing references) __instance.track_barempty = getChild(__instance.trackobj.transform, 0); __instance.track_barfill = getChild(__instance.trackobj.transform, 1); __instance.track_arrow = getChild(__instance.trackobj.transform, 2); RectTransform[] array = (RectTransform[])(object)new RectTransform[6]; for (int i = 0; i < Scores.Count; i++) { RectTransform child = getChild(__instance.trackobj.transform, i + 3); child.anchoredPosition3D = new Vector3(trackxpos - num + trackdotspacing * (float)i, 0f - trackypos + num, 0f); __instance.track_dotimages[i] = getChild(__instance.trackobj.transform, i + 3); __instance.track_dottxts[i] = getChild(((Component)child).transform, 0); __instance.track_ps[i] = getChild(((Component)child).transform, 1); if (i <= __instance.scoreindex) { ((Graphic)__instance.track_dotimages[i]).color = Color32.op_Implicit(new Color32(byte.MaxValue, byte.MaxValue, (byte)0, byte.MaxValue)); ((Graphic)__instance.track_dottxts[i]).color = Color32.op_Implicit(new Color32(byte.MaxValue, byte.MaxValue, byte.MaxValue, byte.MaxValue)); } array[i] = child; } __instance.track_dot0 = array[0]; __instance.track_dot1 = array[1]; __instance.track_dot2 = array[2]; __instance.track_dot3 = array[3]; __instance.track_dot4 = array[4]; __instance.track_dot5 = array[5]; __instance.track_arrow.anchoredPosition3D = new Vector3(trackxpos - 1f + trackfullwidth * __instance.scorepercentage, 0f - trackypos, 0f); __instance.track_barfill.SetSizeWithCurrentAnchors((Axis)0, trackfullwidth * __instance.scorepercentage); __instance.track_barfill.anchoredPosition3D = new Vector3(trackxpos, (float)((double)(0f - trackypos) + (double)trackbarheight * 0.5), 0f); __instance.track_barempty.anchoredPosition3D = new Vector3(trackxpos, (float)((double)(0f - trackypos) + (double)trackbarheight * 0.5), 0f); __instance.track_barempty.SetSizeWithCurrentAnchors((Axis)0, trackfullwidth); } private static T getChild(Transform transform, int i) { return ((Component)transform.GetChild(i)).gameObject.GetComponent(); } private static string getLetterScore(float scorepercentage) { return (!(scorepercentage < 1f)) ? "S" : ((!(scorepercentage < 0.8f)) ? "A" : ((!(scorepercentage < 0.6f)) ? "B" : ((!(scorepercentage < 0.4f)) ? "C" : ((scorepercentage < 0.2f) ? "F" : "D")))); } } public static class PluginInfo { public const string PLUGIN_GUID = "InstantScores"; public const string PLUGIN_NAME = "InstantScores"; public const string PLUGIN_VERSION = "1.0.10"; } }