using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using System.Threading.Tasks;
using BepInEx;
using BepInEx.Core.Logging.Interpolation;
using BepInEx.Logging;
using BepInEx.NET.Common;
using BepInExResoniteShim;
using Elements.Core;
using FrooxEngine;
using FrooxEngine.UIX;
using HarmonyLib;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(/*Could not decode attribute arguments.*/)]
[assembly: TargetFramework(".NETCoreApp,Version=v10.0", FrameworkDisplayName = ".NET 10.0")]
[assembly: AssemblyCompany("Gyztor Mizirath")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+d045b9bf884b108fcc818403d3d72dc7acb848a9")]
[assembly: AssemblyProduct("FixCopyComp")]
[assembly: AssemblyTitle("FixCopyComp")]
[assembly: AssemblyMetadata("RepositoryUrl", "https://github.com/Gyztor/FixCopyComponentDrives")]
[assembly: AssemblyVersion("1.0.0.0")]
[module: RefSafetyRules(11)]
namespace FixCopyComp;
[ResonitePlugin("xyz.gyztormizirath.FixCopyComp", "FixCopyComp", "1.0.0", "Gyztor Mizirath", "https://github.com/Gyztor/FixCopyComponentDrives")]
[BepInDependency(/*Could not decode attribute arguments.*/)]
public class FixCopyComponentDrives : BasePlugin
{
[HarmonyPatch(typeof(SlotComponentReceiver), "TryReceive")]
private static class DragAndDropCopiedComponentDrives
{
[CompilerGenerated]
private sealed class <>c__DisplayClass0_0
{
public SlotComponentReceiver __instance;
public InteractionData eventData;
public ButtonEventHandler <>9__3;
internal void <Prefix>b__3(IButton <p0>, ButtonEventData <p1>)
{
ContextMenuExtensions.CloseContextMenu(((Worker)__instance).LocalUser, (IWorldElement)(object)__instance);
}
}
[CompilerGenerated]
private sealed class <>c__DisplayClass0_1
{
[StructLayout((LayoutKind)3)]
private struct <<Prefix>b__0>d : IAsyncStateMachine
{
public int <>1__state;
public AsyncTaskMethodBuilder <>t__builder;
public <>c__DisplayClass0_1 <>4__this;
private TaskAwaiter<ContextMenu> <>u__1;
private void MoveNext()
{
//IL_0085: 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)
//IL_0092: 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_0049: 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_0055: 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_00bb: 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_00dd: 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_00fe: 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_006a: Unknown result type (might be due to invalid IL or missing references)
//IL_006c: Unknown result type (might be due to invalid IL or missing references)
//IL_0133: Unknown result type (might be due to invalid IL or missing references)
//IL_0138: Unknown result type (might be due to invalid IL or missing references)
//IL_013b: Expected O, but got Unknown
//IL_0140: Expected O, but got Unknown
//IL_015f: Unknown result type (might be due to invalid IL or missing references)
//IL_0164: Unknown result type (might be due to invalid IL or missing references)
//IL_0167: Expected O, but got Unknown
//IL_016c: Expected O, but got Unknown
//IL_0199: Unknown result type (might be due to invalid IL or missing references)
//IL_019e: Unknown result type (might be due to invalid IL or missing references)
//IL_01a1: Expected O, but got Unknown
//IL_01a6: Expected O, but got Unknown
int num = <>1__state;
<>c__DisplayClass0_1 CS$<>8__locals19 = <>4__this;
try
{
TaskAwaiter<ContextMenu> val;
if (num != 0)
{
val = ContextMenuExtensions.OpenContextMenu(((Worker)CS$<>8__locals19.CS$<>8__locals1.__instance).LocalUser, (IWorldElement)(object)CS$<>8__locals19.CS$<>8__locals1.__instance, ((Component)CS$<>8__locals19.CS$<>8__locals1.eventData.source).Slot, default(ContextMenuOptions)).GetAwaiter();
if (!val.IsCompleted)
{
num = (<>1__state = 0);
<>u__1 = val;
((AsyncTaskMethodBuilder)(ref <>t__builder)).AwaitUnsafeOnCompleted<TaskAwaiter<ContextMenu>, <<Prefix>b__0>d>(ref val, ref this);
return;
}
}
else
{
val = <>u__1;
<>u__1 = default(TaskAwaiter<ContextMenu>);
num = (<>1__state = -1);
}
ContextMenu result = val.GetResult();
LocaleString val2 = LocaleHelper.AsLocaleKey("Inspector.Actions.CopyComponent", (string)null, true, (Dictionary<string, object>)null);
colorX? val3 = Hero.GREEN;
ContextMenuItem val4 = result.AddItem(ref val2, (Uri)null, ref val3);
val2 = LocaleHelper.AsLocaleKey("Inspector.Actions.MoveComponent", (string)null, true, (Dictionary<string, object>)null);
val3 = Hero.PURPLE;
ContextMenuItem val5 = result.AddItem(ref val2, (Uri)null, ref val3);
val2 = LocaleHelper.AsLocaleKey("General.Cancel", (string)null, true, (Dictionary<string, object>)null);
val3 = colorX.White;
ContextMenuItem obj = result.AddItem(ref val2, (Uri)null, ref val3);
Button button = val4.Button;
ButtonEventHandler obj2 = CS$<>8__locals19.<>9__1;
if (obj2 == null)
{
ButtonEventHandler val6 = delegate
{
CS$<>8__locals19.CS$<>8__locals1.__instance.Target.Target.DuplicateComponent<Component>(CS$<>8__locals19.component, false);
ContextMenuExtensions.CloseContextMenu(((Worker)CS$<>8__locals19.CS$<>8__locals1.__instance).LocalUser, (IWorldElement)(object)CS$<>8__locals19.CS$<>8__locals1.__instance);
};
ButtonEventHandler val7 = val6;
CS$<>8__locals19.<>9__1 = val6;
obj2 = val7;
}
button.LocalPressed += obj2;
Button button2 = val5.Button;
ButtonEventHandler obj3 = CS$<>8__locals19.<>9__2;
if (obj3 == null)
{
ButtonEventHandler val8 = delegate
{
((ContainerWorker<Component>)(object)CS$<>8__locals19.CS$<>8__locals1.__instance.Target.Target).MoveComponent(CS$<>8__locals19.component);
ContextMenuExtensions.CloseContextMenu(((Worker)CS$<>8__locals19.CS$<>8__locals1.__instance).LocalUser, (IWorldElement)(object)CS$<>8__locals19.CS$<>8__locals1.__instance);
};
ButtonEventHandler val7 = val8;
CS$<>8__locals19.<>9__2 = val8;
obj3 = val7;
}
button2.LocalPressed += obj3;
Button button3 = obj.Button;
ButtonEventHandler obj4 = CS$<>8__locals19.CS$<>8__locals1.<>9__3;
if (obj4 == null)
{
<>c__DisplayClass0_0 <>c__DisplayClass0_ = CS$<>8__locals19.CS$<>8__locals1;
ButtonEventHandler val9 = delegate
{
ContextMenuExtensions.CloseContextMenu(((Worker)CS$<>8__locals19.CS$<>8__locals1.__instance).LocalUser, (IWorldElement)(object)CS$<>8__locals19.CS$<>8__locals1.__instance);
};
ButtonEventHandler val7 = val9;
<>c__DisplayClass0_.<>9__3 = val9;
obj4 = val7;
}
button3.LocalPressed += obj4;
}
catch (global::System.Exception exception)
{
<>1__state = -2;
((AsyncTaskMethodBuilder)(ref <>t__builder)).SetException(exception);
return;
}
<>1__state = -2;
((AsyncTaskMethodBuilder)(ref <>t__builder)).SetResult();
}
[DebuggerHidden]
private void SetStateMachine(IAsyncStateMachine stateMachine)
{
((AsyncTaskMethodBuilder)(ref <>t__builder)).SetStateMachine(stateMachine);
}
}
public Component component;
public <>c__DisplayClass0_0 CS$<>8__locals1;
public ButtonEventHandler <>9__1;
public ButtonEventHandler <>9__2;
[AsyncStateMachine(typeof(<<Prefix>b__0>d))]
internal global::System.Threading.Tasks.Task <Prefix>b__0()
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
<<Prefix>b__0>d <<Prefix>b__0>d = default(<<Prefix>b__0>d);
<<Prefix>b__0>d.<>t__builder = AsyncTaskMethodBuilder.Create();
<<Prefix>b__0>d.<>4__this = this;
<<Prefix>b__0>d.<>1__state = -1;
((AsyncTaskMethodBuilder)(ref <<Prefix>b__0>d.<>t__builder)).Start<<<Prefix>b__0>d>(ref <<Prefix>b__0>d);
return ((AsyncTaskMethodBuilder)(ref <<Prefix>b__0>d.<>t__builder)).Task;
}
internal void <Prefix>b__1(IButton <p0>, ButtonEventData <p1>)
{
CS$<>8__locals1.__instance.Target.Target.DuplicateComponent<Component>(component, false);
ContextMenuExtensions.CloseContextMenu(((Worker)CS$<>8__locals1.__instance).LocalUser, (IWorldElement)(object)CS$<>8__locals1.__instance);
}
internal void <Prefix>b__2(IButton <p0>, ButtonEventData <p1>)
{
((ContainerWorker<Component>)(object)CS$<>8__locals1.__instance.Target.Target).MoveComponent(component);
ContextMenuExtensions.CloseContextMenu(((Worker)CS$<>8__locals1.__instance).LocalUser, (IWorldElement)(object)CS$<>8__locals1.__instance);
}
}
private static bool Prefix(SlotComponentReceiver __instance, global::System.Collections.Generic.IEnumerable<IGrabbable> items, InteractionData eventData, out bool __result)
{
//IL_004b: 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)
<>c__DisplayClass0_0 <>c__DisplayClass0_ = new <>c__DisplayClass0_0();
<>c__DisplayClass0_.__instance = __instance;
<>c__DisplayClass0_.eventData = eventData;
__result = false;
if (<>c__DisplayClass0_.__instance.Target.Target == null)
{
return false;
}
global::System.Collections.Generic.IEnumerator<IGrabbable> enumerator = items.GetEnumerator();
try
{
while (((global::System.Collections.IEnumerator)enumerator).MoveNext())
{
Enumerator<ReferenceProxy> enumerator2 = ((IComponent)enumerator.Current).Slot.GetComponentsInChildren<ReferenceProxy>((Predicate<ReferenceProxy>)null, false, false, (Predicate<Slot>)null).GetEnumerator();
try
{
while (enumerator2.MoveNext())
{
ReferenceProxy current = enumerator2.Current;
<>c__DisplayClass0_1 CS$<>8__locals7 = new <>c__DisplayClass0_1();
CS$<>8__locals7.CS$<>8__locals1 = <>c__DisplayClass0_;
IWorldElement target = ((SyncRef<IWorldElement>)(object)current.Reference).Target;
CS$<>8__locals7.component = (Component)(object)((target is Component) ? target : null);
if (CS$<>8__locals7.component != null && CS$<>8__locals7.CS$<>8__locals1.__instance.Target.Target != CS$<>8__locals7.component.Slot)
{
((Worker)CS$<>8__locals7.CS$<>8__locals1.__instance).StartTask((Func<global::System.Threading.Tasks.Task>)([AsyncStateMachine(typeof(<>c__DisplayClass0_1.<<Prefix>b__0>d))] () =>
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
<>c__DisplayClass0_1.<<Prefix>b__0>d <<Prefix>b__0>d = default(<>c__DisplayClass0_1.<<Prefix>b__0>d);
<<Prefix>b__0>d.<>t__builder = AsyncTaskMethodBuilder.Create();
<<Prefix>b__0>d.<>4__this = CS$<>8__locals7;
<<Prefix>b__0>d.<>1__state = -1;
((AsyncTaskMethodBuilder)(ref <<Prefix>b__0>d.<>t__builder)).Start<<>c__DisplayClass0_1.<<Prefix>b__0>d>(ref <<Prefix>b__0>d);
return ((AsyncTaskMethodBuilder)(ref <<Prefix>b__0>d.<>t__builder)).Task;
}));
__result = true;
return false;
}
}
}
finally
{
((global::System.IDisposable)enumerator2/*cast due to .constrained prefix*/).Dispose();
}
}
}
finally
{
((global::System.IDisposable)enumerator)?.Dispose();
}
return false;
}
}
internal static ManualLogSource Log;
public override void Load()
{
//IL_0032: Unknown result type (might be due to invalid IL or missing references)
//IL_0038: Expected O, but got Unknown
Log = ((BasePlugin)this).Log;
try
{
((BasePlugin)this).HarmonyInstance.PatchAll();
Log.LogInfo((object)"Fix Copy Component Drives Loaded!");
}
catch (global::System.Exception ex)
{
ManualLogSource log = Log;
bool flag = default(bool);
BepInExErrorLogInterpolatedStringHandler val = new BepInExErrorLogInterpolatedStringHandler(43, 1, ref flag);
if (flag)
{
((BepInExLogInterpolatedStringHandler)val).AppendLiteral("Fix Copy Component Drives failed to patch: ");
((BepInExLogInterpolatedStringHandler)val).AppendFormatted<global::System.Exception>(ex);
}
log.LogError(val);
}
}
}
public static class PluginMetadata
{
public const string GUID = "xyz.gyztormizirath.FixCopyComp";
public const string NAME = "FixCopyComp";
public const string VERSION = "1.0.0";
public const string AUTHORS = "Gyztor Mizirath";
public const string REPOSITORY_URL = "https://github.com/Gyztor/FixCopyComponentDrives";
}