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 BepInEx;
using BepInEx.Logging;
using HarmonyLib;
using Microsoft.CodeAnalysis;
using RuntimeAssets;
using UnityEngine;
using VoidManager;
using VoidManager.MPModChecks;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]
[assembly: AssemblyCompany("ModdedAssetLoader")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("0.1.4.0")]
[assembly: AssemblyInformationalVersion("0.1.4+805a3972e1517ede736b1da3d9243a0b3ce558f7")]
[assembly: AssemblyProduct("ModdedAssetLoader")]
[assembly: AssemblyTitle("A basic mod containing asset bundles.")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("0.1.4.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 Void_Crew_Mod_Sample
{
public class ModdedAssetLoader
{
public static void TryLoadAssetBundlesNextToDll()
{
try
{
Assembly executingAssembly = Assembly.GetExecutingAssembly();
string text = ((!string.IsNullOrWhiteSpace(executingAssembly.Location)) ? executingAssembly.Location : new Uri(executingAssembly.CodeBase).LocalPath);
string directoryName = Path.GetDirectoryName(text);
if (string.IsNullOrWhiteSpace(directoryName) || !Directory.Exists(directoryName))
{
BepinPlugin.Log.LogError((object)("[ModAssetLoader] Could not resolve DLL directory (dllPath='" + text + "')"));
return;
}
BepinPlugin.Log.LogInfo((object)("[ModAssetLoader] Scanning for asset bundle manifests in: " + directoryName));
int num = 0;
foreach (string item in Directory.EnumerateFiles(directoryName, "*", SearchOption.TopDirectoryOnly))
{
string fileName = Path.GetFileName(item);
string extension = Path.GetExtension(item);
if ((!string.IsNullOrEmpty(extension) && !(extension == ".metem")) || !File.Exists(item))
{
continue;
}
try
{
AssetBundle val = AssetBundle.LoadFromFile(item);
if (Object.op_Implicit((Object)(object)val))
{
val.Unload(true);
RuntimeAssetsAPI.LoadAssetBundle(item);
num++;
BepinPlugin.Log.LogInfo((object)("[ModAssetLoader] Loaded asset bundle: " + fileName));
}
}
catch (Exception arg)
{
BepinPlugin.Log.LogError((object)$"[ModAssetLoader] Error while probing/loading '{fileName}': {arg}");
}
}
BepinPlugin.Log.LogInfo((object)$"[ModAssetLoader] Loaded {num} asset bundle(s) from manifest pairs.");
}
catch (Exception arg2)
{
BepinPlugin.Log.LogError((object)$"[ModAssetLoader] Failed loading asset bundles: {arg2}");
}
}
}
public class MyPluginInfo
{
public const string PLUGIN_GUID = "Hutlihut.ModdedAssetLoader";
public const string PLUGIN_NAME = "ModdedAssetLoader";
public const string USERS_PLUGIN_NAME = "ModdedAssetLoader";
public const string PLUGIN_VERSION = "0.1.4";
public const string PLUGIN_DESCRIPTION = "A basic mod containing asset bundles.";
public const string PLUGIN_ORIGINAL_AUTHOR = "Hutlihut";
public const string PLUGIN_AUTHORS = "Hutlihut";
public const string PLUGIN_THUNDERSTORE_ID = "";
}
[BepInPlugin("Hutlihut.ModdedAssetLoader", "ModdedAssetLoader", "0.1.4")]
[BepInProcess("Void Crew.exe")]
[BepInDependency(/*Could not decode attribute arguments.*/)]
public class BepinPlugin : BaseUnityPlugin
{
internal static ManualLogSource Log;
private void Awake()
{
Log = ((BaseUnityPlugin)this).Logger;
Harmony.CreateAndPatchAll(Assembly.GetExecutingAssembly(), (string)null);
ModdedAssetLoader.TryLoadAssetBundlesNextToDll();
((BaseUnityPlugin)this).Logger.LogInfo((object)"Plugin Hutlihut.ModdedAssetLoader is loaded!");
}
}
public class VoidManagerPlugin : VoidPlugin
{
public override MultiplayerType MPType => (MultiplayerType)30;
public override string Author => "Hutlihut";
public override string Description => "A basic mod containing asset bundles.";
public override string ThunderstoreID => "";
}
}