using System;
using System.Diagnostics;
using System.IO;
using System.Linq;
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 LobbyCompatibility.Attributes;
using Microsoft.CodeAnalysis;
using UnityEngine;
using UnityEngine.SceneManagement;
[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: AssemblyCompany("LIDLCompany")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("LIDLCompany")]
[assembly: AssemblyTitle("LIDLCompany")]
[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.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)]
internal sealed class NullableAttribute : Attribute
{
public readonly byte[] NullableFlags;
public NullableAttribute(byte P_0)
{
NullableFlags = new byte[1] { P_0 };
}
public NullableAttribute(byte[] P_0)
{
NullableFlags = P_0;
}
}
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)]
internal sealed class NullableContextAttribute : Attribute
{
public readonly byte Flag;
public NullableContextAttribute(byte P_0)
{
Flag = P_0;
}
}
[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 LIDLCompany
{
[BepInPlugin("LIDL_Company", "LIDL_Company", "0.1.2")]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[LobbyCompatibility(/*Could not decode attribute arguments.*/)]
public class LIDLCompany : BaseUnityPlugin
{
public const bool InfiniteMoney = false;
private const string PluginGuid = "LIDL_Company";
private const string PluginName = "LIDL_Company";
private const string PluginVersion = "0.1.2";
public static LIDLCompany Instance { get; private set; }
internal static ManualLogSource Logger { get; private set; }
internal static Harmony? Harmony { get; set; }
private void Awake()
{
Logger = ((BaseUnityPlugin)this).Logger;
Instance = this;
Patch();
Logger.LogInfo((object)"LIDL_Company v0.1.2 has loaded!");
}
private static void Patch()
{
//IL_000d: Unknown result type (might be due to invalid IL or missing references)
//IL_0012: Unknown result type (might be due to invalid IL or missing references)
//IL_0018: Expected O, but got Unknown
if (Harmony == null)
{
Harmony = new Harmony("LIDL_Company");
}
Logger.LogDebug((object)"Patching...");
Harmony.PatchAll();
Logger.LogDebug((object)"Finished patching!");
}
internal static void Unpatch()
{
Logger.LogDebug((object)"Unpatching...");
Harmony? harmony = Harmony;
if (harmony != null)
{
harmony.UnpatchSelf();
}
Logger.LogDebug((object)"Finished unpatching!");
}
}
public static class MyPluginInfo
{
public const string PLUGIN_GUID = "LIDLCompany";
public const string PLUGIN_NAME = "LIDLCompany";
public const string PLUGIN_VERSION = "1.0.0";
}
}
namespace LIDLCompany.Patches
{
[HarmonyPatch(typeof(StartOfRound))]
public class StartOfRoundPatch
{
private static AssetBundle? _lidlBundle;
private static GameObject? _lidlObject;
[HarmonyPatch("SceneManager_OnLoadComplete1")]
[HarmonyPrefix]
private static void LoadLIDL(ulong clientId, string sceneName, LoadSceneMode loadSceneMode)
{
//IL_001c: Unknown result type (might be due to invalid IL or missing references)
//IL_0021: Unknown result type (might be due to invalid IL or missing references)
//IL_0101: 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)
if (!(sceneName != "CompanyBuilding"))
{
Scene sceneByName = SceneManager.GetSceneByName("CompanyBuilding");
GameObject[] rootGameObjects = ((Scene)(ref sceneByName)).GetRootGameObjects();
GameObject val = rootGameObjects.ToList().Find((GameObject x) => ((Object)x).name == "Environment");
GameObject gameObject = ((Component)val.transform.Find("Map")).gameObject;
GameObject gameObject2 = ((Component)val.transform.Find("LightsContainer")).gameObject;
GameObject gameObject3 = ((Component)val.transform.Find("Lighting")).gameObject;
gameObject.SetActive(false);
gameObject2.SetActive(false);
gameObject3.SetActive(false);
if ((Object)(object)_lidlBundle == (Object)null)
{
_lidlBundle = AssetBundle.LoadFromFile(Path.Combine(Path.GetDirectoryName(((BaseUnityPlugin)LIDLCompany.Instance).Info.Location), "lidlcompany.lidl"));
}
GameObject val2 = _lidlBundle.LoadAsset<GameObject>("LIDLCompanyPrefab");
_lidlObject = Object.Instantiate<GameObject>(val2, Vector3.zero, Quaternion.identity);
}
}
[HarmonyPatch("SceneManager_OnUnloadComplete")]
[HarmonyPrefix]
private static void UnloadLIDL(ulong clientId, string sceneName)
{
if (!(sceneName != "CompanyBuilding"))
{
Object.Destroy((Object)(object)_lidlObject);
}
}
}
[HarmonyPatch(typeof(Terminal))]
public class TerminalPatch
{
[HarmonyPatch("Update")]
[HarmonyPrefix]
private static void InfiniteMoney(ref int ___groupCredits)
{
bool flag = false;
}
}
}