using System;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using ACompass.NetcodePatcher;
using BepInEx;
using BepInEx.Bootstrap;
using BepInEx.Configuration;
using BepInEx.Logging;
using Friskzips.patch;
using HarmonyLib;
using LethalConfig;
using LethalConfig.ConfigItems;
using LethalConfig.ConfigItems.Options;
using Microsoft.CodeAnalysis;
using UnityEngine;
using UnityEngine.UI;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: IgnoresAccessChecksTo("Assembly-CSharp")]
[assembly: IgnoresAccessChecksTo("UnityEngine.UI")]
[assembly: AssemblyCompany("ACompass")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.3.0")]
[assembly: AssemblyInformationalVersion("1.0.3-alpha.0.2+8b2da66df728d4504593eb40d1802a75a0321995")]
[assembly: AssemblyProduct("ACompass")]
[assembly: AssemblyTitle("ACompass")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
[module: NetcodePatchedAssembly]
internal class <Module>
{
static <Module>()
{
}
}
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 Friskzips
{
public class LethalConfigCompatibility
{
private static bool? _enabled;
public static bool enabled
{
get
{
if (!_enabled.HasValue)
{
_enabled = Chainloader.PluginInfos.ContainsKey("ainavt.lc.lethalconfig");
}
return _enabled.Value;
}
}
internal static void initLethalConfig()
{
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_000b: Unknown result type (might be due to invalid IL or missing references)
//IL_0018: Expected O, but got Unknown
//IL_001e: Unknown result type (might be due to invalid IL or missing references)
//IL_0023: Unknown result type (might be due to invalid IL or missing references)
//IL_0030: Expected O, but got Unknown
//IL_002b: Unknown result type (might be due to invalid IL or missing references)
//IL_0031: Expected O, but got Unknown
//IL_0036: 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_0048: Expected O, but got Unknown
//IL_0043: Unknown result type (might be due to invalid IL or missing references)
//IL_0049: Expected O, but got Unknown
EnumDropDownConfigItem<Plugin.configHudPosition> val = new EnumDropDownConfigItem<Plugin.configHudPosition>(Plugin.position, new EnumDropDownOptions
{
RequiresRestart = false
});
BoolCheckBoxConfigItem val2 = new BoolCheckBoxConfigItem(Plugin.oldTexture, new BoolCheckBoxOptions
{
RequiresRestart = false
});
BoolCheckBoxConfigItem val3 = new BoolCheckBoxConfigItem(Plugin.alignToShipRadar, new BoolCheckBoxOptions
{
RequiresRestart = false
});
LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val);
LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val2);
LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val3);
LethalConfigManager.SetModDescription("Original mod by alekso56");
LethalConfigManager.SkipAutoGen();
}
}
[BepInPlugin("Friskzips.ACompass", "ACompass revived", "1.1.1")]
[BepInDependency(/*Could not decode attribute arguments.*/)]
public class Plugin : BaseUnityPlugin
{
public enum configHudPosition
{
Bottom,
Top
}
private readonly Harmony _harmony = new Harmony("Friskzips.ACompass");
public static Plugin Instance { get; set; }
public static ConfigEntry<configHudPosition> position { get; private set; }
public static ConfigEntry<bool> oldTexture { get; private set; }
public static ConfigEntry<bool> alignToShipRadar { get; private set; }
public static ManualLogSource Log => ((BaseUnityPlugin)Instance).Logger;
public Plugin()
{
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_0010: Expected O, but got Unknown
Instance = this;
}
private void Awake()
{
//IL_005e: Unknown result type (might be due to invalid IL or missing references)
//IL_006f: Unknown result type (might be due to invalid IL or missing references)
//IL_0079: Expected O, but got Unknown
//IL_0079: Expected O, but got Unknown
//IL_008f: Unknown result type (might be due to invalid IL or missing references)
//IL_00a0: Unknown result type (might be due to invalid IL or missing references)
//IL_00aa: Expected O, but got Unknown
//IL_00aa: Expected O, but got Unknown
//IL_00c0: Unknown result type (might be due to invalid IL or missing references)
//IL_00d1: Unknown result type (might be due to invalid IL or missing references)
//IL_00db: Expected O, but got Unknown
//IL_00db: Expected O, but got Unknown
Log.LogInfo((object)"Applying patches...");
ApplyPluginPatch();
Log.LogInfo((object)"Patches applied!");
Log.LogInfo((object)"Loading assets...");
Friskzips.patch.ACompass.loadAssets();
Log.LogInfo((object)"Loading config...");
position = ((BaseUnityPlugin)this).Config.Bind<configHudPosition>(new ConfigDefinition("Hud", "Position"), configHudPosition.Bottom, new ConfigDescription("The compass position it can be Bottom or Top.\nDefault: Bottom", (AcceptableValueBase)null, Array.Empty<object>()));
oldTexture = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Hud", "Old texture"), false, new ConfigDescription("If you want the old texture of the original mod.\nDefault: False", (AcceptableValueBase)null, Array.Empty<object>()));
alignToShipRadar = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Hud", "Align to the ship monitor"), true, new ConfigDescription("If you want the compass to align to the ship monitor.\nDefault: True", (AcceptableValueBase)null, Array.Empty<object>()));
Log.LogInfo((object)"Config loaded!");
Log.LogDebug((object)"Looking for lethal config...");
if (LethalConfigCompatibility.enabled)
{
Log.LogInfo((object)"LethalConfig found!");
LethalConfigCompatibility.initLethalConfig();
}
Log.LogInfo((object)"ACompass revived loaded!");
Log.LogInfo((object)"Original mod by alekso56");
}
private void ApplyPluginPatch()
{
_harmony.PatchAll(typeof(Friskzips.patch.ACompass));
}
}
public static class PluginInfo
{
public const string PLUGIN_GUID = "Friskzips.ACompass";
public const string PLUGIN_NAME = "ACompass revived";
public const string PLUGIN_VERSION = "1.1.1";
}
}
namespace Friskzips.patch
{
internal class ACompass : MonoBehaviour
{
public class CompassUpdater : MonoBehaviour
{
public RawImage CompassImage;
public Transform toFollow;
private RawImage m_RawImage;
private readonly Texture m_TextureOld = (Texture)(object)CompassAssets.LoadAsset<Texture2D>("compass_shifted");
private readonly Texture m_Texture = (Texture)(object)CompassAssets.LoadAsset<Texture2D>("compass_shifted2");
public void setFollow(Transform user)
{
toFollow = user;
}
private void LateUpdate()
{
//IL_00d5: Unknown result type (might be due to invalid IL or missing references)
//IL_012c: Unknown result type (might be due to invalid IL or missing references)
//IL_0131: Unknown result type (might be due to invalid IL or missing references)
//IL_0150: Unknown result type (might be due to invalid IL or missing references)
//IL_0155: 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_0105: Unknown result type (might be due to invalid IL or missing references)
UpdateCompassHeading();
if (oldTexture != Plugin.oldTexture.Value || !firstTimeTexture)
{
oldTexture = Plugin.oldTexture.Value;
firstTimeTexture = true;
if (!Plugin.oldTexture.Value)
{
CompassImage.texture = m_Texture;
}
if (Plugin.oldTexture.Value)
{
CompassImage.texture = m_TextureOld;
}
}
if (position != (int)Plugin.position.Value)
{
position = (int)Plugin.position.Value;
if (position == 0)
{
((Component)this).transform.localPosition = new Vector3(0f, -224.4849f, 0f);
}
if (position == 1)
{
((Component)this).transform.localPosition = new Vector3(0f, 218.5156f, 0f);
}
Plugin.Log.LogDebug((object)("pos " + ((Component)this).transform.localPosition.x + ", " + ((Component)this).transform.localPosition.y + ", " + ((Component)this).transform.localPosition.z));
Plugin.Log.LogDebug((object)("pos enum " + position));
}
}
private void UpdateCompassHeading()
{
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_0011: Expected O, but got Unknown
//IL_0062: Unknown result type (might be due to invalid IL or missing references)
//IL_006d: Expected O, but got Unknown
//IL_0029: Unknown result type (might be due to invalid IL or missing references)
//IL_0034: Expected O, but got Unknown
//IL_0075: Unknown result type (might be due to invalid IL or missing references)
//IL_0080: Expected O, but got Unknown
//IL_00f6: Unknown result type (might be due to invalid IL or missing references)
//IL_00fb: Unknown result type (might be due to invalid IL or missing references)
//IL_0103: Unknown result type (might be due to invalid IL or missing references)
//IL_0108: Unknown result type (might be due to invalid IL or missing references)
//IL_010a: Unknown result type (might be due to invalid IL or missing references)
//IL_010c: Unknown result type (might be due to invalid IL or missing references)
//IL_010e: Unknown result type (might be due to invalid IL or missing references)
//IL_0112: 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)
//IL_012d: Unknown result type (might be due to invalid IL or missing references)
//IL_0135: Unknown result type (might be due to invalid IL or missing references)
//IL_0137: Unknown result type (might be due to invalid IL or missing references)
//IL_013c: 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_00a2: Unknown result type (might be due to invalid IL or missing references)
//IL_00a9: Unknown result type (might be due to invalid IL or missing references)
//IL_00ae: Unknown result type (might be due to invalid IL or missing references)
//IL_00b0: 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_00b3: Unknown result type (might be due to invalid IL or missing references)
//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
//IL_00d3: Unknown result type (might be due to invalid IL or missing references)
//IL_00d8: Unknown result type (might be due to invalid IL or missing references)
//IL_00e0: Unknown result type (might be due to invalid IL or missing references)
//IL_00e2: Unknown result type (might be due to invalid IL or missing references)
//IL_00e7: Unknown result type (might be due to invalid IL or missing references)
if ((Object)GameNetworkManager.Instance == (Object)null || (Object)(GameNetworkManager.Instance.localPlayerController?.turnCompassCamera) == (Object)null)
{
return;
}
toFollow = ((Component)GameNetworkManager.Instance.localPlayerController.turnCompassCamera).transform;
if (!((Object)CompassImage == (Object)null) && !((Object)toFollow == (Object)null))
{
Quaternion val;
if (Plugin.alignToShipRadar.Value)
{
Vector2 right = Vector2.right;
Quaternion rotation = toFollow.rotation;
val = rotation;
Vector2 val2 = right * ((((Quaternion)(ref val)).eulerAngles.y + 45f - 45f) / 360f);
CompassImage.uvRect = new Rect(val2, Vector2.one);
}
else
{
Vector2 right2 = Vector2.right;
Quaternion rotation2 = toFollow.rotation;
val = rotation2;
Vector2 val3 = right2 * ((((Quaternion)(ref val)).eulerAngles.y - 45f) / 360f);
CompassImage.uvRect = new Rect(val3, Vector2.one);
}
}
}
}
private static CompassUpdater updater;
public static AssetBundle CompassAssets;
public static bool loaded = false;
public static bool oldTexture = false;
public static bool firstTimeTexture = false;
public static int position = 69;
public static void loadAssets()
{
if (!loaded)
{
string directoryName = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
CompassAssets = AssetBundle.LoadFromFile(Path.Combine(directoryName, "compass"));
if ((Object)(object)CompassAssets == (Object)null)
{
Plugin.Log.LogError((object)"Failed to load AssetBundle!");
return;
}
Plugin.Log.LogInfo((object)"AsssetBundle loaded!");
loaded = true;
}
}
[HarmonyPatch(typeof(HUDManager), "Awake")]
[HarmonyPostfix]
public static void AddCompass(HUDManager __instance)
{
//IL_007a: 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_00c2: 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_00de: Unknown result type (might be due to invalid IL or missing references)
//IL_00ed: 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)
//IL_0111: Unknown result type (might be due to invalid IL or missing references)
//IL_011b: Unknown result type (might be due to invalid IL or missing references)
Transform transform = __instance.HUDContainer.transform;
Debug.Log((object)("Attaching compass to :" + (object)transform));
GameObject val = CompassAssets.LoadAsset<GameObject>("assets/compass/mask.prefab");
GameObject val2 = Object.Instantiate<GameObject>(val);
val2 = Object.Instantiate<GameObject>(val2, transform);
updater = val2.AddComponent<CompassUpdater>();
updater.CompassImage = ((Component)val2.transform.GetChild(0)).GetComponentInChildren<RawImage>();
Plugin.Log.LogDebug((object)val2.transform.position.y);
Transform val3 = val2.transform.Find("Compass");
Transform val4 = ((Component)val3).transform.Find("Indicator");
val4.position = new Vector3(val4.position.x, val4.position.y - 0.017f, val4.position.z);
val4.localScale = new Vector3(val4.localScale.x - 0.5f, val4.localScale.y - 0.7f, val4.localScale.z);
position = 69;
firstTimeTexture = false;
}
}
}
namespace System.Runtime.CompilerServices
{
[AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)]
internal sealed class IgnoresAccessChecksToAttribute : Attribute
{
public IgnoresAccessChecksToAttribute(string assemblyName)
{
}
}
}
namespace ACompass.NetcodePatcher
{
[AttributeUsage(AttributeTargets.Module)]
internal class NetcodePatchedAssemblyAttribute : Attribute
{
}
}