using System; using System.CodeDom.Compiler; using System.ComponentModel; using System.Diagnostics; using System.Globalization; 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 BepInEx; using BepInEx.Logging; using HarmonyLib; using Microsoft.CodeAnalysis; using PluginConfig.API; using PluginConfig.API.Decorators; using PluginConfig.API.Fields; using TMPro; using UnityEngine; using UnityEngine.UI; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: AssemblyCompany("RocketRideHUD")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyDescription("My first plugin")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+9e7a7cdc880ef395cc02d795ba156393b2307297")] [assembly: AssemblyProduct("RocketRideHUD")] [assembly: AssemblyTitle("RocketRideHUD")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.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 RocketRideHUD { public class ConfigManager { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static PostEnumValueChangeEvent <>9__35_0; public static PostEnumValueChangeEvent <>9__35_1; public static PostEnumValueChangeEvent <>9__35_2; public static PostEnumValueChangeEvent <>9__35_3; public static PostBoolValueChangeEvent <>9__36_0; public static PostColorValueChangeEvent <>9__36_1; public static PostColorValueChangeEvent <>9__36_2; public static PostFloatValueChangeEvent <>9__36_3; public static PostColorValueChangeEvent <>9__36_4; public static PostColorValueChangeEvent <>9__36_5; public static PostFloatValueChangeEvent <>9__36_6; public static PostFloatValueChangeEvent <>9__36_7; public static PostFloatValueChangeEvent <>9__36_8; public static PostFloatValueChangeEvent <>9__36_9; public static PostColorValueChangeEvent <>9__36_10; public static PostColorValueChangeEvent <>9__36_11; internal void b__35_0(WeaponHudAnchor newValue) { if (!((Object)(object)RocketCrosshairController.Instance == (Object)null)) { RocketRideWeaponController.Instance.UpdateAlignment(newValue); WallJumpWeaponController.Instance.UpdateAlignment(weaponWallJumpAlignment.value); } } internal void b__35_1(RocketAlignment e) { if (!((Object)(object)RocketCrosshairController.Instance == (Object)null)) { RocketCrosshairController.Instance.UpdateRideIndicators(e); RocketCrosshairController.Instance.SetRocketIndicatorsActive(e != RocketAlignment.Hidden); } } internal void b__35_2(WeaponHudAnchor newValue) { if (!((Object)(object)WallJumpWeaponController.Instance == (Object)null)) { WallJumpWeaponController.Instance.UpdateAlignment(newValue); } } internal void b__35_3(CrosshairAlignment e) { if ((Object)(object)WallJumpCrosshairController.Instance != (Object)null) { WallJumpCrosshairController.Instance.SetIconsRotation(e); if ((Object)(object)MonoSingleton.Instance != (Object)null && MonoSingleton.Instance.latestMaxJuice > 0f) { WallJumpCrosshairController.Instance.OnPowerUpStarted(); } WallJumpCrosshairController.Instance.SetIconsActive(e != CrosshairAlignment.Hidden); } } internal void b__36_0(bool e) { if ((Object)(object)RocketRideWeaponController.Instance != (Object)null) { RocketRideWeaponController.Instance.UpdateColor(); } if ((Object)(object)WallJumpWeaponController.Instance != (Object)null) { WallJumpWeaponController.Instance.UpdateColor(); } } internal void b__36_1(Color e) { if ((Object)(object)RocketRideWeaponController.Instance != (Object)null) { RocketRideWeaponController.Instance.UpdateColor(); } if ((Object)(object)WallJumpWeaponController.Instance != (Object)null) { WallJumpWeaponController.Instance.UpdateColor(); } } internal void b__36_2(Color e) { if ((Object)(object)RocketCrosshairController.Instance != (Object)null) { RocketCrosshairController.Instance.SetRocketIndicatorsColor(); } } internal void b__36_3(float e) { if ((Object)(object)RocketCrosshairController.Instance != (Object)null) { RocketCrosshairController.Instance.SetRocketIndicatorsColor(); } } internal void b__36_4(Color e) { if ((Object)(object)RocketRideWeaponController.Instance != (Object)null) { RocketRideWeaponController.Instance.UpdateColor(); } } internal void b__36_5(Color e) { if ((Object)(object)RocketCrosshairController.Instance != (Object)null) { RocketCrosshairController.Instance.SetRocketIndicatorsColor(); } } internal void b__36_6(float e) { if ((Object)(object)RocketCrosshairController.Instance != (Object)null) { RocketCrosshairController.Instance.SetRocketIndicatorsThickness(e); } } internal void b__36_7(float e) { if ((Object)(object)RocketCrosshairController.Instance != (Object)null) { RocketCrosshairController.Instance.SetRocketOffset(e); } } internal void b__36_8(float e) { if ((Object)(object)RocketCrosshairController.Instance != (Object)null) { RocketCrosshairController.Instance.SetRocketIndicatorsDash(e); } } internal void b__36_9(float e) { if ((Object)(object)RocketCrosshairController.Instance != (Object)null) { RocketCrosshairController.Instance.SetRocketIndicatorsGap(e); } } internal void b__36_10(Color e) { if ((Object)(object)WallJumpWeaponController.Instance != (Object)null) { WallJumpWeaponController.Instance.UpdateColor(); } } internal void b__36_11(Color e) { if ((Object)(object)WallJumpCrosshairController.Instance != (Object)null) { WallJumpCrosshairController.Instance.UpdateColor(); } } } public static PluginConfigurator config = null; public static BoolField distinctDangerColor; public static ColorField dangerColor; public static EnumField weaponWallJumpAlignment; public static ColorField weaponWallJumpColor; public static EnumField crosshairWallJumpAlignment; public static ColorField crosshairWallJumpColor; public static EnumField weaponRocketAlignment; public static ColorField weaponRocketColor; public static ColorField crosshairRocketColor; public static ColorField usedColor; public static FloatField usedColorOpacity; public static BoolField crosshairRocketFuelShow; public static ColorField crosshairRocketFuelColor; public static FloatField crosshairRocketFuelOffset; public static FloatField crosshairRocketFuelWidth; public static FloatField crosshairRocketFuelOverstay; public static EnumField crosshairRocketAlignment; public static FloatField crosshairRocketOffset; public static FloatField crosshairRocketThickness; public static FloatField crosshairRocketDash; public static FloatField crosshairRocketGap; public static EnumField crosshairRocketPitchVisibility; public static FloatField crosshairRocketPitchMin; public static FloatField crosshairRocketPitchMax; public static FloatField crosshairRocketPitchSensitivity; public static ColorField crosshairRocketPitchColor; public static FloatField crosshairRocketPitchWidth; public static FloatField crosshairRocketPitchThickness; private static int h1 = 24; private static int h2 = 16; private static int subtitle = 12; private static int h1Gap = 20; private static int h2Gap = 12; private static ConfigHeader addGap(ConfigPanel panel, int size = 15) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Expected O, but got Unknown return new ConfigHeader(panel, "", size); } private static void addDisplayOptions() { //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_0122: Unknown result type (might be due to invalid IL or missing references) //IL_012c: Expected O, but got Unknown //IL_015a: Unknown result type (might be due to invalid IL or missing references) //IL_01ad: Unknown result type (might be due to invalid IL or missing references) addGap(config.rootPanel, h1Gap); new ConfigHeader(config.rootPanel, "-- DISPLAY --", h1); new ConfigHeader(config.rootPanel, "Weapon HUD indicators only available on standard style", subtitle); addGap(config.rootPanel, h2Gap); new ConfigHeader(config.rootPanel, "// Rocket rides", h2, (TextAlignmentOptions)513); weaponRocketAlignment = new EnumField(config.rootPanel, "Weapon HUD number", "weaponRocketAlignment", WeaponHudAnchor.ShowTopLeft); weaponRocketAlignment.postValueChangeEvent += delegate(WeaponHudAnchor newValue) { if (!((Object)(object)RocketCrosshairController.Instance == (Object)null)) { RocketRideWeaponController.Instance.UpdateAlignment(newValue); WallJumpWeaponController.Instance.UpdateAlignment(weaponWallJumpAlignment.value); } }; crosshairRocketAlignment = new EnumField(config.rootPanel, "Crosshair indicator", "crosshairRocketAlignment", RocketAlignment.Bottom); crosshairRocketAlignment.postValueChangeEvent += delegate(RocketAlignment e) { if (!((Object)(object)RocketCrosshairController.Instance == (Object)null)) { RocketCrosshairController.Instance.UpdateRideIndicators(e); RocketCrosshairController.Instance.SetRocketIndicatorsActive(e != RocketAlignment.Hidden); } }; crosshairRocketFuelShow = new BoolField(config.rootPanel, "Show fuel bar", "crosshairRocketFuelShow", true); addGap(config.rootPanel, h2Gap); new ConfigHeader(config.rootPanel, "// Freezeframe rocket ride angle hint", h2, (TextAlignmentOptions)513); crosshairRocketPitchVisibility = new EnumField(config.rootPanel, "Show when", "rocketPitchVisibility", PitchShowCondition.HoldingFreezeframe); addGap(config.rootPanel, h2Gap); new ConfigHeader(config.rootPanel, "// Wall jumps", h2, (TextAlignmentOptions)513); weaponWallJumpAlignment = new EnumField(config.rootPanel, "Weapon HUD number", "weaponWallJumpAlignment", WeaponHudAnchor.Hidden); weaponWallJumpAlignment.postValueChangeEvent += delegate(WeaponHudAnchor newValue) { if (!((Object)(object)WallJumpWeaponController.Instance == (Object)null)) { WallJumpWeaponController.Instance.UpdateAlignment(newValue); } }; crosshairWallJumpAlignment = new EnumField(config.rootPanel, "Crosshair indicator", "crosshairAlignment", CrosshairAlignment.Hidden); crosshairWallJumpAlignment.postValueChangeEvent += delegate(CrosshairAlignment e) { if ((Object)(object)WallJumpCrosshairController.Instance != (Object)null) { WallJumpCrosshairController.Instance.SetIconsRotation(e); if ((Object)(object)MonoSingleton.Instance != (Object)null && MonoSingleton.Instance.latestMaxJuice > 0f) { WallJumpCrosshairController.Instance.OnPowerUpStarted(); } WallJumpCrosshairController.Instance.SetIconsActive(e != CrosshairAlignment.Hidden); } }; } private static void addCustomizationOptions() { //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Expected O, but got Unknown //IL_00cb: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Expected O, but got Unknown //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Expected O, but got Unknown //IL_0126: Unknown result type (might be due to invalid IL or missing references) //IL_012b: Unknown result type (might be due to invalid IL or missing references) //IL_0135: Expected O, but got Unknown //IL_00f3: Unknown result type (might be due to invalid IL or missing references) //IL_00f8: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: Expected O, but got Unknown //IL_0177: Unknown result type (might be due to invalid IL or missing references) //IL_0181: Expected O, but got Unknown //IL_014e: Unknown result type (might be due to invalid IL or missing references) //IL_0153: Unknown result type (might be due to invalid IL or missing references) //IL_0159: Expected O, but got Unknown //IL_01d8: Unknown result type (might be due to invalid IL or missing references) //IL_0201: Unknown result type (might be due to invalid IL or missing references) //IL_0206: Unknown result type (might be due to invalid IL or missing references) //IL_0210: Expected O, but got Unknown //IL_019a: Unknown result type (might be due to invalid IL or missing references) //IL_019f: Unknown result type (might be due to invalid IL or missing references) //IL_01a5: Expected O, but got Unknown //IL_025c: Unknown result type (might be due to invalid IL or missing references) //IL_0261: Unknown result type (might be due to invalid IL or missing references) //IL_026b: Expected O, but got Unknown //IL_0229: Unknown result type (might be due to invalid IL or missing references) //IL_022e: Unknown result type (might be due to invalid IL or missing references) //IL_0234: Expected O, but got Unknown //IL_02ad: Unknown result type (might be due to invalid IL or missing references) //IL_02b7: Expected O, but got Unknown //IL_0284: Unknown result type (might be due to invalid IL or missing references) //IL_0289: Unknown result type (might be due to invalid IL or missing references) //IL_028f: Expected O, but got Unknown //IL_02f9: Unknown result type (might be due to invalid IL or missing references) //IL_0303: Expected O, but got Unknown //IL_02d0: Unknown result type (might be due to invalid IL or missing references) //IL_02d5: Unknown result type (might be due to invalid IL or missing references) //IL_02db: Expected O, but got Unknown //IL_0345: Unknown result type (might be due to invalid IL or missing references) //IL_034f: Expected O, but got Unknown //IL_031c: Unknown result type (might be due to invalid IL or missing references) //IL_0321: Unknown result type (might be due to invalid IL or missing references) //IL_0327: Expected O, but got Unknown //IL_0391: Unknown result type (might be due to invalid IL or missing references) //IL_039b: Expected O, but got Unknown //IL_0368: Unknown result type (might be due to invalid IL or missing references) //IL_036d: Unknown result type (might be due to invalid IL or missing references) //IL_0373: Expected O, but got Unknown //IL_03e7: Unknown result type (might be due to invalid IL or missing references) //IL_03ec: Unknown result type (might be due to invalid IL or missing references) //IL_03f6: Expected O, but got Unknown //IL_040f: Unknown result type (might be due to invalid IL or missing references) //IL_0419: Expected O, but got Unknown //IL_0432: Unknown result type (might be due to invalid IL or missing references) //IL_043c: Expected O, but got Unknown //IL_046a: Unknown result type (might be due to invalid IL or missing references) //IL_0493: Unknown result type (might be due to invalid IL or missing references) //IL_0498: Unknown result type (might be due to invalid IL or missing references) //IL_04a2: Expected O, but got Unknown //IL_04bb: Unknown result type (might be due to invalid IL or missing references) //IL_04c5: Expected O, but got Unknown //IL_04de: Unknown result type (might be due to invalid IL or missing references) //IL_04e8: Expected O, but got Unknown //IL_0516: Unknown result type (might be due to invalid IL or missing references) //IL_0530: Unknown result type (might be due to invalid IL or missing references) //IL_0535: Unknown result type (might be due to invalid IL or missing references) //IL_053f: Expected O, but got Unknown //IL_03b4: Unknown result type (might be due to invalid IL or missing references) //IL_03b9: Unknown result type (might be due to invalid IL or missing references) //IL_03bf: Expected O, but got Unknown //IL_057c: Unknown result type (might be due to invalid IL or missing references) //IL_0581: Unknown result type (might be due to invalid IL or missing references) //IL_058b: Expected O, but got Unknown //IL_0558: Unknown result type (might be due to invalid IL or missing references) //IL_055d: Unknown result type (might be due to invalid IL or missing references) //IL_0563: Expected O, but got Unknown //IL_05a4: Unknown result type (might be due to invalid IL or missing references) //IL_05a9: Unknown result type (might be due to invalid IL or missing references) //IL_05af: Expected O, but got Unknown addGap(config.rootPanel, h1Gap); new ConfigHeader(config.rootPanel, "-- CUSTOMIZATION --", 24); addGap(config.rootPanel, h2Gap); new ConfigHeader(config.rootPanel, "// General", h2, (TextAlignmentOptions)513); distinctDangerColor = new BoolField(config.rootPanel, "Danger color", "distinctDangerColor", true); BoolField obj = distinctDangerColor; object obj2 = <>c.<>9__36_0; if (obj2 == null) { PostBoolValueChangeEvent val = delegate { if ((Object)(object)RocketRideWeaponController.Instance != (Object)null) { RocketRideWeaponController.Instance.UpdateColor(); } if ((Object)(object)WallJumpWeaponController.Instance != (Object)null) { WallJumpWeaponController.Instance.UpdateColor(); } }; <>c.<>9__36_0 = val; obj2 = (object)val; } obj.postValueChangeEvent += (PostBoolValueChangeEvent)obj2; dangerColor = new ColorField(config.rootPanel, "Danger color", "dangerColor", new Color(1f, 0.17254902f, 0.17254902f)); ColorField obj3 = dangerColor; object obj4 = <>c.<>9__36_1; if (obj4 == null) { PostColorValueChangeEvent val2 = delegate { if ((Object)(object)RocketRideWeaponController.Instance != (Object)null) { RocketRideWeaponController.Instance.UpdateColor(); } if ((Object)(object)WallJumpWeaponController.Instance != (Object)null) { WallJumpWeaponController.Instance.UpdateColor(); } }; <>c.<>9__36_1 = val2; obj4 = (object)val2; } obj3.postValueChangeEvent += (PostColorValueChangeEvent)obj4; usedColor = new ColorField(config.rootPanel, "Used color", "usedColor", new Color(1f, 1f, 1f)); ColorField obj5 = usedColor; object obj6 = <>c.<>9__36_2; if (obj6 == null) { PostColorValueChangeEvent val3 = delegate { if ((Object)(object)RocketCrosshairController.Instance != (Object)null) { RocketCrosshairController.Instance.SetRocketIndicatorsColor(); } }; <>c.<>9__36_2 = val3; obj6 = (object)val3; } obj5.postValueChangeEvent += (PostColorValueChangeEvent)obj6; usedColorOpacity = new FloatField(config.rootPanel, "Used color opacity", "usedOpacity", 0.4f); FloatField obj7 = usedColorOpacity; object obj8 = <>c.<>9__36_3; if (obj8 == null) { PostFloatValueChangeEvent val4 = delegate { if ((Object)(object)RocketCrosshairController.Instance != (Object)null) { RocketCrosshairController.Instance.SetRocketIndicatorsColor(); } }; <>c.<>9__36_3 = val4; obj8 = (object)val4; } obj7.postValueChangeEvent += (PostFloatValueChangeEvent)obj8; addGap(config.rootPanel, h2Gap); new ConfigHeader(config.rootPanel, "// Rocket rides", h2, (TextAlignmentOptions)513); weaponRocketColor = new ColorField(config.rootPanel, "Weapon HUD indicator", "weaponRocketColor", new Color(1f, 0.5019608f, 0.22745098f)); ColorField obj9 = weaponRocketColor; object obj10 = <>c.<>9__36_4; if (obj10 == null) { PostColorValueChangeEvent val5 = delegate { if ((Object)(object)RocketRideWeaponController.Instance != (Object)null) { RocketRideWeaponController.Instance.UpdateColor(); } }; <>c.<>9__36_4 = val5; obj10 = (object)val5; } obj9.postValueChangeEvent += (PostColorValueChangeEvent)obj10; crosshairRocketColor = new ColorField(config.rootPanel, "Crosshair: rides", "crosshairRocketColor", new Color(1f, 0.5019608f, 0.22745098f)); ColorField obj11 = crosshairRocketColor; object obj12 = <>c.<>9__36_5; if (obj12 == null) { PostColorValueChangeEvent val6 = delegate { if ((Object)(object)RocketCrosshairController.Instance != (Object)null) { RocketCrosshairController.Instance.SetRocketIndicatorsColor(); } }; <>c.<>9__36_5 = val6; obj12 = (object)val6; } obj11.postValueChangeEvent += (PostColorValueChangeEvent)obj12; crosshairRocketThickness = new FloatField(config.rootPanel, "Line thickness", "crosshairRocketThickness", 4f); FloatField obj13 = crosshairRocketThickness; object obj14 = <>c.<>9__36_6; if (obj14 == null) { PostFloatValueChangeEvent val7 = delegate(float e) { if ((Object)(object)RocketCrosshairController.Instance != (Object)null) { RocketCrosshairController.Instance.SetRocketIndicatorsThickness(e); } }; <>c.<>9__36_6 = val7; obj14 = (object)val7; } obj13.postValueChangeEvent += (PostFloatValueChangeEvent)obj14; crosshairRocketOffset = new FloatField(config.rootPanel, "Crosshair: Rides offset", "crosshairRocketOffset", 40f); FloatField obj15 = crosshairRocketOffset; object obj16 = <>c.<>9__36_7; if (obj16 == null) { PostFloatValueChangeEvent val8 = delegate(float e) { if ((Object)(object)RocketCrosshairController.Instance != (Object)null) { RocketCrosshairController.Instance.SetRocketOffset(e); } }; <>c.<>9__36_7 = val8; obj16 = (object)val8; } obj15.postValueChangeEvent += (PostFloatValueChangeEvent)obj16; crosshairRocketDash = new FloatField(config.rootPanel, "Crosshair: Dash length", "crosshairRocketDash", 18f); FloatField obj17 = crosshairRocketDash; object obj18 = <>c.<>9__36_8; if (obj18 == null) { PostFloatValueChangeEvent val9 = delegate(float e) { if ((Object)(object)RocketCrosshairController.Instance != (Object)null) { RocketCrosshairController.Instance.SetRocketIndicatorsDash(e); } }; <>c.<>9__36_8 = val9; obj18 = (object)val9; } obj17.postValueChangeEvent += (PostFloatValueChangeEvent)obj18; crosshairRocketGap = new FloatField(config.rootPanel, "Crosshair: Gap length", "crosshairRocketGap", -3f); FloatField obj19 = crosshairRocketGap; object obj20 = <>c.<>9__36_9; if (obj20 == null) { PostFloatValueChangeEvent val10 = delegate(float e) { if ((Object)(object)RocketCrosshairController.Instance != (Object)null) { RocketCrosshairController.Instance.SetRocketIndicatorsGap(e); } }; <>c.<>9__36_9 = val10; obj20 = (object)val10; } obj19.postValueChangeEvent += (PostFloatValueChangeEvent)obj20; crosshairRocketFuelColor = new ColorField(config.rootPanel, "Fuel bar color", "crosshairRocketFuelColor", new Color(1f, 0.5019608f, 0.22745098f)); crosshairRocketFuelOffset = new FloatField(config.rootPanel, "Fuel bar offset", "crosshairRocketFuelOffset", 48f); crosshairRocketFuelWidth = new FloatField(config.rootPanel, "Fuel bar width", "crosshairRocketFuelWidth", 108f); addGap(config.rootPanel, h2Gap); new ConfigHeader(config.rootPanel, "// Freezeframe rocket ride angle hint", h2, (TextAlignmentOptions)513); crosshairRocketPitchColor = new ColorField(config.rootPanel, "Color", "rocketPitchColor", new Color(0.2509804f, 0.9098039f, 1f)); crosshairRocketPitchWidth = new FloatField(config.rootPanel, "Line length", "rocketPitchWidth", 150f); crosshairRocketPitchThickness = new FloatField(config.rootPanel, "Line thickness", "rocketPitchThickness", 2f); addGap(config.rootPanel, h2Gap); new ConfigHeader(config.rootPanel, "// Wall jumps", h2, (TextAlignmentOptions)513); weaponWallJumpColor = new ColorField(config.rootPanel, "Weapon HUD", "weaponColor", Color.white); ColorField obj21 = weaponWallJumpColor; object obj22 = <>c.<>9__36_10; if (obj22 == null) { PostColorValueChangeEvent val11 = delegate { if ((Object)(object)WallJumpWeaponController.Instance != (Object)null) { WallJumpWeaponController.Instance.UpdateColor(); } }; <>c.<>9__36_10 = val11; obj22 = (object)val11; } obj21.postValueChangeEvent += (PostColorValueChangeEvent)obj22; crosshairWallJumpColor = new ColorField(config.rootPanel, "Crosshair indicator", "crosshairColor", Color.white); ColorField obj23 = crosshairWallJumpColor; object obj24 = <>c.<>9__36_11; if (obj24 == null) { PostColorValueChangeEvent val12 = delegate { if ((Object)(object)WallJumpCrosshairController.Instance != (Object)null) { WallJumpCrosshairController.Instance.UpdateColor(); } }; <>c.<>9__36_11 = val12; obj24 = (object)val12; } obj23.postValueChangeEvent += (PostColorValueChangeEvent)obj24; } private static void addAdvancedOptions() { //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: Expected O, but got Unknown //IL_00d0: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: Unknown result type (might be due to invalid IL or missing references) //IL_00f9: Expected O, but got Unknown //IL_0112: Unknown result type (might be due to invalid IL or missing references) //IL_011c: Expected O, but got Unknown //IL_0135: Unknown result type (might be due to invalid IL or missing references) //IL_013f: Expected O, but got Unknown addGap(config.rootPanel, h1Gap); new ConfigHeader(config.rootPanel, "-- ADVANCED --", 24); new ConfigHeader(config.rootPanel, "Values are approximations based on the mod author's personal testing. Real-world effectiveness can vary depending on timing/reaction. For example, to do a Freezeframe ride, you might need to unfreeze later if you aim lower", subtitle, (TextAlignmentOptions)513); addGap(config.rootPanel, h2Gap); new ConfigHeader(config.rootPanel, "// Rocket rides", h2, (TextAlignmentOptions)513); crosshairRocketFuelOverstay = new FloatField(config.rootPanel, "Empty fuel downpull threshold", "crosshairRocketFuelOverstay", 0.1f); addGap(config.rootPanel, h2Gap); new ConfigHeader(config.rootPanel, "// Freezeframe rocket ride angle hint", h2, (TextAlignmentOptions)513); crosshairRocketPitchMin = new FloatField(config.rootPanel, "Minimum pitch (degrees)", "rocketPitchMin", 7f); crosshairRocketPitchMax = new FloatField(config.rootPanel, "Maximum pitch (degrees)", "rocketPitchMax", 35f); crosshairRocketPitchSensitivity = new FloatField(config.rootPanel, "Visual sensitivity (px/degree)", "rocketPitchSensitivity", 6f); } public static void Init() { if (config == null) { config = PluginConfigurator.Create("Rocket Ride HUD", "com.github.end-4.rocketRideHud"); string text = Path.Combine(Core.workingDir, "icon.png"); if (File.Exists(text)) { config.SetIconWithURL(text); } addDisplayOptions(); addCustomizationOptions(); addAdvancedOptions(); } } } [BepInPlugin("com.github.end-4.rocketRideHud", "RocketRideHUD", "1.0.3")] [BepInDependency(/*Could not decode attribute arguments.*/)] public class Core : BaseUnityPlugin { public const string PluginGUID = "com.github.end-4.rocketRideHud"; public const string PluginName = "RocketRideHUD"; public const string PluginVersion = "1.0.3"; public static string workingPath; public static string workingDir; public static ManualLogSource Logger = Logger.CreateLogSource("RocketRideHUD"); public static int MaxWalljumps => 3; public static int MaxRocketRides => 5; private void Awake() { //IL_0005: Unknown result type (might be due to invalid IL or missing references) new Harmony("RocketRideHUD").PatchAll(); workingPath = Assembly.GetExecutingAssembly().Location; workingDir = Path.GetDirectoryName(workingPath); ConfigManager.Init(); } } public enum Direction { Normal, Reverse } public enum CrosshairAlignment { Hidden, Top, Left, Right, Bottom } public enum RocketAlignment { Hidden, Top, Bottom } public enum PitchShowCondition { Never, Always, HoldingRocketLauncher, HoldingFreezeframe } public enum WeaponHudAnchor { Hidden, ShowInside, ShowTopLeft, ShowTopRight, ShowBottom, ShowLeft, ShowRight } public class NewMovementListener : MonoBehaviour { public delegate void OnWallJumpsChangedDelegate(int number); public delegate void OnRocketRideCountChangedDelegate(int count); public delegate void OnRocketFuelChangedDelegate(float fuelAmount); public delegate void OnRidingRocketChangedDelegate(bool isRiding); private NewMovement nm; private int previousWallJumps; private int previousRocketRideCount = Core.MaxRocketRides; private bool previousRidingRocket; public static NewMovementListener Instance { get; private set; } public static event OnWallJumpsChangedDelegate OnWallJumpsChanged; public static event OnRocketRideCountChangedDelegate OnRocketRideCountChanged; public static event OnRocketFuelChangedDelegate OnRocketFuelChanged; public static event OnRidingRocketChangedDelegate OnRidingRocketChanged; private void Awake() { if (!((Object)(object)Instance != (Object)null) || !((Object)(object)Instance != (Object)(object)this)) { Instance = this; nm = MonoSingleton.Instance; previousWallJumps = nm.currentWallJumps; previousRocketRideCount = nm.rocketRides; } } private void Update() { if ((Object)(object)nm == (Object)null) { return; } if (previousWallJumps != nm.currentWallJumps) { if (NewMovementListener.OnWallJumpsChanged != null) { NewMovementListener.OnWallJumpsChanged(Core.MaxWalljumps - nm.currentWallJumps); } previousWallJumps = nm.currentWallJumps; } int rocketRides = nm.rocketRides; if (rocketRides >= 0 && rocketRides != previousRocketRideCount) { if (NewMovementListener.OnRocketRideCountChanged != null) { NewMovementListener.OnRocketRideCountChanged(rocketRides); } previousRocketRideCount = rocketRides; } bool flag = (Object)(object)nm.ridingRocket != (Object)null; if (previousRidingRocket != flag) { NewMovementListener.OnRidingRocketChanged(flag); previousRidingRocket = flag; } if (flag) { float value = Traverse.Create((object)nm.ridingRocket).Field("downpull").Value; float fuelAmount = Mathf.InverseLerp(ConfigManager.crosshairRocketFuelOverstay.value, -0.5f, value); if (NewMovementListener.OnRocketFuelChanged != null) { NewMovementListener.OnRocketFuelChanged(fuelAmount); } } else if (NewMovementListener.OnRocketFuelChanged != null) { NewMovementListener.OnRocketFuelChanged(0f); } } } public class PowerUpMeterListener : MonoBehaviour { public delegate void OnPowerUpStartedDelegate(); public delegate void OnPowerUpEndedDelegate(); private float previous; public static PowerUpMeterListener Instance { get; private set; } public static event OnPowerUpStartedDelegate OnPowerUpStarted; public static event OnPowerUpEndedDelegate OnPowerUpEnded; private void Awake() { if (!((Object)(object)Instance != (Object)null) || !((Object)(object)Instance != (Object)(object)this)) { Instance = this; previous = 0f; } } private void Update() { if (previous == 0f && previous < MonoSingleton.Instance.latestMaxJuice) { if (PowerUpMeterListener.OnPowerUpStarted != null) { PowerUpMeterListener.OnPowerUpStarted(); } } else if (previous > 0f && MonoSingleton.Instance.latestMaxJuice == 0f && PowerUpMeterListener.OnPowerUpEnded != null) { PowerUpMeterListener.OnPowerUpEnded(); } previous = MonoSingleton.Instance.latestMaxJuice; } } public class RocketCrosshairController : MonoBehaviour { private Image[] segments; private Sprite segmentSprite; private int segmentCount = Core.MaxRocketRides; private float dashLength; private float gapLength; private float thickness; private int lastRidesSoFar; private bool lastRiding; private float lastFuel = 1f; private Image upperPitchLine; private Image lowerPitchLine; private Image fuelBar; private Image fuelBarBackground; public float time = 2f; public float maxTime = 2f; public float minTime; private float opacityMultiplier; private NewMovement nm; private float offset = ConfigManager.crosshairRocketOffset.value; public static RocketCrosshairController Instance { get; private set; } private void Awake() { if (!((Object)(object)Instance != (Object)null) || !((Object)(object)Instance != (Object)(object)this)) { Instance = this; } } private void Start() { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Expected O, but got Unknown //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Expected O, but got Unknown //IL_00ee: Unknown result type (might be due to invalid IL or missing references) //IL_0116: Unknown result type (might be due to invalid IL or missing references) //IL_0125: Unknown result type (might be due to invalid IL or missing references) //IL_0174: Unknown result type (might be due to invalid IL or missing references) //IL_0179: Unknown result type (might be due to invalid IL or missing references) //IL_0180: Unknown result type (might be due to invalid IL or missing references) //IL_01bc: Unknown result type (might be due to invalid IL or missing references) //IL_01d8: Unknown result type (might be due to invalid IL or missing references) //IL_01f5: Unknown result type (might be due to invalid IL or missing references) //IL_01fb: Unknown result type (might be due to invalid IL or missing references) //IL_020e: Unknown result type (might be due to invalid IL or missing references) //IL_0218: Unknown result type (might be due to invalid IL or missing references) GameObject val = new GameObject("RocketSegments"); val.layer = 5; val.transform.SetParent(((Component)this).transform); RectTransform obj = val.AddComponent(); obj.pivot = new Vector2(0.5f, 0.5f); Vector2 val2 = default(Vector2); ((Vector2)(ref val2))..ctor(0.5f, 0.5f); obj.anchorMax = val2; obj.anchorMin = val2; obj.anchoredPosition = Vector2.zero; val.transform.localScale = Vector3.one; if (ConfigManager.crosshairRocketDash != null) { dashLength = ConfigManager.crosshairRocketDash.value; } if (ConfigManager.crosshairRocketGap != null) { gapLength = ConfigManager.crosshairRocketGap.value; } if (ConfigManager.crosshairRocketThickness != null) { thickness = ConfigManager.crosshairRocketThickness.value; } if (ConfigManager.crosshairRocketOffset != null) { offset = ConfigManager.crosshairRocketOffset.value; } Texture2D val3 = new Texture2D(1, 1, (TextureFormat)5, false); ((Texture)val3).filterMode = (FilterMode)0; ((Texture)val3).wrapMode = (TextureWrapMode)1; val3.SetPixel(0, 0, Color.white); val3.Apply(false, false); segmentSprite = Sprite.Create(val3, new Rect(0f, 0f, 1f, 1f), new Vector2(0.5f, 0.5f), 100f); ((Texture)segmentSprite.texture).filterMode = (FilterMode)0; segments = (Image[])(object)new Image[segmentCount]; for (int i = 0; i < segmentCount; i++) { GameObject val4 = new GameObject($"Seg{i + 1}") { layer = 5 }; val4.transform.SetParent(val.transform); Image val5 = val4.AddComponent(); val5.sprite = segmentSprite; val5.type = (Type)0; val5.preserveAspect = false; ((Graphic)val5).color = ConfigManager.crosshairRocketColor.value; RectTransform rectTransform = ((Graphic)val5).rectTransform; rectTransform.pivot = new Vector2(0.5f, 0.5f); ((Vector2)(ref val2))..ctor(0.5f, 0.5f); rectTransform.anchorMax = val2; rectTransform.anchorMin = val2; rectTransform.sizeDelta = new Vector2(dashLength, thickness); rectTransform.anchoredPosition = Vector2.zero; segments[i] = val5; } upperPitchLine = CreatePitchLine(val.transform, "UpperPitch"); lowerPitchLine = CreatePitchLine(val.transform, "LowerPitch"); fuelBarBackground = CreatePitchLine(val.transform, "FuelBarBackground"); fuelBar = CreatePitchLine(val.transform, "FuelBar"); UpdateRideIndicators(ConfigManager.crosshairRocketAlignment.value); SetRocketIndicatorsColor(); SetRocketIndicatorsActive(ConfigManager.crosshairRocketAlignment.value != RocketAlignment.Hidden); nm = MonoSingleton.Instance; NewMovementListener.OnRocketRideCountChanged += UpdateRocketIndicators; NewMovementListener.OnRocketFuelChanged += UpdateFuelBar; NewMovementListener.OnRidingRocketChanged += UpdateFuelBar; } private Image CreatePitchLine(Transform parent, string name) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) GameObject val = new GameObject(name) { layer = 5 }; val.transform.SetParent(parent); Image obj = val.AddComponent(); obj.sprite = segmentSprite; RectTransform rectTransform = ((Graphic)obj).rectTransform; rectTransform.pivot = new Vector2(0.5f, 0.5f); Vector2 val2 = default(Vector2); ((Vector2)(ref val2))..ctor(0.5f, 0.5f); rectTransform.anchorMax = val2; rectTransform.anchorMin = val2; rectTransform.sizeDelta = Vector2.zero; return obj; } private void OnDestroy() { NewMovementListener.OnRocketRideCountChanged -= UpdateRocketIndicators; NewMovementListener.OnRocketFuelChanged -= UpdateFuelBar; } private void UpdateFreezeframeHint() { //IL_0127: Unknown result type (might be due to invalid IL or missing references) //IL_01d6: Unknown result type (might be due to invalid IL or missing references) //IL_01fa: Unknown result type (might be due to invalid IL or missing references) //IL_0215: Unknown result type (might be due to invalid IL or missing references) //IL_021a: Unknown result type (might be due to invalid IL or missing references) //IL_021b: Unknown result type (might be due to invalid IL or missing references) //IL_0222: Unknown result type (might be due to invalid IL or missing references) //IL_025a: Unknown result type (might be due to invalid IL or missing references) //IL_025c: Unknown result type (might be due to invalid IL or missing references) //IL_025d: Unknown result type (might be due to invalid IL or missing references) //IL_0264: Unknown result type (might be due to invalid IL or missing references) bool flag = false; switch (ConfigManager.crosshairRocketPitchVisibility.value) { case PitchShowCondition.Never: flag = false; break; case PitchShowCondition.Always: flag = true; break; case PitchShowCondition.HoldingRocketLauncher: if ((Object)(object)MonoSingleton.Instance != (Object)null && (Object)(object)MonoSingleton.Instance.currentWeapon != (Object)null) { flag = (Object)(object)MonoSingleton.Instance.currentWeapon.GetComponent() != (Object)null; } break; case PitchShowCondition.HoldingFreezeframe: if ((Object)(object)MonoSingleton.Instance != (Object)null && (Object)(object)MonoSingleton.Instance.currentWeapon != (Object)null) { RocketLauncher component = MonoSingleton.Instance.currentWeapon.GetComponent(); flag = (Object)(object)component != (Object)null && component.variation == 0; } break; } if ((Object)(object)nm == (Object)null || (Object)(object)upperPitchLine == (Object)null || !flag) { if ((Object)(object)upperPitchLine != (Object)null) { ((Component)upperPitchLine).gameObject.SetActive(false); } if ((Object)(object)lowerPitchLine != (Object)null) { ((Component)lowerPitchLine).gameObject.SetActive(false); } return; } float num = ((Component)nm.cc.cam).transform.localEulerAngles.x; if (num > 180f) { num -= 360f; } float value = ConfigManager.crosshairRocketPitchMin.value; float value2 = ConfigManager.crosshairRocketPitchMax.value; float num2 = ConfigManager.crosshairRocketPitchSensitivity.value * (180f / (float)Math.PI); float num3 = (num - value) * ((float)Math.PI / 180f); float num4 = (num - value2) * ((float)Math.PI / 180f); ((Component)upperPitchLine).gameObject.SetActive(Mathf.Abs(num3) < 1.5f); ((Component)lowerPitchLine).gameObject.SetActive(Mathf.Abs(num4) < 1.5f); ((Graphic)upperPitchLine).rectTransform.anchoredPosition = new Vector2(0f, Mathf.Tan(num3) * num2); ((Graphic)lowerPitchLine).rectTransform.anchoredPosition = new Vector2(0f, Mathf.Tan(num4) * num2); Image obj = upperPitchLine; Color color = (((Graphic)lowerPitchLine).color = ConfigManager.crosshairRocketPitchColor.value); ((Graphic)obj).color = color; Vector2 val = default(Vector2); ((Vector2)(ref val))..ctor(ConfigManager.crosshairRocketPitchWidth.value, ConfigManager.crosshairRocketPitchThickness.value); RectTransform rectTransform = ((Graphic)upperPitchLine).rectTransform; Vector2 sizeDelta = (((Graphic)lowerPitchLine).rectTransform.sizeDelta = val); rectTransform.sizeDelta = sizeDelta; } private void UpdateRidesVisibility() { if (lastRidesSoFar > 0) { SetRidesOpacity(1f); time = maxTime; return; } if (time > minTime) { time -= Time.deltaTime; } SetRidesOpacity(Mathf.Clamp01(time)); } private void Update() { UpdateFreezeframeHint(); UpdateRidesVisibility(); } private void SetRidesOpacity(float a) { opacityMultiplier = a; UpdateRocketIndicators(lastRidesSoFar); } public void UpdateFuelBar(float fuel) { lastFuel = fuel; UpdateFuelBar(fuel, lastRiding); } public void UpdateFuelBar(bool riding) { lastRiding = riding; UpdateFuelBar(lastFuel, riding); } public void UpdateFuelBar(float fuel, bool riding) { //IL_0114: Unknown result type (might be due to invalid IL or missing references) //IL_012e: Unknown result type (might be due to invalid IL or missing references) //IL_0149: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_00b6: Unknown result type (might be due to invalid IL or missing references) //IL_00cf: Unknown result type (might be due to invalid IL or missing references) //IL_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)fuelBar == (Object)null) { return; } bool flag = riding && ConfigManager.crosshairRocketFuelShow.value && ConfigManager.crosshairRocketAlignment.value != RocketAlignment.Hidden; ((Component)fuelBar).gameObject.SetActive(flag); if ((Object)(object)fuelBarBackground != (Object)null) { ((Component)fuelBarBackground).gameObject.SetActive(flag); } if (flag) { float value = ConfigManager.crosshairRocketFuelOffset.value; float num = ((ConfigManager.crosshairRocketAlignment.value == RocketAlignment.Bottom) ? (0f - value) : value); float num2 = Mathf.Round(thickness); float num3 = Mathf.Round(num); float value2 = ConfigManager.crosshairRocketFuelWidth.value; if ((Object)(object)fuelBarBackground != (Object)null) { Color value3 = ConfigManager.usedColor.value; value3.a = ConfigManager.usedColorOpacity.value; ((Graphic)fuelBarBackground).color = value3; ((Graphic)fuelBarBackground).rectTransform.sizeDelta = new Vector2(value2, num2); ((Graphic)fuelBarBackground).rectTransform.anchoredPosition = new Vector2(0f, num3); } ((Graphic)fuelBar).color = ConfigManager.crosshairRocketFuelColor.value; ((Graphic)fuelBar).rectTransform.sizeDelta = new Vector2(value2 * fuel, num2); ((Graphic)fuelBar).rectTransform.anchoredPosition = new Vector2(0f, num3); } } public void UpdateRocketIndicators(int ridesSoFar) { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0028: 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_0033: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Unknown result type (might be due to invalid IL or missing references) if (segments == null) { return; } lastRidesSoFar = ridesSoFar; int num = Mathf.Max(0, Core.MaxRocketRides - ridesSoFar); Color value = ConfigManager.crosshairRocketColor.value; Color value2 = ConfigManager.usedColor.value; value.a *= opacityMultiplier; value2.a = ConfigManager.usedColorOpacity.value * opacityMultiplier; for (int i = 0; i < segments.Length; i++) { if (!((Object)(object)segments[i] == (Object)null)) { bool flag = ConfigManager.crosshairRocketAlignment.value != RocketAlignment.Hidden; ((Component)segments[i]).gameObject.SetActive(flag); if (flag) { ((Graphic)segments[i]).color = ((i < num) ? value : value2); } } } } public void SetRocketIndicatorsActive(bool active) { if (segments == null) { return; } if (!active) { for (int i = 0; i < segments.Length; i++) { if ((Object)(object)segments[i] != (Object)null) { ((Component)segments[i]).gameObject.SetActive(false); } } } else { UpdateRocketIndicators(lastRidesSoFar); } } public void SetRocketIndicatorsColor() { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) if (segments == null) { return; } Color value = ConfigManager.crosshairRocketColor.value; for (int i = 0; i < segments.Length; i++) { if ((Object)(object)segments[i] != (Object)null) { ((Graphic)segments[i]).color = value; } } UpdateRocketIndicators(lastRidesSoFar); } public void SetRocketOffset(float value) { offset = value; UpdateRideIndicators(ConfigManager.crosshairRocketAlignment.value); } public void SetRocketIndicatorsThickness(float t) { //IL_003d: Unknown result type (might be due to invalid IL or missing references) thickness = t; if (segments == null) { return; } for (int i = 0; i < segments.Length; i++) { if ((Object)(object)segments[i] != (Object)null) { ((Graphic)segments[i]).rectTransform.sizeDelta = new Vector2(dashLength, thickness); } } UpdateRideIndicators(ConfigManager.crosshairRocketAlignment.value); } public void SetRocketIndicatorsDash(float d) { //IL_003d: Unknown result type (might be due to invalid IL or missing references) dashLength = d; if (segments == null) { return; } for (int i = 0; i < segments.Length; i++) { if ((Object)(object)segments[i] != (Object)null) { ((Graphic)segments[i]).rectTransform.sizeDelta = new Vector2(dashLength, thickness); } } UpdateRideIndicators(ConfigManager.crosshairRocketAlignment.value); } public void SetRocketIndicatorsGap(float g) { gapLength = g; UpdateRideIndicators(ConfigManager.crosshairRocketAlignment.value); } public void UpdateRideIndicators(RocketAlignment alignment) { //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: Unknown result type (might be due to invalid IL or missing references) //IL_00f7: Unknown result type (might be due to invalid IL or missing references) if (segments == null) { return; } float num = dashLength; float num2 = gapLength; float num3 = thickness; float num4 = (0f - ((float)segments.Length * num + (float)(segments.Length - 1) * num2)) / 2f; float num5 = 0f; num5 = alignment switch { RocketAlignment.Top => offset, RocketAlignment.Bottom => 0f - offset, _ => offset, }; for (int i = 0; i < segments.Length; i++) { if (!((Object)(object)segments[i] == (Object)null)) { RectTransform rectTransform = ((Graphic)segments[i]).rectTransform; ((Transform)rectTransform).localRotation = Quaternion.identity; float num6 = num4 + (float)i * (num + num2); float num7 = num6 + num; float num8 = Mathf.Round(num6); float num9 = Mathf.Round(num7); float num10 = Mathf.Max(1f, num9 - num8); float num11 = (num8 + num9) / 2f; rectTransform.anchoredPosition = new Vector2(num11, Mathf.Round(num5)); rectTransform.sizeDelta = new Vector2(num10, Mathf.Round(num3)); } } } } public class RocketRideWeaponController : MonoBehaviour { public GameObject panel; private Image bgImage; public Image icon; public TextMeshProUGUI text; private int rides = Core.MaxRocketRides; private bool speedometerShown; public static RocketRideWeaponController Instance { get; private set; } private void Start() { //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Expected O, but got Unknown //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_014f: Unknown result type (might be due to invalid IL or missing references) //IL_0154: Unknown result type (might be due to invalid IL or missing references) //IL_015f: Unknown result type (might be due to invalid IL or missing references) //IL_0167: Expected O, but got Unknown //IL_0192: Unknown result type (might be due to invalid IL or missing references) //IL_01a4: Unknown result type (might be due to invalid IL or missing references) //IL_01aa: Unknown result type (might be due to invalid IL or missing references) //IL_01c6: Unknown result type (might be due to invalid IL or missing references) //IL_0217: Unknown result type (might be due to invalid IL or missing references) //IL_0221: Unknown result type (might be due to invalid IL or missing references) //IL_0226: Unknown result type (might be due to invalid IL or missing references) //IL_0231: Unknown result type (might be due to invalid IL or missing references) //IL_0239: Expected O, but got Unknown //IL_0264: Unknown result type (might be due to invalid IL or missing references) //IL_0276: Unknown result type (might be due to invalid IL or missing references) //IL_027c: Unknown result type (might be due to invalid IL or missing references) //IL_0298: Unknown result type (might be due to invalid IL or missing references) //IL_02fb: Unknown result type (might be due to invalid IL or missing references) //IL_0106: Unknown result type (might be due to invalid IL or missing references) //IL_0128: Unknown result type (might be due to invalid IL or missing references) if (!((Object)(object)Instance != (Object)null) || !((Object)(object)Instance != (Object)(object)this)) { Instance = this; TMP_FontAsset font = ((TMP_Text)((Component)((Component)this).transform.parent.parent.parent).GetComponentInChildren()).font; panel = new GameObject("RocketRidePanel"); panel.layer = 5; RectTransform obj = panel.AddComponent(); panel.transform.SetParent(((Component)this).transform, false); UpdateAlignment(ConfigManager.weaponRocketAlignment.value); obj.sizeDelta = new Vector2(46f, 25f); bgImage = panel.AddComponent(); ((Behaviour)bgImage).enabled = ConfigManager.weaponRocketAlignment.value != WeaponHudAnchor.ShowInside; Image component = ((Component)((Component)this).transform.parent.parent).GetComponent(); if ((Object)(object)component != (Object)null) { bgImage.sprite = component.sprite; bgImage.type = component.type; bgImage.pixelsPerUnitMultiplier = component.pixelsPerUnitMultiplier; ((Graphic)bgImage).color = ((Graphic)component).color; ((Graphic)bgImage).material = ((Graphic)component).material; } panel.AddComponent(); GameObject val = new GameObject { name = "RocketRidesIcon", layer = 5 }; val.transform.SetParent(panel.transform); val.transform.localPosition = new Vector3(-9f, 0f, 0f); val.transform.localRotation = default(Quaternion); val.transform.localScale = new Vector3(0.16f, 0.16f, 0.16f); icon = val.AddComponent(); icon.sprite = SpriteLoader.LoadSpriteFromFile(Path.Combine(Core.workingDir, "assets/rocket_ride_weapon_hud.png"), 100f, null, (TextureFormat)5); ((Graphic)icon).color = ConfigManager.weaponRocketColor.value; GameObject val2 = new GameObject { name = "RocketRidesText", layer = 5 }; val2.transform.SetParent(panel.transform); val2.transform.localPosition = new Vector3(9f, 0f, 0f); val2.transform.localRotation = default(Quaternion); val2.transform.localScale = new Vector3(1f, 1f, 1f); text = val2.AddComponent(); ((TMP_Text)text).font = font; ((TMP_Text)text).fontSize = 18f; ((TMP_Text)text).alignment = (TextAlignmentOptions)514; ((TMP_Text)text).text = rides.ToString(); ((Graphic)text).color = ConfigManager.weaponRocketColor.value; SetStuffActive(ConfigManager.weaponRocketAlignment.value != WeaponHudAnchor.Hidden); NewMovementListener.OnRocketRideCountChanged += SetRides; SpeedometerListener.OnSpeedometerEnabled += OnSpeedometerEnabled; SpeedometerListener.OnSpeedometerDisabled += OnSpeedometerDisabled; } } private void OnDestroy() { NewMovementListener.OnRocketRideCountChanged -= SetRides; SpeedometerListener.OnSpeedometerEnabled -= OnSpeedometerEnabled; SpeedometerListener.OnSpeedometerDisabled -= OnSpeedometerDisabled; } public void SetRides(int ridesSoFar) { if (!((Object)(object)text == (Object)null)) { rides = Mathf.Max(0, Core.MaxRocketRides - ridesSoFar); if (rides < 0) { rides = 0; } ((TMP_Text)text).text = rides.ToString(); UpdateColor(); } } public void UpdateColor() { //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) if (!((Object)(object)icon == (Object)null) && !((Object)(object)text == (Object)null)) { Color value = ConfigManager.weaponRocketColor.value; bool flag = rides == 0 && ConfigManager.distinctDangerColor.value; ((Graphic)icon).color = value; ((Graphic)text).color = (flag ? ConfigManager.dangerColor.value : value); } } public void SetStuffActive(bool active) { if (!((Object)(object)panel == (Object)null)) { panel.SetActive(active); } } private void OnSpeedometerDisabled() { UpdateSpeedometerAdjustment(speedometerShown: false); } private void OnSpeedometerEnabled() { UpdateSpeedometerAdjustment(speedometerShown: true); } public void UpdateSpeedometerAdjustment(bool speedometerShown) { this.speedometerShown = speedometerShown; UpdateAlignment(); } public void UpdateAlignment() { UpdateAlignment(ConfigManager.weaponRocketAlignment.value); } public void UpdateAlignment(WeaponHudAnchor newValue) { //IL_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) if (newValue == WeaponHudAnchor.Hidden) { SetStuffActive(active: false); return; } RectTransform component = panel.GetComponent(); switch (newValue) { case WeaponHudAnchor.ShowTopLeft: component.anchoredPosition = new Vector2(-77f, (float)(speedometerShown ? 89 : 63)); break; case WeaponHudAnchor.ShowTopRight: component.anchoredPosition = new Vector2(124f, 63f); break; case WeaponHudAnchor.ShowLeft: component.anchoredPosition = new Vector2(-124f, 37f); break; case WeaponHudAnchor.ShowRight: component.anchoredPosition = new Vector2(171f, 38f); break; case WeaponHudAnchor.ShowBottom: component.anchoredPosition = new Vector2(-77f, -110f); break; case WeaponHudAnchor.ShowInside: component.anchoredPosition = new Vector2(-77f, 37f); break; } if (!((Object)(object)bgImage == (Object)null)) { ((Behaviour)bgImage).enabled = newValue != WeaponHudAnchor.ShowInside; SetStuffActive(active: true); } } } public class SpeedometerListener : MonoBehaviour { public delegate void OnSpeedometerEnabledDelegate(); public delegate void OnSpeedometerDisabledDelegate(); private bool? previous; public static SpeedometerListener Instance { get; private set; } public static event OnSpeedometerEnabledDelegate OnSpeedometerEnabled; public static event OnSpeedometerDisabledDelegate OnSpeedometerDisabled; private void Awake() { if (!((Object)(object)Instance != (Object)null) || !((Object)(object)Instance != (Object)(object)this)) { Instance = this; } } public void UpdateState(bool show) { if (previous != show) { previous = show; if (show) { SpeedometerListener.OnSpeedometerEnabled(); } else { SpeedometerListener.OnSpeedometerDisabled(); } } } } public static class SpriteLoader { public static Sprite LoadSpriteFromFile(string path, float pixelsPerUnit = 100f, Vector2? pivot = null, TextureFormat textureFormat = 5, bool mipmap = false) { //IL_001d: 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_0026: Expected O, but got Unknown //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Unknown result type (might be due to invalid IL or missing references) try { if (string.IsNullOrEmpty(path) || !File.Exists(path)) { return null; } byte[] array = File.ReadAllBytes(path); Texture2D val = new Texture2D(2, 2, textureFormat, mipmap); if (!ImageConversion.LoadImage(val, array)) { return null; } val.Apply(); Vector2 val2 = (Vector2)(((??)pivot) ?? new Vector2(0.5f, 0.5f)); return Sprite.Create(val, new Rect(0f, 0f, (float)((Texture)val).width, (float)((Texture)val).height), val2, pixelsPerUnit); } catch (Exception) { return null; } } } public class WallJumpCrosshairController : MonoBehaviour { public Image crosshair1; public Image crosshair2; public Image crosshair3; public float time = 2f; public float maxTime = 2f; public float minTime; public NewMovement nm; public Traverse nmT; public static WallJumpCrosshairController Instance { get; private set; } public Direction Direction { get { if (ConfigManager.crosshairWallJumpAlignment.value == CrosshairAlignment.Left || ConfigManager.crosshairWallJumpAlignment.value == CrosshairAlignment.Top) { return Direction.Reverse; } return Direction.Normal; } } private void Start() { //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Expected O, but got Unknown //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_008b: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Expected O, but got Unknown //IL_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00ea: Unknown result type (might be due to invalid IL or missing references) //IL_00f0: Expected O, but got Unknown //IL_0119: Unknown result type (might be due to invalid IL or missing references) //IL_0129: Unknown result type (might be due to invalid IL or missing references) //IL_013f: Unknown result type (might be due to invalid IL or missing references) //IL_0145: Expected O, but got Unknown //IL_016e: Unknown result type (might be due to invalid IL or missing references) //IL_017e: Unknown result type (might be due to invalid IL or missing references) if (!((Object)(object)Instance != (Object)null) || !((Object)(object)Instance != (Object)(object)this)) { Instance = this; nm = MonoSingleton.Instance; nmT = Traverse.Create((object)nm); GameObject val = new GameObject(); ((Object)val).name = "WallJumps"; val.layer = 5; val.transform.SetParent(((Component)this).transform); val.transform.localPosition = Vector3.zero; val.transform.localScale = new Vector3(0.5f, 0.5f, 0.5f); GameObject val2 = new GameObject(); ((Object)val2).name = "1"; val2.layer = 5; val2.transform.SetParent(val.transform); val2.transform.localPosition = Vector3.zero; val2.transform.localScale = Vector3.one; crosshair1 = val2.AddComponent(); GameObject val3 = new GameObject(); ((Object)val3).name = "2"; val3.layer = 5; val3.transform.SetParent(val.transform); val3.transform.localPosition = Vector3.zero; val3.transform.localScale = Vector3.one; crosshair2 = val3.AddComponent(); GameObject val4 = new GameObject(); ((Object)val4).name = "3"; val4.layer = 5; val4.transform.SetParent(val.transform); val4.transform.localPosition = Vector3.zero; val4.transform.localScale = Vector3.one; crosshair3 = val4.AddComponent(); crosshair1.sprite = SpriteLoader.LoadSpriteFromFile(Path.Combine(Core.workingDir, "assets/wall_jump_crosshair_1.png"), 100f, null, (TextureFormat)5); crosshair2.sprite = SpriteLoader.LoadSpriteFromFile(Path.Combine(Core.workingDir, "assets/wall_jump_crosshair_2.png"), 100f, null, (TextureFormat)5); crosshair3.sprite = SpriteLoader.LoadSpriteFromFile(Path.Combine(Core.workingDir, "assets/wall_jump_crosshair_3.png"), 100f, null, (TextureFormat)5); SetIconsRotation(ConfigManager.crosshairWallJumpAlignment.value); SetIconsActive(ConfigManager.crosshairWallJumpAlignment.value != CrosshairAlignment.Hidden); UpdateColor(); SetWallJumps(Core.MaxWalljumps); NewMovementListener.OnWallJumpsChanged += SetWallJumps; PowerUpMeterListener.OnPowerUpStarted += OnPowerUpStarted; PowerUpMeterListener.OnPowerUpEnded += OnPowerUpEnded; } } private void OnDestroy() { NewMovementListener.OnWallJumpsChanged -= SetWallJumps; PowerUpMeterListener.OnPowerUpStarted -= OnPowerUpStarted; PowerUpMeterListener.OnPowerUpEnded -= OnPowerUpEnded; } private void Update() { if (ConfigManager.crosshairWallJumpAlignment.value != 0) { if ((double)nmT.Field("fallTime").Value > 0.25) { time = maxTime; } else if (time > minTime) { time -= Time.deltaTime; } SetIconsOpacity(Mathf.Clamp01(time)); } } public void SetIconsActive(bool active) { if (!((Object)(object)crosshair1 == (Object)null) && !((Object)(object)crosshair2 == (Object)null) && !((Object)(object)crosshair3 == (Object)null)) { ((Component)crosshair1).gameObject.SetActive(active); ((Component)crosshair2).gameObject.SetActive(active); ((Component)crosshair3).gameObject.SetActive(active); } } public void UpdateColor() { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000a: 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_0039: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) Color value = ConfigManager.crosshairWallJumpColor.value; if ((Object)(object)crosshair1 != (Object)null) { ((Graphic)crosshair1).color = value; } if ((Object)(object)crosshair2 != (Object)null) { ((Graphic)crosshair2).color = value; } if ((Object)(object)crosshair3 != (Object)null) { ((Graphic)crosshair3).color = value; } } public void SetIconsRotation(CrosshairAlignment alignment) { //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) if (!((Object)(object)crosshair1 == (Object)null) && !((Object)(object)crosshair2 == (Object)null) && !((Object)(object)crosshair3 == (Object)null)) { ((Component)crosshair1).GetComponent().localRotation = default(Quaternion); ((Component)crosshair2).GetComponent().localRotation = default(Quaternion); ((Component)crosshair3).GetComponent().localRotation = default(Quaternion); switch (alignment) { case CrosshairAlignment.Left: ((Component)crosshair1).GetComponent().Rotate(0f, 0f, 270f, (Space)1); ((Component)crosshair2).GetComponent().Rotate(0f, 0f, 270f, (Space)1); ((Component)crosshair3).GetComponent().Rotate(0f, 0f, 270f, (Space)1); break; case CrosshairAlignment.Top: ((Component)crosshair1).GetComponent().Rotate(0f, 0f, 180f, (Space)1); ((Component)crosshair2).GetComponent().Rotate(0f, 0f, 180f, (Space)1); ((Component)crosshair3).GetComponent().Rotate(0f, 0f, 180f, (Space)1); break; case CrosshairAlignment.Right: ((Component)crosshair1).GetComponent().Rotate(0f, 0f, 90f, (Space)1); ((Component)crosshair2).GetComponent().Rotate(0f, 0f, 90f, (Space)1); ((Component)crosshair3).GetComponent().Rotate(0f, 0f, 90f, (Space)1); break; } } } public void OnPowerUpStarted() { //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_0104: Unknown result type (might be due to invalid IL or missing references) //IL_0125: Unknown result type (might be due to invalid IL or missing references) //IL_0143: Unknown result type (might be due to invalid IL or missing references) //IL_0161: Unknown result type (might be due to invalid IL or missing references) //IL_0181: Unknown result type (might be due to invalid IL or missing references) //IL_019d: Unknown result type (might be due to invalid IL or missing references) //IL_01bc: Unknown result type (might be due to invalid IL or missing references) //IL_01dd: Unknown result type (might be due to invalid IL or missing references) //IL_01fa: Unknown result type (might be due to invalid IL or missing references) SetWallJumps(nm.gc.onGround ? Core.MaxWalljumps : nm.currentWallJumps); if (!((Object)(object)crosshair1 == (Object)null) && !((Object)(object)crosshair2 == (Object)null) && !((Object)(object)crosshair3 == (Object)null) && MonoSingleton.Instance.GetBool("powerUpMeter", true)) { float num = 12f; float num2 = 6f; switch (ConfigManager.crosshairWallJumpAlignment.value) { case CrosshairAlignment.Top: ((Component)crosshair1).GetComponent().localPosition = new Vector3(num2, num, 0f); ((Component)crosshair2).GetComponent().localPosition = new Vector3(0f, num, 0f); ((Component)crosshair3).GetComponent().localPosition = new Vector3(0f - num2, num, 0f); break; case CrosshairAlignment.Left: ((Component)crosshair1).GetComponent().localPosition = new Vector3(0f - num, num2, 0f); ((Component)crosshair2).GetComponent().localPosition = new Vector3(0f - num, 0f, 0f); ((Component)crosshair3).GetComponent().localPosition = new Vector3(0f - num, 0f - num2, 0f); break; case CrosshairAlignment.Right: ((Component)crosshair1).GetComponent().localPosition = new Vector3(num, 0f - num2, 0f); ((Component)crosshair2).GetComponent().localPosition = new Vector3(num, 0f, 0f); ((Component)crosshair3).GetComponent().localPosition = new Vector3(num, num2, 0f); break; case CrosshairAlignment.Bottom: ((Component)crosshair1).GetComponent().localPosition = new Vector3(0f - num2, 0f - num, 0f); ((Component)crosshair2).GetComponent().localPosition = new Vector3(0f, 0f - num, 0f); ((Component)crosshair3).GetComponent().localPosition = new Vector3(num2, 0f - num, 0f); break; } } } public void OnPowerUpEnded() { //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Unknown result type (might be due to invalid IL or missing references) SetWallJumps(nm.gc.onGround ? Core.MaxWalljumps : nm.currentWallJumps); if (!((Object)(object)crosshair1 == (Object)null) && !((Object)(object)crosshair2 == (Object)null) && !((Object)(object)crosshair3 == (Object)null)) { ((Component)crosshair1).GetComponent().localPosition = Vector3.zero; ((Component)crosshair2).GetComponent().localPosition = Vector3.zero; ((Component)crosshair3).GetComponent().localPosition = Vector3.zero; } } public void SetIconsOpacity(float time) { //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) if (!((Object)(object)crosshair1 == (Object)null) && !((Object)(object)crosshair2 == (Object)null) && !((Object)(object)crosshair3 == (Object)null)) { Color value = ConfigManager.crosshairWallJumpColor.value; value.a = time; ((Graphic)crosshair1).color = value; ((Graphic)crosshair2).color = value; ((Graphic)crosshair3).color = value; } } public void SetWallJumps(int jumps) { if (jumps > Core.MaxWalljumps) { jumps = Core.MaxWalljumps; } if (jumps < 0) { jumps = 0; } bool active = ConfigManager.crosshairWallJumpAlignment.value != CrosshairAlignment.Hidden; switch (jumps) { case 3: ((Component)crosshair1).gameObject.SetActive(active); ((Component)crosshair2).gameObject.SetActive(active); ((Component)crosshair3).gameObject.SetActive(active); break; case 2: if (Direction == Direction.Reverse) { ((Component)crosshair1).gameObject.SetActive(false); ((Component)crosshair2).gameObject.SetActive(active); ((Component)crosshair3).gameObject.SetActive(active); } else { ((Component)crosshair1).gameObject.SetActive(active); ((Component)crosshair2).gameObject.SetActive(active); ((Component)crosshair3).gameObject.SetActive(false); } break; case 1: if (Direction == Direction.Reverse) { ((Component)crosshair1).gameObject.SetActive(false); ((Component)crosshair2).gameObject.SetActive(false); ((Component)crosshair3).gameObject.SetActive(active); } else { ((Component)crosshair1).gameObject.SetActive(active); ((Component)crosshair2).gameObject.SetActive(false); ((Component)crosshair3).gameObject.SetActive(false); } break; case 0: ((Component)crosshair1).gameObject.SetActive(false); ((Component)crosshair2).gameObject.SetActive(false); ((Component)crosshair3).gameObject.SetActive(false); break; } } } public class WallJumpWeaponController : MonoBehaviour { public GameObject panel; private Image bgImage; public Image icon; public TextMeshProUGUI text; private bool speedometerShown; public static WallJumpWeaponController Instance { get; private set; } private void Start() { //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Expected O, but got Unknown //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_014f: Unknown result type (might be due to invalid IL or missing references) //IL_0154: Unknown result type (might be due to invalid IL or missing references) //IL_015f: Unknown result type (might be due to invalid IL or missing references) //IL_0167: Expected O, but got Unknown //IL_0192: Unknown result type (might be due to invalid IL or missing references) //IL_01a4: Unknown result type (might be due to invalid IL or missing references) //IL_01aa: Unknown result type (might be due to invalid IL or missing references) //IL_01c6: Unknown result type (might be due to invalid IL or missing references) //IL_0217: Unknown result type (might be due to invalid IL or missing references) //IL_0221: Unknown result type (might be due to invalid IL or missing references) //IL_0226: Unknown result type (might be due to invalid IL or missing references) //IL_0231: Unknown result type (might be due to invalid IL or missing references) //IL_0239: Expected O, but got Unknown //IL_0264: Unknown result type (might be due to invalid IL or missing references) //IL_0276: Unknown result type (might be due to invalid IL or missing references) //IL_027c: Unknown result type (might be due to invalid IL or missing references) //IL_0298: Unknown result type (might be due to invalid IL or missing references) //IL_02fe: Unknown result type (might be due to invalid IL or missing references) //IL_0106: Unknown result type (might be due to invalid IL or missing references) //IL_0128: Unknown result type (might be due to invalid IL or missing references) if (!((Object)(object)Instance != (Object)null) || !((Object)(object)Instance != (Object)(object)this)) { Instance = this; TMP_FontAsset font = ((TMP_Text)((Component)((Component)this).transform.parent.parent.parent).GetComponentInChildren()).font; panel = new GameObject("WallJumpPanel"); panel.layer = 5; RectTransform obj = panel.AddComponent(); panel.transform.SetParent(((Component)this).transform, false); UpdateAlignment(ConfigManager.weaponWallJumpAlignment.value); obj.sizeDelta = new Vector2(46f, 25f); bgImage = panel.AddComponent(); ((Behaviour)bgImage).enabled = ConfigManager.weaponWallJumpAlignment.value != WeaponHudAnchor.ShowInside; Image component = ((Component)((Component)this).transform.parent.parent).GetComponent(); if ((Object)(object)component != (Object)null) { bgImage.sprite = component.sprite; bgImage.type = component.type; bgImage.pixelsPerUnitMultiplier = component.pixelsPerUnitMultiplier; ((Graphic)bgImage).color = ((Graphic)component).color; ((Graphic)bgImage).material = ((Graphic)component).material; } panel.AddComponent(); GameObject val = new GameObject { name = "WallJumpsIcon", layer = 5 }; val.transform.SetParent(panel.transform); val.transform.localPosition = new Vector3(-8f, -0.5f, 0f); val.transform.localRotation = default(Quaternion); val.transform.localScale = new Vector3(0.16f, 0.16f, 0.16f); icon = val.AddComponent(); icon.sprite = SpriteLoader.LoadSpriteFromFile(Path.Combine(Core.workingDir, "assets/wall_jump_weapon_hud.png"), 100f, null, (TextureFormat)5); ((Graphic)icon).color = ConfigManager.weaponWallJumpColor.value; GameObject val2 = new GameObject { name = "WallJumpsText", layer = 5 }; val2.transform.SetParent(panel.transform); val2.transform.localPosition = new Vector3(9f, 0f, 0f); val2.transform.localRotation = default(Quaternion); val2.transform.localScale = new Vector3(1f, 1f, 1f); text = val2.AddComponent(); ((TMP_Text)text).font = font; ((TMP_Text)text).fontSize = 18f; ((TMP_Text)text).alignment = (TextAlignmentOptions)514; ((TMP_Text)text).text = Core.MaxWalljumps.ToString(); ((Graphic)text).color = ConfigManager.weaponWallJumpColor.value; SetStuffActive(ConfigManager.weaponWallJumpAlignment.value != WeaponHudAnchor.Hidden); NewMovementListener.OnWallJumpsChanged += SetWallJumps; PowerUpMeterListener.OnPowerUpStarted += OnPowerUpChange; PowerUpMeterListener.OnPowerUpEnded += OnPowerUpChange; SpeedometerListener.OnSpeedometerEnabled += OnSpeedometerEnabled; SpeedometerListener.OnSpeedometerDisabled += OnSpeedometerDisabled; } } private void OnDestroy() { NewMovementListener.OnWallJumpsChanged -= SetWallJumps; PowerUpMeterListener.OnPowerUpStarted -= OnPowerUpChange; PowerUpMeterListener.OnPowerUpEnded -= OnPowerUpChange; SpeedometerListener.OnSpeedometerEnabled -= OnSpeedometerEnabled; SpeedometerListener.OnSpeedometerDisabled -= OnSpeedometerDisabled; } public void SetWallJumps(int number) { if (!((Object)(object)text == (Object)null)) { if (number > Core.MaxWalljumps) { number = Core.MaxWalljumps; } ((TMP_Text)text).text = number.ToString(); UpdateColor(); } } public void OnPowerUpChange() { SetWallJumps(MonoSingleton.Instance.gc.onGround ? Core.MaxWalljumps : MonoSingleton.Instance.currentWallJumps); } private void OnSpeedometerEnabled() { UpdateSpeedometerAdjustment(speedometerShown: true); } private void OnSpeedometerDisabled() { UpdateSpeedometerAdjustment(speedometerShown: false); } public void UpdateColor() { //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) if (!((Object)(object)icon == (Object)null) && !((Object)(object)text == (Object)null)) { Color value = ConfigManager.weaponWallJumpColor.value; bool flag = ((TMP_Text)text).text == "0" && ConfigManager.distinctDangerColor.value; ((Graphic)icon).color = value; ((Graphic)text).color = (flag ? ConfigManager.dangerColor.value : value); } } public void SetStuffActive(bool active) { if (!((Object)(object)panel == (Object)null)) { panel.SetActive(active); } } public void UpdateSpeedometerAdjustment(bool speedometerShown) { this.speedometerShown = speedometerShown; UpdateAlignment(); } public void UpdateAlignment() { UpdateAlignment(ConfigManager.weaponWallJumpAlignment.value); } public void UpdateAlignment(WeaponHudAnchor newValue) { //IL_00ee: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00bb: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) if (newValue == WeaponHudAnchor.Hidden) { SetStuffActive(active: false); return; } bool flag = newValue == ConfigManager.weaponRocketAlignment.value; RectTransform component = panel.GetComponent(); switch (newValue) { case WeaponHudAnchor.ShowTopLeft: component.anchoredPosition = new Vector2((float)(flag ? (-30) : (-77)), (float)(speedometerShown ? 89 : 63)); break; case WeaponHudAnchor.ShowTopRight: component.anchoredPosition = new Vector2(124f, (float)(flag ? 89 : 63)); break; case WeaponHudAnchor.ShowLeft: component.anchoredPosition = new Vector2(-124f, (float)(flag ? 11 : 37)); break; case WeaponHudAnchor.ShowRight: component.anchoredPosition = new Vector2(171f, (float)(flag ? 11 : 38)); break; case WeaponHudAnchor.ShowBottom: component.anchoredPosition = new Vector2((float)(flag ? (-30) : (-77)), -110f); break; case WeaponHudAnchor.ShowInside: component.anchoredPosition = new Vector2(77f, -38f); break; } if (!((Object)(object)bgImage == (Object)null)) { ((Behaviour)bgImage).enabled = newValue != WeaponHudAnchor.ShowInside; SetStuffActive(active: true); } } } public static class PluginInfo { public const string PLUGIN_GUID = "RocketRideHUD"; public const string PLUGIN_NAME = "RocketRideHUD"; public const string PLUGIN_VERSION = "1.0.0"; } } namespace RocketRideHUD.Properties { [GeneratedCode("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] [DebuggerNonUserCode] [CompilerGenerated] internal class Resources { private static ResourceManager resourceMan; private static CultureInfo resourceCulture; [EditorBrowsable(EditorBrowsableState.Advanced)] internal static ResourceManager ResourceManager { get { if (resourceMan == null) { resourceMan = new ResourceManager("RocketRideHUD.Properties.Resources", typeof(Resources).Assembly); } return resourceMan; } } [EditorBrowsable(EditorBrowsableState.Advanced)] internal static CultureInfo Culture { get { return resourceCulture; } set { resourceCulture = value; } } internal static byte[] trpg_walljumphud => (byte[])ResourceManager.GetObject("trpg_walljumphud", resourceCulture); internal Resources() { } } } namespace RocketRideHUD.Patches { [HarmonyPatch(typeof(NewMovement), "Start")] public class NewMovement_Start_Patch { public static void Postfix(NewMovement __instance) { ((Component)__instance).gameObject.AddComponent(); } } [HarmonyPatch(typeof(PlayerActivatorRelay), "Activate")] public class PlayerActivatorRelay_Activate_Patch { public static void Postfix() { GameObject crosshair = MonoSingleton.Instance.crosshair; if (crosshair != null) { GameObjectExtensions.GetOrAddComponent(crosshair); } GameObject crosshair2 = MonoSingleton.Instance.crosshair; if (crosshair2 != null) { GameObjectExtensions.GetOrAddComponent(crosshair2); } } } [HarmonyPatch(typeof(PowerUpMeter), "Start")] public class PowerUpMeter_Start_Patch { public static void Postfix(PowerUpMeter __instance) { ((Component)__instance).gameObject.AddComponent(); } } [HarmonyPatch(typeof(Speedometer), "OnEnable")] public class Speedometer_Awake_Patch { public static void Postfix(Speedometer __instance) { if (!((Object)(object)SpeedometerListener.Instance == (Object)null)) { SpeedometerListener.Instance.UpdateState(((Component)__instance).gameObject.activeSelf); } } } [HarmonyPatch(typeof(Speedometer), "OnPrefChanged")] public class Speedometer_OnPrefChanged_Patch { public static void Postfix(Speedometer __instance, string id) { if (!((Object)(object)SpeedometerListener.Instance == (Object)null) && id == "speedometer") { SpeedometerListener.Instance.UpdateState(((Component)__instance).gameObject.activeSelf); } } } [HarmonyPatch(typeof(WeaponHUD), "Awake")] public class WeaponHUD_Awake_Patch { public static void Postfix(WeaponHUD __instance) { ((Component)__instance).gameObject.AddComponent(); ((Component)__instance).gameObject.AddComponent(); ((Component)__instance).gameObject.AddComponent(); } } }