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<WeaponHudAnchor> <>9__35_0;
public static PostEnumValueChangeEvent<RocketAlignment> <>9__35_1;
public static PostEnumValueChangeEvent<WeaponHudAnchor> <>9__35_2;
public static PostEnumValueChangeEvent<CrosshairAlignment> <>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 <addDisplayOptions>b__35_0(WeaponHudAnchor newValue)
{
if (!((Object)(object)RocketCrosshairController.Instance == (Object)null))
{
RocketRideWeaponController.Instance.UpdateAlignment(newValue);
WallJumpWeaponController.Instance.UpdateAlignment(weaponWallJumpAlignment.value);
}
}
internal void <addDisplayOptions>b__35_1(RocketAlignment e)
{
if (!((Object)(object)RocketCrosshairController.Instance == (Object)null))
{
RocketCrosshairController.Instance.UpdateRideIndicators(e);
RocketCrosshairController.Instance.SetRocketIndicatorsActive(e != RocketAlignment.Hidden);
}
}
internal void <addDisplayOptions>b__35_2(WeaponHudAnchor newValue)
{
if (!((Object)(object)WallJumpWeaponController.Instance == (Object)null))
{
WallJumpWeaponController.Instance.UpdateAlignment(newValue);
}
}
internal void <addDisplayOptions>b__35_3(CrosshairAlignment e)
{
if ((Object)(object)WallJumpCrosshairController.Instance != (Object)null)
{
WallJumpCrosshairController.Instance.SetIconsRotation(e);
if ((Object)(object)MonoSingleton<PowerUpMeter>.Instance != (Object)null && MonoSingleton<PowerUpMeter>.Instance.latestMaxJuice > 0f)
{
WallJumpCrosshairController.Instance.OnPowerUpStarted();
}
WallJumpCrosshairController.Instance.SetIconsActive(e != CrosshairAlignment.Hidden);
}
}
internal void <addCustomizationOptions>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 <addCustomizationOptions>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 <addCustomizationOptions>b__36_2(Color e)
{
if ((Object)(object)RocketCrosshairController.Instance != (Object)null)
{
RocketCrosshairController.Instance.SetRocketIndicatorsColor();
}
}
internal void <addCustomizationOptions>b__36_3(float e)
{
if ((Object)(object)RocketCrosshairController.Instance != (Object)null)
{
RocketCrosshairController.Instance.SetRocketIndicatorsColor();
}
}
internal void <addCustomizationOptions>b__36_4(Color e)
{
if ((Object)(object)RocketRideWeaponController.Instance != (Object)null)
{
RocketRideWeaponController.Instance.UpdateColor();
}
}
internal void <addCustomizationOptions>b__36_5(Color e)
{
if ((Object)(object)RocketCrosshairController.Instance != (Object)null)
{
RocketCrosshairController.Instance.SetRocketIndicatorsColor();
}
}
internal void <addCustomizationOptions>b__36_6(float e)
{
if ((Object)(object)RocketCrosshairController.Instance != (Object)null)
{
RocketCrosshairController.Instance.SetRocketIndicatorsThickness(e);
}
}
internal void <addCustomizationOptions>b__36_7(float e)
{
if ((Object)(object)RocketCrosshairController.Instance != (Object)null)
{
RocketCrosshairController.Instance.SetRocketOffset(e);
}
}
internal void <addCustomizationOptions>b__36_8(float e)
{
if ((Object)(object)RocketCrosshairController.Instance != (Object)null)
{
RocketCrosshairController.Instance.SetRocketIndicatorsDash(e);
}
}
internal void <addCustomizationOptions>b__36_9(float e)
{
if ((Object)(object)RocketCrosshairController.Instance != (Object)null)
{
RocketCrosshairController.Instance.SetRocketIndicatorsGap(e);
}
}
internal void <addCustomizationOptions>b__36_10(Color e)
{
if ((Object)(object)WallJumpWeaponController.Instance != (Object)null)
{
WallJumpWeaponController.Instance.UpdateColor();
}
}
internal void <addCustomizationOptions>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<WeaponHudAnchor> weaponWallJumpAlignment;
public static ColorField weaponWallJumpColor;
public static EnumField<CrosshairAlignment> crosshairWallJumpAlignment;
public static ColorField crosshairWallJumpColor;
public static EnumField<WeaponHudAnchor> 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<RocketAlignment> crosshairRocketAlignment;
public static FloatField crosshairRocketOffset;
public static FloatField crosshairRocketThickness;
public static FloatField crosshairRocketDash;
public static FloatField crosshairRocketGap;
public static EnumField<PitchShowCondition> 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<WeaponHudAnchor>(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<RocketAlignment>(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<PitchShowCondition>(config.rootPanel, "Show when", "rocketPitchVisibility", PitchShowCondition.HoldingFreezeframe);
addGap(config.rootPanel, h2Gap);
new ConfigHeader(config.rootPanel, "// Wall jumps", h2, (TextAlignmentOptions)513);
weaponWallJumpAlignment = new EnumField<WeaponHudAnchor>(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<CrosshairAlignment>(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<PowerUpMeter>.Instance != (Object)null && MonoSingleton<PowerUpMeter>.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<NewMovement>.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<float>("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<PowerUpMeter>.Instance.latestMaxJuice)
{
if (PowerUpMeterListener.OnPowerUpStarted != null)
{
PowerUpMeterListener.OnPowerUpStarted();
}
}
else if (previous > 0f && MonoSingleton<PowerUpMeter>.Instance.latestMaxJuice == 0f && PowerUpMeterListener.OnPowerUpEnded != null)
{
PowerUpMeterListener.OnPowerUpEnded();
}
previous = MonoSingleton<PowerUpMeter>.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<RectTransform>();
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<Image>();
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<NewMovement>.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<Image>();
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<GunControl>.Instance != (Object)null && (Object)(object)MonoSingleton<GunControl>.Instance.currentWeapon != (Object)null)
{
flag = (Object)(object)MonoSingleton<GunControl>.Instance.currentWeapon.GetComponent<RocketLauncher>() != (Object)null;
}
break;
case PitchShowCondition.HoldingFreezeframe:
if ((Object)(object)MonoSingleton<GunControl>.Instance != (Object)null && (Object)(object)MonoSingleton<GunControl>.Instance.currentWeapon != (Object)null)
{
RocketLauncher component = MonoSingleton<GunControl>.Instance.currentWeapon.GetComponent<RocketLauncher>();
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<TextMeshProUGUI>()).font;
panel = new GameObject("RocketRidePanel");
panel.layer = 5;
RectTransform obj = panel.AddComponent<RectTransform>();
panel.transform.SetParent(((Component)this).transform, false);
UpdateAlignment(ConfigManager.weaponRocketAlignment.value);
obj.sizeDelta = new Vector2(46f, 25f);
bgImage = panel.AddComponent<Image>();
((Behaviour)bgImage).enabled = ConfigManager.weaponRocketAlignment.value != WeaponHudAnchor.ShowInside;
Image component = ((Component)((Component)this).transform.parent.parent).GetComponent<Image>();
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<HudOpenEffect>();
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<Image>();
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<TextMeshProUGUI>();
((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<RectTransform>();
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<NewMovement>.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<Image>();
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<Image>();
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<Image>();
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<float>("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<Transform>().localRotation = default(Quaternion);
((Component)crosshair2).GetComponent<Transform>().localRotation = default(Quaternion);
((Component)crosshair3).GetComponent<Transform>().localRotation = default(Quaternion);
switch (alignment)
{
case CrosshairAlignment.Left:
((Component)crosshair1).GetComponent<Transform>().Rotate(0f, 0f, 270f, (Space)1);
((Component)crosshair2).GetComponent<Transform>().Rotate(0f, 0f, 270f, (Space)1);
((Component)crosshair3).GetComponent<Transform>().Rotate(0f, 0f, 270f, (Space)1);
break;
case CrosshairAlignment.Top:
((Component)crosshair1).GetComponent<Transform>().Rotate(0f, 0f, 180f, (Space)1);
((Component)crosshair2).GetComponent<Transform>().Rotate(0f, 0f, 180f, (Space)1);
((Component)crosshair3).GetComponent<Transform>().Rotate(0f, 0f, 180f, (Space)1);
break;
case CrosshairAlignment.Right:
((Component)crosshair1).GetComponent<Transform>().Rotate(0f, 0f, 90f, (Space)1);
((Component)crosshair2).GetComponent<Transform>().Rotate(0f, 0f, 90f, (Space)1);
((Component)crosshair3).GetComponent<Transform>().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<PrefsManager>.Instance.GetBool("powerUpMeter", true))
{
float num = 12f;
float num2 = 6f;
switch (ConfigManager.crosshairWallJumpAlignment.value)
{
case CrosshairAlignment.Top:
((Component)crosshair1).GetComponent<Transform>().localPosition = new Vector3(num2, num, 0f);
((Component)crosshair2).GetComponent<Transform>().localPosition = new Vector3(0f, num, 0f);
((Component)crosshair3).GetComponent<Transform>().localPosition = new Vector3(0f - num2, num, 0f);
break;
case CrosshairAlignment.Left:
((Component)crosshair1).GetComponent<Transform>().localPosition = new Vector3(0f - num, num2, 0f);
((Component)crosshair2).GetComponent<Transform>().localPosition = new Vector3(0f - num, 0f, 0f);
((Component)crosshair3).GetComponent<Transform>().localPosition = new Vector3(0f - num, 0f - num2, 0f);
break;
case CrosshairAlignment.Right:
((Component)crosshair1).GetComponent<Transform>().localPosition = new Vector3(num, 0f - num2, 0f);
((Component)crosshair2).GetComponent<Transform>().localPosition = new Vector3(num, 0f, 0f);
((Component)crosshair3).GetComponent<Transform>().localPosition = new Vector3(num, num2, 0f);
break;
case CrosshairAlignment.Bottom:
((Component)crosshair1).GetComponent<Transform>().localPosition = new Vector3(0f - num2, 0f - num, 0f);
((Component)crosshair2).GetComponent<Transform>().localPosition = new Vector3(0f, 0f - num, 0f);
((Component)crosshair3).GetComponent<Transform>().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<Transform>().localPosition = Vector3.zero;
((Component)crosshair2).GetComponent<Transform>().localPosition = Vector3.zero;
((Component)crosshair3).GetComponent<Transform>().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<TextMeshProUGUI>()).font;
panel = new GameObject("WallJumpPanel");
panel.layer = 5;
RectTransform obj = panel.AddComponent<RectTransform>();
panel.transform.SetParent(((Component)this).transform, false);
UpdateAlignment(ConfigManager.weaponWallJumpAlignment.value);
obj.sizeDelta = new Vector2(46f, 25f);
bgImage = panel.AddComponent<Image>();
((Behaviour)bgImage).enabled = ConfigManager.weaponWallJumpAlignment.value != WeaponHudAnchor.ShowInside;
Image component = ((Component)((Component)this).transform.parent.parent).GetComponent<Image>();
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<HudOpenEffect>();
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<Image>();
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<TextMeshProUGUI>();
((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<NewMovement>.Instance.gc.onGround ? Core.MaxWalljumps : MonoSingleton<NewMovement>.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<RectTransform>();
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<NewMovementListener>();
}
}
[HarmonyPatch(typeof(PlayerActivatorRelay), "Activate")]
public class PlayerActivatorRelay_Activate_Patch
{
public static void Postfix()
{
GameObject crosshair = MonoSingleton<StatsManager>.Instance.crosshair;
if (crosshair != null)
{
GameObjectExtensions.GetOrAddComponent<WallJumpCrosshairController>(crosshair);
}
GameObject crosshair2 = MonoSingleton<StatsManager>.Instance.crosshair;
if (crosshair2 != null)
{
GameObjectExtensions.GetOrAddComponent<RocketCrosshairController>(crosshair2);
}
}
}
[HarmonyPatch(typeof(PowerUpMeter), "Start")]
public class PowerUpMeter_Start_Patch
{
public static void Postfix(PowerUpMeter __instance)
{
((Component)__instance).gameObject.AddComponent<PowerUpMeterListener>();
}
}
[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<SpeedometerListener>();
((Component)__instance).gameObject.AddComponent<WallJumpWeaponController>();
((Component)__instance).gameObject.AddComponent<RocketRideWeaponController>();
}
}
}