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.Configuration;
using BepInEx.Logging;
using GameNetcodeStuff;
using HarmonyLib;
using LethalCompanyInputUtils.Api;
using Microsoft.CodeAnalysis;
using Snowlance.WearableItemsAPI.NetcodePatcher;
using Unity.Netcode;
using UnityEngine;
using UnityEngine.InputSystem;
using UnityEngine.InputSystem.Controls;
using UnityEngine.UIElements;
[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("AmazingAssets.TerrainToMesh")]
[assembly: IgnoresAccessChecksTo("Assembly-CSharp-firstpass")]
[assembly: IgnoresAccessChecksTo("Assembly-CSharp")]
[assembly: IgnoresAccessChecksTo("ClientNetworkTransform")]
[assembly: IgnoresAccessChecksTo("DissonanceVoip")]
[assembly: IgnoresAccessChecksTo("Facepunch Transport for Netcode for GameObjects")]
[assembly: IgnoresAccessChecksTo("Facepunch.Steamworks.Win64")]
[assembly: IgnoresAccessChecksTo("Unity.AI.Navigation")]
[assembly: IgnoresAccessChecksTo("Unity.Animation.Rigging")]
[assembly: IgnoresAccessChecksTo("Unity.Animation.Rigging.DocCodeExamples")]
[assembly: IgnoresAccessChecksTo("Unity.Burst")]
[assembly: IgnoresAccessChecksTo("Unity.Burst.Unsafe")]
[assembly: IgnoresAccessChecksTo("Unity.Collections")]
[assembly: IgnoresAccessChecksTo("Unity.Collections.LowLevel.ILSupport")]
[assembly: IgnoresAccessChecksTo("Unity.InputSystem")]
[assembly: IgnoresAccessChecksTo("Unity.InputSystem.ForUI")]
[assembly: IgnoresAccessChecksTo("Unity.Jobs")]
[assembly: IgnoresAccessChecksTo("Unity.Mathematics")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.Common")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.MetricTypes")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStats")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Component")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Configuration")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Implementation")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsReporting")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetworkProfiler.Runtime")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetworkSolutionInterface")]
[assembly: IgnoresAccessChecksTo("Unity.Netcode.Components")]
[assembly: IgnoresAccessChecksTo("Unity.Netcode.Runtime")]
[assembly: IgnoresAccessChecksTo("Unity.Networking.Transport")]
[assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Csg")]
[assembly: IgnoresAccessChecksTo("Unity.ProBuilder")]
[assembly: IgnoresAccessChecksTo("Unity.ProBuilder.KdTree")]
[assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Poly2Tri")]
[assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Stl")]
[assembly: IgnoresAccessChecksTo("Unity.Profiling.Core")]
[assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.Core.Runtime")]
[assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.Core.ShaderLibrary")]
[assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.HighDefinition.Config.Runtime")]
[assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.HighDefinition.Runtime")]
[assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.ShaderGraph.ShaderGraphLibrary")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Authentication")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Analytics")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Configuration")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Device")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Environments")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Environments.Internal")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Internal")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Networking")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Registration")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Scheduler")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Telemetry")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Threading")]
[assembly: IgnoresAccessChecksTo("Unity.Services.QoS")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Relay")]
[assembly: IgnoresAccessChecksTo("Unity.TextMeshPro")]
[assembly: IgnoresAccessChecksTo("Unity.Timeline")]
[assembly: IgnoresAccessChecksTo("Unity.VisualEffectGraph.Runtime")]
[assembly: IgnoresAccessChecksTo("UnityEngine.ARModule")]
[assembly: IgnoresAccessChecksTo("UnityEngine.NVIDIAModule")]
[assembly: IgnoresAccessChecksTo("UnityEngine.UI")]
[assembly: AssemblyCompany("snowlance7")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyDescription("A customizable API for wearable items for Lethal Company")]
[assembly: AssemblyFileVersion("0.1.9.0")]
[assembly: AssemblyInformationalVersion("0.1.9+ed8a4d068319eeef56f70480e0939fb01a195c79")]
[assembly: AssemblyProduct("WearableItemsAPI")]
[assembly: AssemblyTitle("Snowlance.WearableItemsAPI")]
[assembly: AssemblyMetadata("RepositoryUrl", "https://github.com/snowlance7/WearableItemsAPI")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("0.1.9.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.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 WearableItemsAPI
{
[HarmonyPatch]
internal class Patches
{
private static ManualLogSource logger = Plugin.LoggerInstance;
[HarmonyPrefix]
[HarmonyPatch(typeof(QuickMenuManager), "OpenQuickMenu")]
private static bool OpenQuickMenuPatch()
{
//IL_004a: 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)
if ((Object)(object)WearableUIController.Instance == (Object)null)
{
return true;
}
if (WearableUIController.Instance.veMain == null)
{
logger.LogError((object)"veMain is null!");
return true;
}
if (WearableUIController.Instance.veMain.style.display == StyleEnum<DisplayStyle>.op_Implicit((DisplayStyle)0))
{
return false;
}
return true;
}
[HarmonyPostfix]
[HarmonyPatch(typeof(StartOfRound), "Awake")]
private static void AwakePostfix()
{
WearableUIController.Init();
}
}
[BepInPlugin("Snowlance.WearableItemsAPI", "WearableItemsAPI", "0.1.9")]
[BepInDependency(/*Could not decode attribute arguments.*/)]
internal class Plugin : BaseUnityPlugin
{
internal static Plugin PluginInstance;
internal static ManualLogSource LoggerInstance;
private readonly Harmony harmony = new Harmony("Snowlance.WearableItemsAPI");
public static AssetBundle? ModAssets;
public static ConfigEntry<int> configUIPositionX;
public static ConfigEntry<int> configUIPositionY;
public static ConfigEntry<int> configUIWidth;
public static ConfigEntry<int> configUIHeight;
public static ConfigEntry<bool> configArmSpacing;
public static ConfigEntry<int> configSpaceBetweenArms;
public static ConfigEntry<int> configSpaceBetweenHeadAndChest;
public static ConfigEntry<int> configSpaceBetweenChestAndLegs;
public static ConfigEntry<int> configSpaceBetweenLegsAndFeet;
internal static PlayerControllerB localPlayer => StartOfRound.Instance.localPlayerController;
private void Awake()
{
if ((Object)(object)PluginInstance == (Object)null)
{
PluginInstance = this;
}
LoggerInstance = ((BaseUnityPlugin)PluginInstance).Logger;
harmony.PatchAll();
InitializeNetworkBehaviours();
WearableItemsInputs.Init();
configUIPositionX = ((BaseUnityPlugin)this).Config.Bind<int>("UI Settings", "UIPositionX", 0, "X Position of the UI");
configUIPositionY = ((BaseUnityPlugin)this).Config.Bind<int>("UI Settings", "UIPositionY", 100, "Y Position of the UI");
configUIWidth = ((BaseUnityPlugin)this).Config.Bind<int>("UI Settings", "UIWidth", 55, "Width of the UI");
configUIHeight = ((BaseUnityPlugin)this).Config.Bind<int>("UI Settings", "UIHeight", 55, "Height of the UI");
configArmSpacing = ((BaseUnityPlugin)this).Config.Bind<bool>("UI Settings", "ArmSpacing", false, "Whether to add a gap between arm buttons");
configSpaceBetweenArms = ((BaseUnityPlugin)this).Config.Bind<int>("UI Settings", "SpaceBetweenArms", 2, "Extra spacing between arm buttons");
configSpaceBetweenHeadAndChest = ((BaseUnityPlugin)this).Config.Bind<int>("UI Settings", "SpaceBetweenHeadAndChest", 0, "Space between head and chest");
configSpaceBetweenChestAndLegs = ((BaseUnityPlugin)this).Config.Bind<int>("UI Settings", "SpaceBetweenChestAndLegs", 0, "Space between chest and legs");
configSpaceBetweenLegsAndFeet = ((BaseUnityPlugin)this).Config.Bind<int>("UI Settings", "SpaceBetweenLegsAndFeet", 0, "Space between legs and feet");
string directoryName = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
ModAssets = AssetBundle.LoadFromFile(Path.Combine(Path.GetDirectoryName(((BaseUnityPlugin)this).Info.Location), "wearable_items_assets"));
if ((Object)(object)ModAssets == (Object)null)
{
((BaseUnityPlugin)this).Logger.LogError((object)"Failed to load custom assets.");
return;
}
LoggerInstance.LogDebug((object)("Got AssetBundle at: " + Path.Combine(directoryName, "wearable_items_assets")));
((BaseUnityPlugin)this).Logger.LogInfo((object)"WearableItemsAPI v0.1.9 has loaded!");
}
private static void InitializeNetworkBehaviours()
{
Type[] types = Assembly.GetExecutingAssembly().GetTypes();
Type[] array = types;
foreach (Type type in array)
{
MethodInfo[] methods = type.GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic);
MethodInfo[] array2 = methods;
foreach (MethodInfo methodInfo in array2)
{
object[] customAttributes = methodInfo.GetCustomAttributes(typeof(RuntimeInitializeOnLoadMethodAttribute), inherit: false);
if (customAttributes.Length != 0)
{
methodInfo.Invoke(null, null);
}
}
}
LoggerInstance.LogDebug((object)"Finished initializing network behaviours");
}
}
public class WearableItem : PhysicsProp
{
public enum WearableSlot
{
None,
Head,
Chest,
RightArm,
LeftArm,
BothArms,
Legs,
Feet
}
public PlayerControllerB? playerWornBy;
private Transform? wornPos;
public WearableSlot WearSlot;
public Vector3 wearablePositionOffset;
public Vector3 wearableRotationOffset;
public bool showWearable;
public bool showWearableOnClient;
public override void Update()
{
((GrabbableObject)this).Update();
if ((Object)(object)playerWornBy != (Object)null && playerWornBy.isPlayerDead)
{
UnWear(grabItem: false);
}
}
public override void LateUpdate()
{
//IL_0032: Unknown result type (might be due to invalid IL or missing references)
//IL_0044: Unknown result type (might be due to invalid IL or missing references)
//IL_005b: Unknown result type (might be due to invalid IL or missing references)
//IL_0067: 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_0073: Unknown result type (might be due to invalid IL or missing references)
//IL_0078: Unknown result type (might be due to invalid IL or missing references)
//IL_0079: Unknown result type (might be due to invalid IL or missing references)
//IL_007e: Unknown result type (might be due to invalid IL or missing references)
//IL_0086: Unknown result type (might be due to invalid IL or missing references)
//IL_008b: Unknown result type (might be due to invalid IL or missing references)
//IL_008c: Unknown result type (might be due to invalid IL or missing references)
//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
if ((Object)(object)((GrabbableObject)this).parentObject != (Object)null && (Object)(object)playerWornBy != (Object)null)
{
((Component)this).transform.rotation = ((GrabbableObject)this).parentObject.rotation;
((Component)this).transform.Rotate(wearableRotationOffset);
((Component)this).transform.position = ((GrabbableObject)this).parentObject.position;
Vector3 val = wearablePositionOffset;
val = ((GrabbableObject)this).parentObject.rotation * val;
Transform transform = ((Component)this).transform;
transform.position += val;
if ((Object)(object)((GrabbableObject)this).radarIcon != (Object)null)
{
((GrabbableObject)this).radarIcon.position = ((Component)this).transform.position;
}
}
else
{
((GrabbableObject)this).LateUpdate();
}
}
public virtual void Wear()
{
//IL_009e: Unknown result type (might be due to invalid IL or missing references)
//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
//IL_00f0: Unknown result type (might be due to invalid IL or missing references)
//IL_00f6: Unknown result type (might be due to invalid IL or missing references)
Plugin.LoggerInstance.LogDebug((object)("Wearing " + ((GrabbableObject)this).itemProperties.itemName));
if ((Object)(object)((GrabbableObject)this).playerHeldBy != (Object)null)
{
playerWornBy = ((GrabbableObject)this).playerHeldBy;
if (!SetWearSlot(WearSlot, (GrabbableObject?)(object)this))
{
HUDManager.Instance.DisplayTip("Cant wear item", "You are already wearing an item of that type", true, false, "LC_Tip1");
return;
}
((GrabbableObject)this).playerHeldBy.DiscardHeldObject(false, ((NetworkBehaviour)((GrabbableObject)this).playerHeldBy).NetworkObject, default(Vector3), true);
((GrabbableObject)this).parentObject = wornPos;
((Component)this).gameObject.GetComponent<Collider>().enabled = false;
((GrabbableObject)this).EnableItemMeshes(showWearableOnClient);
WearServerRpc(playerWornBy.actualClientId, WearSlot, showWearable, wearablePositionOffset, wearableRotationOffset);
}
else
{
Plugin.LoggerInstance.LogError((object)"No player holding object found and no player was provided");
}
}
public virtual void UnWear(bool grabItem = true)
{
UnwearServerRpc(grabItem);
}
public bool SetWearSlot(WearableSlot slot, GrabbableObject? itemToSlot = null)
{
if ((Object)(object)playerWornBy == (Object)null)
{
Plugin.LoggerInstance.LogError((object)"PlayerWornBy is null");
return false;
}
WearSlot = slot;
wornPos = null;
switch (WearSlot)
{
case WearableSlot.Head:
if ((Object)(object)itemToSlot != (Object)null)
{
wornPos = playerWornBy.bodyParts[0];
}
if (!((Object)(object)playerWornBy == (Object)(object)Plugin.localPlayer))
{
break;
}
if ((Object)(object)itemToSlot == (Object)null)
{
WearableUIController.Instance.HeadItem = itemToSlot;
break;
}
if ((Object)(object)WearableUIController.Instance.HeadItem == (Object)null)
{
WearableUIController.Instance.HeadItem = itemToSlot;
break;
}
return false;
case WearableSlot.RightArm:
if ((Object)(object)itemToSlot != (Object)null)
{
wornPos = playerWornBy.bodyParts[1];
}
if (!((Object)(object)playerWornBy == (Object)(object)Plugin.localPlayer))
{
break;
}
if ((Object)(object)itemToSlot == (Object)null)
{
WearableUIController.Instance.RightArmItem = itemToSlot;
break;
}
if ((Object)(object)WearableUIController.Instance.RightArmItem == (Object)null)
{
WearableUIController.Instance.RightArmItem = itemToSlot;
break;
}
return false;
case WearableSlot.LeftArm:
if ((Object)(object)itemToSlot != (Object)null)
{
wornPos = playerWornBy.bodyParts[2];
}
if (!((Object)(object)playerWornBy == (Object)(object)Plugin.localPlayer))
{
break;
}
if ((Object)(object)itemToSlot == (Object)null)
{
WearableUIController.Instance.LeftArmItem = itemToSlot;
break;
}
if ((Object)(object)WearableUIController.Instance.LeftArmItem == (Object)null)
{
WearableUIController.Instance.LeftArmItem = itemToSlot;
break;
}
return false;
case WearableSlot.Chest:
if ((Object)(object)itemToSlot != (Object)null)
{
wornPos = playerWornBy.bodyParts[5];
}
if (!((Object)(object)playerWornBy == (Object)(object)Plugin.localPlayer))
{
break;
}
if ((Object)(object)itemToSlot == (Object)null)
{
WearableUIController.Instance.ChestItem = itemToSlot;
break;
}
if ((Object)(object)WearableUIController.Instance.ChestItem == (Object)null)
{
WearableUIController.Instance.ChestItem = itemToSlot;
break;
}
return false;
case WearableSlot.Legs:
if ((Object)(object)itemToSlot != (Object)null)
{
wornPos = playerWornBy.bodyParts[8];
}
if (!((Object)(object)playerWornBy == (Object)(object)Plugin.localPlayer))
{
break;
}
if ((Object)(object)itemToSlot == (Object)null)
{
WearableUIController.Instance.LegsItem = itemToSlot;
break;
}
if ((Object)(object)WearableUIController.Instance.LegsItem == (Object)null)
{
WearableUIController.Instance.LegsItem = itemToSlot;
break;
}
return false;
case WearableSlot.Feet:
if ((Object)(object)itemToSlot != (Object)null)
{
wornPos = playerWornBy.bodyParts[6];
}
if (!((Object)(object)playerWornBy == (Object)(object)Plugin.localPlayer))
{
break;
}
if ((Object)(object)itemToSlot == (Object)null)
{
WearableUIController.Instance.FeetItem = itemToSlot;
break;
}
if ((Object)(object)WearableUIController.Instance.FeetItem == (Object)null)
{
WearableUIController.Instance.FeetItem = itemToSlot;
break;
}
return false;
case WearableSlot.None:
if ((Object)(object)itemToSlot != (Object)null)
{
wornPos = ((Component)playerWornBy).transform;
}
((GrabbableObject)this).EnableItemMeshes(false);
break;
default:
Plugin.LoggerInstance.LogError((object)"Wearslot not found");
break;
case WearableSlot.BothArms:
break;
}
return true;
}
[ServerRpc(RequireOwnership = false)]
private void WearServerRpc(ulong clientId, WearableSlot slot, bool _showWearable, Vector3 _wearablePositionOffset, Vector3 _wearableRotationOffset)
{
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Invalid comparison between Unknown and I4
//IL_00e9: Unknown result type (might be due to invalid IL or missing references)
//IL_00f3: Invalid comparison between Unknown and I4
//IL_005f: Unknown result type (might be due to invalid IL or missing references)
//IL_0068: Unknown result type (might be due to invalid IL or missing references)
//IL_006d: Unknown result type (might be due to invalid IL or missing references)
//IL_0071: 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_0090: Unknown result type (might be due to invalid IL or missing references)
//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
//IL_00ab: Unknown result type (might be due to invalid IL or missing references)
//IL_00d9: Unknown result type (might be due to invalid IL or missing references)
//IL_013b: Unknown result type (might be due to invalid IL or missing references)
//IL_013d: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
if (networkManager != null && networkManager.IsListening)
{
if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost))
{
ServerRpcParams val = default(ServerRpcParams);
FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(1675537684u, val, (RpcDelivery)0);
BytePacker.WriteValueBitPacked(val2, clientId);
((FastBufferWriter)(ref val2)).WriteValueSafe<WearableSlot>(ref slot, default(ForEnums));
((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref _showWearable, default(ForPrimitives));
((FastBufferWriter)(ref val2)).WriteValueSafe(ref _wearablePositionOffset);
((FastBufferWriter)(ref val2)).WriteValueSafe(ref _wearableRotationOffset);
((NetworkBehaviour)this).__endSendServerRpc(ref val2, 1675537684u, val, (RpcDelivery)0);
}
if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost) && (NetworkManager.Singleton.IsServer || NetworkManager.Singleton.IsHost))
{
WearClientRpc(clientId, slot, _showWearable, _wearablePositionOffset, _wearableRotationOffset);
}
}
}
[ClientRpc]
private void WearClientRpc(ulong clientId, WearableSlot slot, bool _showWearable, Vector3 _wearablePositionOffset, Vector3 _wearableRotationOffset)
{
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Invalid comparison between Unknown and I4
//IL_00e9: Unknown result type (might be due to invalid IL or missing references)
//IL_00f3: Invalid comparison between Unknown and I4
//IL_005f: Unknown result type (might be due to invalid IL or missing references)
//IL_0068: Unknown result type (might be due to invalid IL or missing references)
//IL_006d: Unknown result type (might be due to invalid IL or missing references)
//IL_0071: 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_0090: Unknown result type (might be due to invalid IL or missing references)
//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
//IL_00ab: Unknown result type (might be due to invalid IL or missing references)
//IL_00d9: Unknown result type (might be due to invalid IL or missing references)
//IL_0177: 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_017f: Unknown result type (might be due to invalid IL or missing references)
//IL_0181: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
if (networkManager == null || !networkManager.IsListening)
{
return;
}
if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost))
{
ClientRpcParams val = default(ClientRpcParams);
FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(3939660845u, val, (RpcDelivery)0);
BytePacker.WriteValueBitPacked(val2, clientId);
((FastBufferWriter)(ref val2)).WriteValueSafe<WearableSlot>(ref slot, default(ForEnums));
((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref _showWearable, default(ForPrimitives));
((FastBufferWriter)(ref val2)).WriteValueSafe(ref _wearablePositionOffset);
((FastBufferWriter)(ref val2)).WriteValueSafe(ref _wearableRotationOffset);
((NetworkBehaviour)this).__endSendClientRpc(ref val2, 3939660845u, val, (RpcDelivery)0);
}
if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 2 || (!networkManager.IsClient && !networkManager.IsHost))
{
return;
}
ulong clientId2 = clientId;
if (Plugin.localPlayer.actualClientId != clientId2)
{
playerWornBy = StartOfRound.Instance.allPlayerScripts.Where((PlayerControllerB x) => x.actualClientId == clientId2).First();
SetWearSlot(slot, (GrabbableObject?)(object)this);
((GrabbableObject)this).EnableItemMeshes(_showWearable);
wearablePositionOffset = _wearablePositionOffset;
wearableRotationOffset = _wearableRotationOffset;
((GrabbableObject)this).parentObject = wornPos;
((Component)this).gameObject.GetComponent<Collider>().enabled = false;
}
}
[ServerRpc(RequireOwnership = false)]
private void UnwearServerRpc(bool grabItem = true)
{
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Invalid comparison between Unknown and I4
//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
//IL_00b1: Invalid comparison between Unknown and I4
//IL_005f: Unknown result type (might be due to invalid IL or missing references)
//IL_0068: Unknown result type (might be due to invalid IL or missing references)
//IL_006d: Unknown result type (might be due to invalid IL or missing references)
//IL_007d: Unknown result type (might be due to invalid IL or missing references)
//IL_0083: Unknown result type (might be due to invalid IL or missing references)
//IL_0097: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
if (networkManager != null && networkManager.IsListening)
{
if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost))
{
ServerRpcParams val = default(ServerRpcParams);
FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(3216208453u, val, (RpcDelivery)0);
((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref grabItem, default(ForPrimitives));
((NetworkBehaviour)this).__endSendServerRpc(ref val2, 3216208453u, val, (RpcDelivery)0);
}
if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost) && (NetworkManager.Singleton.IsServer || NetworkManager.Singleton.IsHost))
{
UnwearClientRpc(grabItem);
}
}
}
[ClientRpc]
private void UnwearClientRpc(bool grabItem = true)
{
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Invalid comparison between Unknown and I4
//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
//IL_00b1: Invalid comparison between Unknown and I4
//IL_005f: Unknown result type (might be due to invalid IL or missing references)
//IL_0068: Unknown result type (might be due to invalid IL or missing references)
//IL_006d: Unknown result type (might be due to invalid IL or missing references)
//IL_007d: Unknown result type (might be due to invalid IL or missing references)
//IL_0083: Unknown result type (might be due to invalid IL or missing references)
//IL_0097: Unknown result type (might be due to invalid IL or missing references)
//IL_023b: Unknown result type (might be due to invalid IL or missing references)
//IL_01c0: Unknown result type (might be due to invalid IL or missing references)
//IL_01c5: Unknown result type (might be due to invalid IL or missing references)
//IL_01ca: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
if (networkManager == null || !networkManager.IsListening)
{
return;
}
if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost))
{
ClientRpcParams val = default(ClientRpcParams);
FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(2970454903u, val, (RpcDelivery)0);
((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref grabItem, default(ForPrimitives));
((NetworkBehaviour)this).__endSendClientRpc(ref val2, 2970454903u, val, (RpcDelivery)0);
}
if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 2 || (!networkManager.IsClient && !networkManager.IsHost))
{
return;
}
if ((Object)(object)playerWornBy != (Object)null)
{
SetWearSlot(WearSlot);
if (playerWornBy.isPlayerDead || !grabItem)
{
Plugin.LoggerInstance.LogDebug((object)"Player is dead");
((GrabbableObject)this).parentObject = null;
if (playerWornBy.isInElevator)
{
((Component)this).transform.SetParent(playerWornBy.playersManager.elevatorTransform, true);
}
else
{
((Component)this).transform.SetParent(playerWornBy.playersManager.propsContainer, true);
}
playerWornBy.SetItemInElevator(playerWornBy.isInHangarShipRoom, playerWornBy.isInElevator, (GrabbableObject)(object)this);
((GrabbableObject)this).EnablePhysics(true);
((GrabbableObject)this).EnableItemMeshes(true);
((GrabbableObject)this).startFallingPosition = ((Component)this).transform.parent.InverseTransformPoint(((Component)this).transform.position);
((GrabbableObject)this).FallToGround(true);
((GrabbableObject)this).fallTime = 0f;
}
if ((Object)(object)playerWornBy == (Object)(object)Plugin.localPlayer && !playerWornBy.isPlayerDead && grabItem)
{
Plugin.LoggerInstance.LogDebug((object)("Grabbing " + ((GrabbableObject)this).itemProperties.itemName));
playerWornBy.GrabObjectServerRpc(NetworkObjectReference.op_Implicit(((NetworkBehaviour)this).NetworkObject));
((GrabbableObject)this).parentObject = playerWornBy.localItemHolder;
((GrabbableObject)this).GrabItemOnClient();
}
}
((Component)this).gameObject.GetComponent<Collider>().enabled = true;
((GrabbableObject)this).EnableItemMeshes(true);
playerWornBy = null;
}
protected override void __initializeVariables()
{
((PhysicsProp)this).__initializeVariables();
}
[RuntimeInitializeOnLoadMethod]
internal static void InitializeRPCS_WearableItem()
{
//IL_0011: Unknown result type (might be due to invalid IL or missing references)
//IL_001b: Expected O, but got Unknown
//IL_002c: Unknown result type (might be due to invalid IL or missing references)
//IL_0036: Expected O, but got Unknown
//IL_0047: Unknown result type (might be due to invalid IL or missing references)
//IL_0051: Expected O, but got Unknown
//IL_0062: Unknown result type (might be due to invalid IL or missing references)
//IL_006c: Expected O, but got Unknown
NetworkManager.__rpc_func_table.Add(1675537684u, new RpcReceiveHandler(__rpc_handler_1675537684));
NetworkManager.__rpc_func_table.Add(3939660845u, new RpcReceiveHandler(__rpc_handler_3939660845));
NetworkManager.__rpc_func_table.Add(3216208453u, new RpcReceiveHandler(__rpc_handler_3216208453));
NetworkManager.__rpc_func_table.Add(2970454903u, new RpcReceiveHandler(__rpc_handler_2970454903));
}
private static void __rpc_handler_1675537684(NetworkBehaviour? target, FastBufferReader reader, __RpcParams rpcParams)
{
//IL_0023: Unknown result type (might be due to invalid IL or missing references)
//IL_003c: Unknown result type (might be due to invalid IL or missing references)
//IL_0042: Unknown result type (might be due to invalid IL or missing references)
//IL_0057: Unknown result type (might be due to invalid IL or missing references)
//IL_005d: Unknown result type (might be due to invalid IL or missing references)
//IL_0086: 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_00a1: 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)
NetworkManager networkManager = target.NetworkManager;
if (networkManager != null && networkManager.IsListening)
{
ulong clientId = default(ulong);
ByteUnpacker.ReadValueBitPacked(reader, ref clientId);
WearableSlot slot = default(WearableSlot);
((FastBufferReader)(ref reader)).ReadValueSafe<WearableSlot>(ref slot, default(ForEnums));
bool flag = default(bool);
((FastBufferReader)(ref reader)).ReadValueSafe<bool>(ref flag, default(ForPrimitives));
Vector3 val = default(Vector3);
((FastBufferReader)(ref reader)).ReadValueSafe(ref val);
Vector3 val2 = default(Vector3);
((FastBufferReader)(ref reader)).ReadValueSafe(ref val2);
target.__rpc_exec_stage = (__RpcExecStage)1;
((WearableItem)(object)target).WearServerRpc(clientId, slot, flag, val, val2);
target.__rpc_exec_stage = (__RpcExecStage)0;
}
}
private static void __rpc_handler_3939660845(NetworkBehaviour? target, FastBufferReader reader, __RpcParams rpcParams)
{
//IL_0023: Unknown result type (might be due to invalid IL or missing references)
//IL_003c: Unknown result type (might be due to invalid IL or missing references)
//IL_0042: Unknown result type (might be due to invalid IL or missing references)
//IL_0057: Unknown result type (might be due to invalid IL or missing references)
//IL_005d: Unknown result type (might be due to invalid IL or missing references)
//IL_0086: 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_00a1: 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)
NetworkManager networkManager = target.NetworkManager;
if (networkManager != null && networkManager.IsListening)
{
ulong clientId = default(ulong);
ByteUnpacker.ReadValueBitPacked(reader, ref clientId);
WearableSlot slot = default(WearableSlot);
((FastBufferReader)(ref reader)).ReadValueSafe<WearableSlot>(ref slot, default(ForEnums));
bool flag = default(bool);
((FastBufferReader)(ref reader)).ReadValueSafe<bool>(ref flag, default(ForPrimitives));
Vector3 val = default(Vector3);
((FastBufferReader)(ref reader)).ReadValueSafe(ref val);
Vector3 val2 = default(Vector3);
((FastBufferReader)(ref reader)).ReadValueSafe(ref val2);
target.__rpc_exec_stage = (__RpcExecStage)2;
((WearableItem)(object)target).WearClientRpc(clientId, slot, flag, val, val2);
target.__rpc_exec_stage = (__RpcExecStage)0;
}
}
private static void __rpc_handler_3216208453(NetworkBehaviour? target, FastBufferReader reader, __RpcParams rpcParams)
{
//IL_002f: Unknown result type (might be due to invalid IL or missing references)
//IL_0035: Unknown result type (might be due to invalid IL or missing references)
//IL_0044: Unknown result type (might be due to invalid IL or missing references)
//IL_005e: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = target.NetworkManager;
if (networkManager != null && networkManager.IsListening)
{
bool grabItem = default(bool);
((FastBufferReader)(ref reader)).ReadValueSafe<bool>(ref grabItem, default(ForPrimitives));
target.__rpc_exec_stage = (__RpcExecStage)1;
((WearableItem)(object)target).UnwearServerRpc(grabItem);
target.__rpc_exec_stage = (__RpcExecStage)0;
}
}
private static void __rpc_handler_2970454903(NetworkBehaviour? target, FastBufferReader reader, __RpcParams rpcParams)
{
//IL_002f: Unknown result type (might be due to invalid IL or missing references)
//IL_0035: Unknown result type (might be due to invalid IL or missing references)
//IL_0044: Unknown result type (might be due to invalid IL or missing references)
//IL_005e: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = target.NetworkManager;
if (networkManager != null && networkManager.IsListening)
{
bool grabItem = default(bool);
((FastBufferReader)(ref reader)).ReadValueSafe<bool>(ref grabItem, default(ForPrimitives));
target.__rpc_exec_stage = (__RpcExecStage)2;
((WearableItem)(object)target).UnwearClientRpc(grabItem);
target.__rpc_exec_stage = (__RpcExecStage)0;
}
}
[MethodImpl(MethodImplOptions.NoInlining)]
protected internal override string? __getTypeName()
{
return "WearableItem";
}
}
internal class WearableItemsInputs : LcInputActions
{
public static WearableItemsInputs Instance;
[InputAction(/*Could not decode attribute arguments.*/)]
public InputAction OpenUIKey { get; set; }
public static void Init()
{
Instance = new WearableItemsInputs();
}
}
public class WearableUIController : MonoBehaviour
{
private static ManualLogSource logger = Plugin.LoggerInstance;
public static WearableUIController Instance;
internal VisualElement veMain;
internal VisualElement veUIContainer;
private Button btnHead;
private Button btnRightArm;
private Button btnLeftArm;
private Button btnChest;
private Button btnLegs;
private Button btnFeet;
public GrabbableObject HeadItem;
public GrabbableObject RightArmItem;
public GrabbableObject LeftArmItem;
public GrabbableObject BothArmsItem;
public GrabbableObject ChestItem;
public GrabbableObject LegsItem;
public GrabbableObject FeetItem;
internal static void Init()
{
logger.LogDebug((object)"UIController: Init()");
GameObject val = Plugin.ModAssets.LoadAsset<GameObject>("Assets/ModAssets/WearableItemsUIHandler.prefab");
if ((Object)(object)val == (Object)null)
{
logger.LogError((object)"WearableItemsUIHandler not found.");
return;
}
val.AddComponent<WearableUIController>();
val = Object.Instantiate<GameObject>(val);
}
private void Start()
{
//IL_0164: Unknown result type (might be due to invalid IL or missing references)
//IL_01bc: Unknown result type (might be due to invalid IL or missing references)
//IL_01dd: Unknown result type (might be due to invalid IL or missing references)
//IL_0226: Unknown result type (might be due to invalid IL or missing references)
//IL_026f: Unknown result type (might be due to invalid IL or missing references)
//IL_0292: Unknown result type (might be due to invalid IL or missing references)
//IL_02df: Unknown result type (might be due to invalid IL or missing references)
//IL_0337: Unknown result type (might be due to invalid IL or missing references)
//IL_0358: Unknown result type (might be due to invalid IL or missing references)
//IL_03b0: Unknown result type (might be due to invalid IL or missing references)
//IL_03d1: Unknown result type (might be due to invalid IL or missing references)
//IL_03f2: Unknown result type (might be due to invalid IL or missing references)
//IL_044a: Unknown result type (might be due to invalid IL or missing references)
//IL_046b: Unknown result type (might be due to invalid IL or missing references)
//IL_048c: Unknown result type (might be due to invalid IL or missing references)
//IL_04e4: Unknown result type (might be due to invalid IL or missing references)
//IL_0505: Unknown result type (might be due to invalid IL or missing references)
//IL_055d: Unknown result type (might be due to invalid IL or missing references)
//IL_057e: Unknown result type (might be due to invalid IL or missing references)
//IL_05d6: Unknown result type (might be due to invalid IL or missing references)
//IL_05f7: Unknown result type (might be due to invalid IL or missing references)
logger.LogDebug((object)"UIController: Start()");
if ((Object)(object)Instance == (Object)null)
{
Instance = this;
}
logger.LogDebug((object)"Getting UIDocument");
UIDocument component = ((Component)this).GetComponent<UIDocument>();
if ((Object)(object)component == (Object)null)
{
logger.LogError((object)"uiDocument not found.");
return;
}
logger.LogDebug((object)"Getting visual tree asset");
if ((Object)(object)component.visualTreeAsset == (Object)null)
{
logger.LogError((object)"visualTreeAsset not found.");
return;
}
VisualElement val = (VisualElement)(object)component.visualTreeAsset.Instantiate();
if (val == null)
{
logger.LogError((object)"root is null!");
return;
}
logger.LogDebug((object)"Adding root");
component.rootVisualElement.Add(val);
if (component.rootVisualElement == null)
{
logger.LogError((object)"uiDocument.rootVisualElement not found.");
return;
}
logger.LogDebug((object)"Got root");
val = component.rootVisualElement;
veMain = UQueryExtensions.Q<VisualElement>(val, "veMain", (string)null);
if (veMain == null)
{
logger.LogError((object)"veMain not found.");
return;
}
veMain.style.display = StyleEnum<DisplayStyle>.op_Implicit((DisplayStyle)1);
veUIContainer = UQueryExtensions.Q<VisualElement>(val, "veUIContainer", (string)null);
if (veUIContainer == null)
{
logger.LogError((object)"veUIContainer not found.");
return;
}
veUIContainer.style.bottom = StyleLength.op_Implicit((float)Plugin.configUIPositionY.Value);
veUIContainer.style.left = StyleLength.op_Implicit((float)Plugin.configUIPositionX.Value);
VisualElement val2 = UQueryExtensions.Q<VisualElement>(val, "veHead", (string)null);
if (val2 == null)
{
logger.LogError((object)"veHead not found.");
return;
}
val2.style.marginBottom = StyleLength.op_Implicit((float)Plugin.configSpaceBetweenHeadAndChest.Value);
VisualElement val3 = UQueryExtensions.Q<VisualElement>(val, "veChest", (string)null);
if (val3 == null)
{
logger.LogError((object)"veChest not found.");
return;
}
val3.style.marginBottom = StyleLength.op_Implicit((float)Plugin.configSpaceBetweenChestAndLegs.Value);
if (Plugin.configArmSpacing.Value)
{
val3.style.justifyContent = StyleEnum<Justify>.op_Implicit((Justify)4);
}
VisualElement val4 = UQueryExtensions.Q<VisualElement>(val, "veLegs", (string)null);
if (val4 == null)
{
logger.LogError((object)"veLegs not found.");
return;
}
val4.style.marginBottom = StyleLength.op_Implicit((float)Plugin.configSpaceBetweenLegsAndFeet.Value);
btnHead = UQueryExtensions.Q<Button>(val, "btnHead", (string)null);
if (btnHead == null)
{
logger.LogError((object)"btnHead not found.");
return;
}
((VisualElement)btnHead).style.width = StyleLength.op_Implicit((float)Plugin.configUIWidth.Value);
((VisualElement)btnHead).style.height = StyleLength.op_Implicit((float)Plugin.configUIHeight.Value);
btnRightArm = UQueryExtensions.Q<Button>(val, "btnRightArm", (string)null);
if (btnRightArm == null)
{
logger.LogError((object)"btnRightArm not found.");
return;
}
((VisualElement)btnRightArm).style.width = StyleLength.op_Implicit((float)Plugin.configUIWidth.Value);
((VisualElement)btnRightArm).style.height = StyleLength.op_Implicit((float)Plugin.configUIHeight.Value);
((VisualElement)btnRightArm).style.marginRight = StyleLength.op_Implicit((float)Plugin.configSpaceBetweenArms.Value);
btnLeftArm = UQueryExtensions.Q<Button>(val, "btnLeftArm", (string)null);
if (btnLeftArm == null)
{
logger.LogError((object)"btnLeftArm not found.");
return;
}
((VisualElement)btnLeftArm).style.width = StyleLength.op_Implicit((float)Plugin.configUIWidth.Value);
((VisualElement)btnLeftArm).style.height = StyleLength.op_Implicit((float)Plugin.configUIHeight.Value);
((VisualElement)btnLeftArm).style.marginLeft = StyleLength.op_Implicit((float)Plugin.configSpaceBetweenArms.Value);
btnChest = UQueryExtensions.Q<Button>(val, "btnChest", (string)null);
if (btnChest == null)
{
logger.LogError((object)"btnChest not found.");
return;
}
((VisualElement)btnChest).style.width = StyleLength.op_Implicit((float)Plugin.configUIWidth.Value);
((VisualElement)btnChest).style.height = StyleLength.op_Implicit((float)Plugin.configUIHeight.Value);
btnLegs = UQueryExtensions.Q<Button>(val, "btnLegs", (string)null);
if (btnLegs == null)
{
logger.LogError((object)"btnLegs not found.");
return;
}
((VisualElement)btnLegs).style.width = StyleLength.op_Implicit((float)Plugin.configUIWidth.Value);
((VisualElement)btnLegs).style.height = StyleLength.op_Implicit((float)Plugin.configUIHeight.Value);
btnFeet = UQueryExtensions.Q<Button>(val, "btnFeet", (string)null);
if (btnFeet == null)
{
logger.LogError((object)"btnFeet not found.");
return;
}
((VisualElement)btnFeet).style.width = StyleLength.op_Implicit((float)Plugin.configUIWidth.Value);
((VisualElement)btnFeet).style.height = StyleLength.op_Implicit((float)Plugin.configUIHeight.Value);
logger.LogDebug((object)"Got Controls for UI");
btnHead.clickable.clicked += delegate
{
ButtonHeadClicked();
};
btnRightArm.clickable.clicked += delegate
{
ButtonRightArmClicked();
};
btnLeftArm.clickable.clicked += delegate
{
ButtonLeftArmClicked();
};
btnChest.clickable.clicked += delegate
{
ButtonChestClicked();
};
btnLegs.clickable.clicked += delegate
{
ButtonLegsClicked();
};
btnFeet.clickable.clicked += delegate
{
ButtonFeetClicked();
};
logger.LogDebug((object)"UIControllerScript: Start() complete");
}
private void Update()
{
//IL_000c: 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_007f: Unknown result type (might be due to invalid IL or missing references)
//IL_0085: Unknown result type (might be due to invalid IL or missing references)
if (veMain.style.display == StyleEnum<DisplayStyle>.op_Implicit((DisplayStyle)0) && (((ButtonControl)Keyboard.current.escapeKey).wasPressedThisFrame || ((ButtonControl)Keyboard.current.tabKey).wasPressedThisFrame))
{
HideUI();
}
if (WearableItemsInputs.Instance.OpenUIKey.WasPressedThisFrame() && Plugin.localPlayer.CheckConditionsForEmote())
{
if (veMain.style.display == StyleEnum<DisplayStyle>.op_Implicit((DisplayStyle)1))
{
ShowUI();
}
else
{
HideUI();
}
}
}
public void ShowUI()
{
//IL_001d: Unknown result type (might be due to invalid IL or missing references)
//IL_009c: Unknown result type (might be due to invalid IL or missing references)
//IL_0070: Unknown result type (might be due to invalid IL or missing references)
//IL_01de: Unknown result type (might be due to invalid IL or missing references)
//IL_0220: Unknown result type (might be due to invalid IL or missing references)
//IL_0130: Unknown result type (might be due to invalid IL or missing references)
//IL_0104: Unknown result type (might be due to invalid IL or missing references)
//IL_02be: Unknown result type (might be due to invalid IL or missing references)
//IL_0292: Unknown result type (might be due to invalid IL or missing references)
//IL_01b0: Unknown result type (might be due to invalid IL or missing references)
//IL_0184: Unknown result type (might be due to invalid IL or missing references)
//IL_0340: Unknown result type (might be due to invalid IL or missing references)
//IL_0314: Unknown result type (might be due to invalid IL or missing references)
//IL_03c2: Unknown result type (might be due to invalid IL or missing references)
//IL_0396: Unknown result type (might be due to invalid IL or missing references)
logger.LogDebug((object)"Showing UI");
veMain.style.display = StyleEnum<DisplayStyle>.op_Implicit((DisplayStyle)0);
if ((Object)(object)HeadItem != (Object)null)
{
((TextElement)btnHead).text = HeadItem.itemProperties.itemName;
((VisualElement)btnHead).style.backgroundImage = new StyleBackground(HeadItem.itemProperties.itemIcon);
}
else
{
((TextElement)btnHead).text = "Head";
((VisualElement)btnHead).style.backgroundImage = StyleBackground.op_Implicit((Texture2D)null);
}
if ((Object)(object)BothArmsItem == (Object)null)
{
if ((Object)(object)RightArmItem != (Object)null)
{
((TextElement)btnRightArm).text = RightArmItem.itemProperties.itemName;
((VisualElement)btnRightArm).style.backgroundImage = new StyleBackground(RightArmItem.itemProperties.itemIcon);
}
else
{
((TextElement)btnRightArm).text = "Arm";
((VisualElement)btnRightArm).style.backgroundImage = StyleBackground.op_Implicit((Texture2D)null);
}
if ((Object)(object)LeftArmItem != (Object)null)
{
((TextElement)btnLeftArm).text = LeftArmItem.itemProperties.itemName;
((VisualElement)btnLeftArm).style.backgroundImage = new StyleBackground(LeftArmItem.itemProperties.itemIcon);
}
else
{
((TextElement)btnLeftArm).text = "Arm";
((VisualElement)btnLeftArm).style.backgroundImage = StyleBackground.op_Implicit((Texture2D)null);
}
}
else
{
((VisualElement)btnLeftArm).style.backgroundImage = new StyleBackground(BothArmsItem.itemProperties.itemIcon);
((TextElement)btnLeftArm).text = BothArmsItem.itemProperties.itemName;
((VisualElement)btnRightArm).style.backgroundImage = new StyleBackground(BothArmsItem.itemProperties.itemIcon);
((TextElement)btnRightArm).text = BothArmsItem.itemProperties.itemName;
}
if ((Object)(object)ChestItem != (Object)null)
{
((TextElement)btnChest).text = ChestItem.itemProperties.itemName;
((VisualElement)btnChest).style.backgroundImage = new StyleBackground(ChestItem.itemProperties.itemIcon);
}
else
{
((TextElement)btnChest).text = "Chest";
((VisualElement)btnChest).style.backgroundImage = StyleBackground.op_Implicit((Texture2D)null);
}
if ((Object)(object)LegsItem != (Object)null)
{
((TextElement)btnLegs).text = LegsItem.itemProperties.itemName;
((VisualElement)btnLegs).style.backgroundImage = new StyleBackground(LegsItem.itemProperties.itemIcon);
}
else
{
((TextElement)btnLegs).text = "Legs";
((VisualElement)btnLegs).style.backgroundImage = StyleBackground.op_Implicit((Texture2D)null);
}
if ((Object)(object)FeetItem != (Object)null)
{
((TextElement)btnFeet).text = FeetItem.itemProperties.itemName;
((VisualElement)btnFeet).style.backgroundImage = new StyleBackground(FeetItem.itemProperties.itemIcon);
}
else
{
((TextElement)btnFeet).text = "Feet";
((VisualElement)btnFeet).style.backgroundImage = StyleBackground.op_Implicit((Texture2D)null);
}
Cursor.lockState = (CursorLockMode)0;
Cursor.visible = true;
StartOfRound.Instance.localPlayerController.disableMoveInput = true;
StartOfRound.Instance.localPlayerController.disableInteract = true;
StartOfRound.Instance.localPlayerController.disableLookInput = true;
}
public void HideUI()
{
//IL_001d: Unknown result type (might be due to invalid IL or missing references)
logger.LogDebug((object)"Hiding UI");
veMain.style.display = StyleEnum<DisplayStyle>.op_Implicit((DisplayStyle)1);
Cursor.lockState = (CursorLockMode)1;
Cursor.visible = false;
StartOfRound.Instance.localPlayerController.disableMoveInput = false;
StartOfRound.Instance.localPlayerController.disableInteract = false;
StartOfRound.Instance.localPlayerController.disableLookInput = false;
}
private void ButtonHeadClicked()
{
logger.LogDebug((object)"Button Head clicked");
if (!((Object)(object)HeadItem == (Object)null))
{
((Component)HeadItem).GetComponent<WearableItem>().UnWear();
HideUI();
}
}
private void ButtonRightArmClicked()
{
logger.LogDebug((object)"Button Right Arm clicked");
if ((Object)(object)BothArmsItem == (Object)null)
{
if (!((Object)(object)RightArmItem == (Object)null))
{
((Component)RightArmItem).GetComponent<WearableItem>().UnWear();
HideUI();
}
}
else
{
((Component)BothArmsItem).GetComponent<WearableItem>().UnWear();
HideUI();
}
}
private void ButtonLeftArmClicked()
{
logger.LogDebug((object)"Button Left Arm clicked");
if ((Object)(object)BothArmsItem == (Object)null)
{
if (!((Object)(object)LeftArmItem == (Object)null))
{
((Component)LeftArmItem).GetComponent<WearableItem>().UnWear();
HideUI();
}
}
else
{
((Component)BothArmsItem).GetComponent<WearableItem>().UnWear();
HideUI();
}
}
private void ButtonChestClicked()
{
logger.LogDebug((object)"Button Chest clicked");
if (!((Object)(object)ChestItem == (Object)null))
{
((Component)ChestItem).GetComponent<WearableItem>().UnWear();
HideUI();
}
}
private void ButtonLegsClicked()
{
logger.LogDebug((object)"Button Legs clicked");
if (!((Object)(object)LegsItem == (Object)null))
{
((Component)LegsItem).GetComponent<WearableItem>().UnWear();
HideUI();
}
}
private void ButtonFeetClicked()
{
logger.LogDebug((object)"Button Feet clicked");
if (!((Object)(object)FeetItem == (Object)null))
{
((Component)FeetItem).GetComponent<WearableItem>().UnWear();
HideUI();
}
}
}
public static class MyPluginInfo
{
public const string PLUGIN_GUID = "Snowlance.WearableItemsAPI";
public const string PLUGIN_NAME = "WearableItemsAPI";
public const string PLUGIN_VERSION = "0.1.9";
}
}
namespace Snowlance.WearableItemsAPI.NetcodePatcher
{
[AttributeUsage(AttributeTargets.Module)]
internal class NetcodePatchedAssemblyAttribute : Attribute
{
}
}