using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Logging; using BepInEx.NET.Common; using BepInExResoniteShim; using Elements.Core; using FrooxEngine; using FrooxEngine.UIX; using HarmonyLib; using SkyFrost.Base; [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("art0007i")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.3.0")] [assembly: AssemblyInformationalVersion("1.0.3+4eed556d2b856b38ea6925062f484893a7afb89c")] [assembly: AssemblyProduct("MessageCopy")] [assembly: AssemblyTitle("MessageCopy")] [assembly: AssemblyMetadata("RepositoryUrl", "https://github.com/art0007i/MessageCopy")] [assembly: AssemblyVersion("1.0.3.0")] [module: RefSafetyRules(11)] namespace MessageCopy; [ResonitePlugin("art0007i.MessageCopy", "MessageCopy", "1.0.3", "art0007i", "https://github.com/art0007i/MessageCopy")] [BepInDependency(/*Could not decode attribute arguments.*/)] public class Plugin : BasePlugin { [HarmonyPatch(typeof(ContactsDialog), "AddMessage")] private class MessageCopyPatch { public static void Postfix(Image __result, UIBuilder ___messagesUi, Message message) { //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Expected I4, but got Unknown //IL_00b1: 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_00f7: Expected O, but got Unknown //IL_00f8: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: Invalid comparison between Unknown and I4 //IL_0102: Unknown result type (might be due to invalid IL or missing references) //IL_0108: Invalid comparison between Unknown and I4 //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_0186: Unknown result type (might be due to invalid IL or missing references) //IL_018b: Unknown result type (might be due to invalid IL or missing references) //IL_0191: Unknown result type (might be due to invalid IL or missing references) //IL_0196: Unknown result type (might be due to invalid IL or missing references) //IL_019c: Unknown result type (might be due to invalid IL or missing references) //IL_01a1: Unknown result type (might be due to invalid IL or missing references) //IL_01ba: 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_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_0142: Unknown result type (might be due to invalid IL or missing references) //IL_0147: Unknown result type (might be due to invalid IL or missing references) //IL_0160: Unknown result type (might be due to invalid IL or missing references) string copyText = ""; MessageType messageType = message.MessageType; switch ((int)messageType) { case 0: return; case 1: case 2: { Record val2 = message.ExtractContent(); copyText = val2.AssetURI; break; } case 3: { SessionInfo val = message.ExtractContent(); copyText = val.SessionId + "\n" + string.Join("\n", (global::System.Collections.Generic.IEnumerable)val.SessionURLs); break; } case 4: return; default: Log.LogWarning((object)("Unknown message type: " + ((object)message.MessageType/*cast due to .constrained prefix*/).ToString())); return; } Slot val3 = Enumerable.Last((global::System.Collections.Generic.IEnumerable)(object)((Component)__result).Slot.Children).AddSlot("Copy", true); ___messagesUi.NestInto(val3); Button val4 = ___messagesUi.Button(Inspector.Duplicate); ___messagesUi.NestOut(); val4.LocalPressed += (ButtonEventHandler)delegate { Engine.Current.InputInterface.Clipboard.SetText(copyText); }; bool flag = (int)message.MessageType == 3; bool flag2 = (int)message.MessageType == 2; if (message.IsSent && !flag && !flag2) { float2 val5 = default(float2); ((float2)(ref val5))..ctor(2f, 0f); float2 one = float2.One; float2 val6 = (ref one) * 24; Rect val7 = new Rect(ref val5, ref val6); float2 val8 = default(float2); ((float2)(ref val8))..ctor(0f, 0f); ((UIComponent)val4).RectTransform.SetFixedRect(val7, ref val8); } else { float2 val9 = default(float2); ((float2)(ref val9))..ctor(-26f, flag ? (-26f) : 0f); float2 one2 = float2.One; float2 val10 = (ref one2) * 24; Rect val11 = new Rect(ref val9, ref val10); float2 val12 = default(float2); ((float2)(ref val12))..ctor(1f, (float)(flag ? 1 : 0)); ((UIComponent)val4).RectTransform.SetFixedRect(val11, ref val12); } HoverArea component = ((ContainerWorker)(object)((Component)__result).Slot).GetComponent((Predicate)null, false); ValueCopyExtensions.DriveFrom((IField)(object)val3.ActiveSelf_Field, (IField)(object)component.IsHovering, false, false, true); } } internal static ManualLogSource Log; public override void Load() { Log = ((BasePlugin)this).Log; ((BasePlugin)this).HarmonyInstance.PatchAll(); } } public static class PluginMetadata { public const string GUID = "art0007i.MessageCopy"; public const string NAME = "MessageCopy"; public const string VERSION = "1.0.3"; public const string AUTHORS = "art0007i"; public const string REPOSITORY_URL = "https://github.com/art0007i/MessageCopy"; }