using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; 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 HarmonyLib; using MenuLib; using MenuLib.MonoBehaviors; using Microsoft.CodeAnalysis; using MonoMod.RuntimeDetour; using Photon.Pun; using Sirenix.Utilities; using TMPro; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: IgnoresAccessChecksTo("Assembly-CSharp-firstpass")] [assembly: IgnoresAccessChecksTo("Assembly-CSharp")] [assembly: IgnoresAccessChecksTo("Autodesk.Fbx")] [assembly: IgnoresAccessChecksTo("Discord.Sdk")] [assembly: IgnoresAccessChecksTo("Domain_Reload")] [assembly: IgnoresAccessChecksTo("Facepunch.Steamworks.Win64")] [assembly: IgnoresAccessChecksTo("FbxBuildTestAssets")] [assembly: IgnoresAccessChecksTo("Klattersynth")] [assembly: IgnoresAccessChecksTo("Photon3Unity3D")] [assembly: IgnoresAccessChecksTo("PhotonChat")] [assembly: IgnoresAccessChecksTo("PhotonRealtime")] [assembly: IgnoresAccessChecksTo("PhotonUnityNetworking")] [assembly: IgnoresAccessChecksTo("PhotonUnityNetworking.Utilities")] [assembly: IgnoresAccessChecksTo("PhotonVoice.API")] [assembly: IgnoresAccessChecksTo("PhotonVoice")] [assembly: IgnoresAccessChecksTo("PhotonVoice.PUN")] [assembly: IgnoresAccessChecksTo("SingularityGroup.HotReload.Runtime.Public")] [assembly: IgnoresAccessChecksTo("Sirenix.OdinInspector.Attributes")] [assembly: IgnoresAccessChecksTo("Sirenix.OdinInspector.Modules.Unity.Addressables")] [assembly: IgnoresAccessChecksTo("Sirenix.OdinInspector.Modules.UnityLocalization")] [assembly: IgnoresAccessChecksTo("Sirenix.Serialization.Config")] [assembly: IgnoresAccessChecksTo("Sirenix.Serialization")] [assembly: IgnoresAccessChecksTo("Sirenix.Utilities")] [assembly: IgnoresAccessChecksTo("Unity.Addressables")] [assembly: IgnoresAccessChecksTo("Unity.AI.Navigation")] [assembly: IgnoresAccessChecksTo("Unity.Burst")] [assembly: IgnoresAccessChecksTo("Unity.Burst.Unsafe")] [assembly: IgnoresAccessChecksTo("Unity.Collections")] [assembly: IgnoresAccessChecksTo("Unity.Collections.LowLevel.ILSupport")] [assembly: IgnoresAccessChecksTo("Unity.Formats.Fbx.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.InputSystem")] [assembly: IgnoresAccessChecksTo("Unity.InputSystem.ForUI")] [assembly: IgnoresAccessChecksTo("Unity.InternalAPIEngineBridge.013")] [assembly: IgnoresAccessChecksTo("Unity.Localization")] [assembly: IgnoresAccessChecksTo("Unity.Mathematics")] [assembly: IgnoresAccessChecksTo("Unity.MemoryProfiler")] [assembly: IgnoresAccessChecksTo("Unity.Postprocessing.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.Profiling.Core")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.Core.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.Core.ShaderLibrary")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.ShaderGraph.ShaderGraphLibrary")] [assembly: IgnoresAccessChecksTo("Unity.ResourceManager")] [assembly: IgnoresAccessChecksTo("Unity.ScriptableBuildPipeline")] [assembly: IgnoresAccessChecksTo("Unity.Splines")] [assembly: IgnoresAccessChecksTo("Unity.TextMeshPro")] [assembly: IgnoresAccessChecksTo("Unity.Timeline")] [assembly: IgnoresAccessChecksTo("Unity.VisualScripting.Antlr3.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.VisualScripting.Core")] [assembly: IgnoresAccessChecksTo("Unity.VisualScripting.Flow")] [assembly: IgnoresAccessChecksTo("Unity.VisualScripting.State")] [assembly: IgnoresAccessChecksTo("UnityEngine.ARModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.NVIDIAModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.UI")] [assembly: IgnoresAccessChecksTo("websocket-sharp")] [assembly: AssemblyCompany("linkoid")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("0.6.1.0")] [assembly: AssemblyInformationalVersion("0.6.1+6a6f098fe79d300199861e5740bb7f2db34c9041")] [assembly: AssemblyProduct("SemibotSliders")] [assembly: AssemblyTitle("SemibotSliders")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("0.6.1.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; } } internal static class IsExternalInit { } } namespace Linkoid.Repo.SemibotSliders { internal class BodySliderMenu { public REPOPopupPage? page; private FieldInfo[] fields; private ScaleSettings scaleSettings = ScaleSettings.Default; private REPOAvatarPreview? avatarPreview; private Dictionary currentSliders; public BodySliderMenu() { fields = typeof(ScaleSettings).GetFields(BindingFlags.Instance | BindingFlags.Public); } public void Open() { //IL_004e: 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_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00cd: Unknown result type (might be due to invalid IL or missing references) //IL_00d3: Unknown result type (might be due to invalid IL or missing references) //IL_0115: Unknown result type (might be due to invalid IL or missing references) //IL_0129: Unknown result type (might be due to invalid IL or missing references) //IL_012e: 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_0144: Unknown result type (might be due to invalid IL or missing references) //IL_0149: Unknown result type (might be due to invalid IL or missing references) //IL_0174: Unknown result type (might be due to invalid IL or missing references) //IL_0176: Unknown result type (might be due to invalid IL or missing references) //IL_0195: Unknown result type (might be due to invalid IL or missing references) //IL_01d8: Unknown result type (might be due to invalid IL or missing references) scaleSettings = UserConfigModel.Instance.GetScaleSettings(); page = MenuAPI.CreateREPOPopupPage("Semibot Sliders", (PresetSide)0, false, true, 0f); MenuAPI.CreateREPOButton("Confirm", (Action)Close, ((Component)page).transform, new Vector2(66f, 18f)); MenuAPI.CreateREPOButton("Revert", (Action)Revert, ((Component)page).transform, new Vector2(260f, 18f)); REPOButton val = MenuAPI.CreateREPOButton("Reset to Defaults", (Action)Reset, ((Component)page).transform, default(Vector2)); page.scrollView.popupPage.AddElementToScrollView(((REPOElement)val).rectTransform, default(Vector2), 0f, 0f); currentSliders = new Dictionary(); FieldInfo[] array = fields; foreach (FieldInfo field in array) { Vector3 min = Vector3.one * SemibotSliders.ConfigModel.ScaleMinimum.Value; Vector3 value2 = Vector3.one * SemibotSliders.ConfigModel.ScaleMaximum.Value; REPOVector3SliderModel value3 = new REPOVector3SliderModel(field.Name, "", delegate(Vector3 value) { //IL_000c: Unknown result type (might be due to invalid IL or missing references) OnValueChanged(field, value); }, page.scrollView, min, value2, 2, (Vector3)field.GetValue(scaleSettings)); currentSliders.Add(field, value3); } avatarPreview = MenuAPI.CreateREPOAvatarPreview(((Component)page).transform, new Vector2(476f, 36f), false, (Color?)null); page.OpenPage(false); } public void Revert() { scaleSettings = UserConfigModel.Instance.GetScaleSettings(); ApplyScaleSettingsToSliders(); ApplyScaleSettingsToMenuCharacter(); } public void Reset() { scaleSettings = ScaleSettings.Default; ApplyScaleSettingsToSliders(); ApplyScaleSettingsToMenuCharacter(); } public void Close() { UserConfigModel.Instance.SaveScaleSettings(scaleSettings); PlayerController instance = PlayerController.instance; bool? obj; PlayerAvatarSlidersSync playerAvatarSlidersSync = default(PlayerAvatarSlidersSync); if (instance == null) { obj = null; } else { GameObject playerAvatar = instance.playerAvatar; obj = ((playerAvatar != null) ? new bool?(playerAvatar.TryGetComponent(ref playerAvatarSlidersSync)) : null); } bool? flag = obj; if (flag.GetValueOrDefault()) { playerAvatarSlidersSync.SetScaleSettings(scaleSettings); } REPOPopupPage? obj2 = page; if (obj2 != null) { obj2.ClosePage(true); } } private void OnValueChanged(FieldInfo field, Vector3 value) { //IL_000e: Unknown result type (might be due to invalid IL or missing references) object obj = scaleSettings; field.SetValue(obj, value); scaleSettings = (ScaleSettings)obj; ApplyScaleSettingsToMenuCharacter(); } private void ApplyScaleSettingsToSliders() { //IL_0039: Unknown result type (might be due to invalid IL or missing references) foreach (var (fieldInfo2, rEPOVector3SliderModel2) in currentSliders) { rEPOVector3SliderModel2.SetValue((Vector3)fieldInfo2.GetValue(scaleSettings), invokeCallback: false); } } private void ApplyScaleSettingsToMenuCharacter() { PlayerAvatarSliders component = ((Component)avatarPreview.playerAvatarVisuals).GetComponent(); component.ScaleSettings = scaleSettings; } } internal static class GameObjectExtensions { public static GameObject? Find(this GameObject parent, string name) { Transform obj = parent.transform.Find(name); if (obj == null) { return null; } return ((Component)obj).gameObject; } public static GameObject? FindFirstChild(this GameObject parent, string name) { Transform? obj = parent.transform.FindFirstChild(name); if (obj == null) { return null; } return ((Component)obj).gameObject; } public static Transform? FindFirstChild(this Transform parent, string name) { Queue queue = new Queue(); queue.Enqueue(parent); while (queue.Count > 0) { parent = queue.Dequeue(); Transform val = parent.Find(name); if ((Object)(object)val != (Object)null) { return val; } int childCount = parent.childCount; for (int i = 0; i < childCount; i++) { queue.Enqueue(parent.GetChild(i)); } } return null; } } internal static class MenuAPIExtended { private static readonly Dictionary sharedMenuBuilderDelegates = new Dictionary(); public static void AddElementTo(BuilderDelegate builderDelegate) where T : MonoBehaviour { //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Expected O, but got Unknown //IL_0097: Unknown result type (might be due to invalid IL or missing references) Type typeFromHandle = typeof(T); BuilderDelegate sharedDelegate; bool flag = sharedMenuBuilderDelegates.TryGetValue(typeFromHandle, out sharedDelegate); sharedDelegate = (BuilderDelegate)Delegate.Combine((Delegate?)(object)sharedDelegate, (Delegate?)(object)builderDelegate); if (!flag) { MethodInfo methodInfo = AccessTools.Method(typeFromHandle, "Start", (Type[])null, (Type[])null) ?? throw new InvalidOperationException("Cannot add element to type `" + typeFromHandle.Name + "` (has no Start method)"); SemibotSliders.Logger.LogDebug((object)("Hooking `" + typeFromHandle.Name + ".Start`")); new Hook((MethodBase)methodInfo, (Delegate)new Action, T>(MenuPage_StartHook)); sharedMenuBuilderDelegates.Add(typeFromHandle, sharedDelegate); } void MenuPage_StartHook(Action orig, T self) { orig(self); BuilderDelegate obj = sharedDelegate; if (obj != null) { obj.Invoke(((Component)(object)self).transform); } } } } internal record ModConfigModel(ConfigFile ConfigFile) { public const string GeneralSliderConstraintsSection = "GeneralSliderConstraints"; public readonly ConfigEntry ScaleMinimum = ConfigFile.Bind("GeneralSliderConstraints", "ScaleMinimum", 0f, new ConfigDescription("Smallest applyable scale factor for body sliders", (AcceptableValueBase)(object)new AcceptableValueRange(0f, 0.99f), Array.Empty())); public readonly ConfigEntry ScaleMaximum = ConfigFile.Bind("GeneralSliderConstraints", "ScaleMaximum", 3f, new ConfigDescription("Largest applyable scale factor for body sliders", (AcceptableValueBase)(object)new AcceptableValueRange(1.01f, 3f), Array.Empty())); [CompilerGenerated] protected ModConfigModel(ModConfigModel original) { ConfigFile = original.ConfigFile; ScaleMinimum = original.ScaleMinimum; ScaleMaximum = original.ScaleMaximum; } } [HarmonyPatch] internal class PlayerAvatarSliders : MonoBehaviour { private PlayerAvatarVisuals playerAvatarVisuals; private Transform? legLBot; private Transform? legLTop; private Transform? legRBot; private Transform? legRTop; private Transform? bodyBot; private Transform? bodyBotScale; private Transform? bodyTop; private Transform? bodyTopScale; private Transform? armL; private Transform? armR; private Transform? headBot; private Transform? headTop; private Transform? eyeL; private Transform? eyeR; private ScaleSettings _scaleSettings = ScaleSettings.Default; private bool isDirty = true; private ScaleSettings appliedScaleSettings = ScaleSettings.Default; public ScaleSettings ScaleSettings { get { return _scaleSettings; } set { _scaleSettings = value; isDirty = true; } } [HarmonyPostfix] [HarmonyPatch(typeof(PlayerAvatarVisuals), "Start")] private static void Start_Postfix(PlayerAvatarVisuals __instance) { ((Component)__instance).gameObject.AddComponent(); } private void Awake() { playerAvatarVisuals = ((Component)this).GetComponent(); FindAvatarTransforms(); } private void Start() { if (playerAvatarVisuals.isMenuAvatar) { MenuAvatarGetSliderSettingsFromRealAvatar(); } } private void Update() { if (isDirty) { ApplyAbsoluteScales(); isDirty = false; } } private void LateUpdate() { ApplyRelativeScales(); } internal void SetDirty() { isDirty = true; } private void FindAvatarTransforms() { GameObject? obj = ((Component)this).gameObject.FindFirstChild("ANIM LEG L BOT"); legLBot = ((obj != null) ? obj.transform : null); GameObject? obj2 = ((Component)this).gameObject.FindFirstChild("ANIM LEG L TOP"); legLTop = ((obj2 != null) ? obj2.transform : null); GameObject? obj3 = ((Component)this).gameObject.FindFirstChild("ANIM LEG R BOT"); legRBot = ((obj3 != null) ? obj3.transform : null); GameObject? obj4 = ((Component)this).gameObject.FindFirstChild("ANIM LEG R TOP"); legRTop = ((obj4 != null) ? obj4.transform : null); GameObject? obj5 = ((Component)this).gameObject.FindFirstChild("ANIM BODY BOT"); bodyBot = ((obj5 != null) ? obj5.transform : null); GameObject? obj6 = ((Component)this).gameObject.FindFirstChild("ANIM BODY BOT SCALE"); bodyBotScale = ((obj6 != null) ? obj6.transform : null); GameObject? obj7 = ((Component)this).gameObject.FindFirstChild("ANIM BODY TOP"); bodyTop = ((obj7 != null) ? obj7.transform : null); GameObject? obj8 = ((Component)this).gameObject.FindFirstChild("ANIM BODY TOP SCALE"); bodyTopScale = ((obj8 != null) ? obj8.transform : null); GameObject? obj9 = ((Component)this).gameObject.FindFirstChild("ANIM ARM L"); armL = ((obj9 != null) ? obj9.transform : null); GameObject? obj10 = ((Component)this).gameObject.FindFirstChild("ANIM ARM R"); armR = ((obj10 != null) ? obj10.transform : null); GameObject? obj11 = ((Component)this).gameObject.FindFirstChild("ANIM HEAD BOT"); headBot = ((obj11 != null) ? obj11.transform : null); GameObject? obj12 = ((Component)this).gameObject.FindFirstChild("ANIM HEAD TOP"); headTop = ((obj12 != null) ? obj12.transform : null); GameObject? obj13 = ((Component)this).gameObject.FindFirstChild("ANIM EYE LEFT"); eyeL = ((obj13 != null) ? obj13.transform : null); GameObject? obj14 = ((Component)this).gameObject.FindFirstChild("ANIM EYE RIGHT"); eyeR = ((obj14 != null) ? obj14.transform : null); } private void MenuAvatarGetSliderSettingsFromRealAvatar() { PlayerAvatarVisuals val = (playerAvatarVisuals?.playerAvatar ?? PlayerAvatar.instance)?.playerAvatarVisuals; if ((Object)(object)val == (Object)null || val.isMenuAvatar || !((Behaviour)val).isActiveAndEnabled || val.playerAvatar.steamID == null) { val = null; } PlayerAvatarSliders playerAvatarSliders = default(PlayerAvatarSliders); if (val != null && ((Component)val).TryGetComponent(ref playerAvatarSliders)) { ScaleSettings = playerAvatarSliders.ScaleSettings; return; } ScaleSettings = UserConfigModel.Instance.GetScaleSettings(); SemibotSliders.Logger.LogDebug((object)$"Loaded ScaleSettings from UserConfigModel for {this}"); } private void ApplyAbsoluteScales() { //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0054: 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_0080: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00c2: 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_00ee: 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) appliedScaleSettings = ScaleSettings.Clamp(SemibotSliders.ConfigModel.ScaleMinimum.Value, SemibotSliders.ConfigModel.ScaleMaximum.Value); Set(bodyBot, appliedScaleSettings.BodyBot); Set(bodyTop, appliedScaleSettings.BodyTop); Set(headBot, appliedScaleSettings.HeadBot); Set(headTop, appliedScaleSettings.HeadTop); Set(eyeL, appliedScaleSettings.EyeL); Set(eyeR, appliedScaleSettings.EyeR); Set(armL, appliedScaleSettings.ArmL); Set(armR, appliedScaleSettings.ArmR); Set(bodyBotScale, appliedScaleSettings.BodyBotScale); Set(bodyTopScale, appliedScaleSettings.BodyTopScale); static void Set(Transform? transform, Vector3 scale) { //IL_000b: Unknown result type (might be due to invalid IL or missing references) if (!((Object)(object)transform == (Object)null)) { transform.localScale = scale; } } } private void ApplyRelativeScales() { //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) Set(legLBot, appliedScaleSettings.LegLBot); Set(legLTop, appliedScaleSettings.LegLTop); Set(legRBot, appliedScaleSettings.LegRBot); Set(legRTop, appliedScaleSettings.LegRTop); static void Set(Transform? transform, Vector3 scale) { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) if (!((Object)(object)transform == (Object)null)) { Vector3 localScale = transform.localScale; ((Vector3)(ref localScale)).Scale(scale); transform.localScale = localScale; } } } } [HarmonyPatch] internal class PlayerAvatarSlidersSync : MonoBehaviour { [CompilerGenerated] private sealed class d__9 : IEnumerator, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public PlayerAvatarSlidersSync <>4__this; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__9(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { int num = <>1__state; PlayerAvatarSlidersSync playerAvatarSlidersSync = <>4__this; switch (num) { default: return false; case 0: <>1__state = -1; break; case 1: <>1__state = -1; break; } if (playerAvatarSlidersSync.playerAvatar.steamID == null) { <>2__current = null; <>1__state = 1; return true; } if (SemiFunc.IsMultiplayer() || !SemiFunc.IsMainMenu()) { playerAvatarSlidersSync.SetScaleSettings(UserConfigModel.Instance.GetScaleSettings()); } return false; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } private PhotonView photonView; private PlayerAvatar playerAvatar; private PlayerAvatarSliders playerAvatarSliders; private bool isDirty; private ScaleSettings scaleSettings = ScaleSettings.Default; [HarmonyPostfix] [HarmonyPatch(typeof(PlayerAvatar), "Awake")] private static void Awake_Postfix(PlayerAvatar __instance) { ((Component)__instance).gameObject.AddComponent(); } private void Awake() { photonView = ((Component)this).GetComponent(); playerAvatar = ((Component)this).GetComponent(); } private void Start() { playerAvatarSliders = ((Component)playerAvatar.playerAvatarVisuals).GetComponent(); if (!SemiFunc.IsMultiplayer() || photonView.IsMine) { ((MonoBehaviour)this).StartCoroutine(WaitForSteamID()); SetScaleSettings(UserConfigModel.Instance.GetScaleSettings()); } } private void Update() { ApplyScaleSettingsIfDirty(); } [IteratorStateMachine(typeof(d__9))] private IEnumerator WaitForSteamID() { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__9(0) { <>4__this = this }; } public void SetScaleSettings(ScaleSettings scaleSettings) { if (!GameManager.Multiplayer()) { SemibotSliders_SetScaleSettingsRPC(scaleSettings.ToArray()); return; } photonView.RPC("SemibotSliders_SetScaleSettingsRPC", (RpcTarget)3, new object[1] { scaleSettings.ToArray() }); } [MethodImpl(MethodImplOptions.NoInlining)] [PunRPC] public void SemibotSliders_SetScaleSettingsRPC(Vector3[] scaleSettingsArray) { scaleSettings = ScaleSettings.FromArray(scaleSettingsArray); isDirty = true; } private void ApplyScaleSettingsIfDirty() { if (isDirty && !((Object)(object)playerAvatarSliders == (Object)null)) { playerAvatarSliders.ScaleSettings = scaleSettings; isDirty = false; } } } internal class REPOVector3SliderModel { public Action? onValueChanged; private Vector3 defaultValue; private REPOLabel label; private REPOSlider xSlider; private REPOSlider ySlider; private REPOSlider zSlider; private Vector3 _min = Vector3.zero; private Vector3 _max = Vector3.one; private int _precision = 2; private float _precisionDecimal = 0.01f; public Vector3 min { get { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return _min; } set { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) _min = value; xSlider.min = _min.x; ySlider.min = _min.y; zSlider.min = _min.z; } } public Vector3 max { get { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return _max; } set { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) _max = value; xSlider.max = _max.x; ySlider.max = _max.y; zSlider.max = _max.z; } } public int precision { get { return _precision; } set { _precision = value; xSlider.precision = _precision; ySlider.precision = _precision; zSlider.precision = _precision; } } public float precisionDecimal { get { return _precisionDecimal; } set { _precisionDecimal = value; xSlider.precisionDecimal = _precisionDecimal; ySlider.precisionDecimal = _precisionDecimal; zSlider.precisionDecimal = _precisionDecimal; } } public Vector3 value { get { //IL_0021: Unknown result type (might be due to invalid IL or missing references) return new Vector3(xSlider.value, ySlider.value, zSlider.value); } set { //IL_0006: 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_0028: Unknown result type (might be due to invalid IL or missing references) xSlider.value = value.x; ySlider.value = value.y; zSlider.value = value.z; } } public REPOVector3SliderModel(string text, string description, Action onValueChanged, Transform parent, Vector3 min = default(Vector3), Vector3? max = null, int precision = 2, Vector3 defaultValue = default(Vector3)) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0030: 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_0053: Unknown result type (might be due to invalid IL or missing references) //IL_0059: 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) //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_00d2: 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_00d9: 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_00ee: Unknown result type (might be due to invalid IL or missing references) //IL_0121: Unknown result type (might be due to invalid IL or missing references) //IL_0127: Unknown result type (might be due to invalid IL or missing references) //IL_0128: 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_013d: Unknown result type (might be due to invalid IL or missing references) //IL_0161: Unknown result type (might be due to invalid IL or missing references) //IL_016b: Unknown result type (might be due to invalid IL or missing references) //IL_017e: Unknown result type (might be due to invalid IL or missing references) //IL_003f: 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_0047: Unknown result type (might be due to invalid IL or missing references) Vector3 valueOrDefault = max.GetValueOrDefault(); if (!max.HasValue) { valueOrDefault = Vector3.one; max = valueOrDefault; } label = MenuAPI.CreateREPOLabel(text, parent, default(Vector2)); xSlider = MenuAPI.CreateREPOSlider("x", "", (Action)OnInternalValueChanged, parent, default(Vector2), min.x, max.Value.x, precision, defaultValue.x, "", "", (BarBehavior)0); ySlider = MenuAPI.CreateREPOSlider("y", "", (Action)OnInternalValueChanged, parent, default(Vector2), min.y, max.Value.y, precision, defaultValue.y, "", "", (BarBehavior)0); zSlider = MenuAPI.CreateREPOSlider("z", description, (Action)OnInternalValueChanged, parent, default(Vector2), min.z, max.Value.z, precision, defaultValue.z, "", "", (BarBehavior)0); this.onValueChanged = onValueChanged; this.min = min; this.max = max.Value; this.precision = precision; SetValue(defaultValue, invokeCallback: false); } public REPOVector3SliderModel(string text, string description, Action onValueChanged, REPOScrollView scrollView, Vector3 min = default(Vector3), Vector3? max = null, int precision = 2, Vector3 defaultValue = default(Vector3)) : this(text, description, onValueChanged, (Transform)(object)scrollView.popupPage.menuScrollBox.scroller, min, max, precision, defaultValue) { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_003f: 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_0075: Unknown result type (might be due to invalid IL or missing references) //IL_007a: 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_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: Unknown result type (might be due to invalid IL or missing references) //IL_00e6: Unknown result type (might be due to invalid IL or missing references) scrollView.popupPage.AddElementToScrollView(((REPOElement)label).rectTransform, Vector2.op_Implicit(((Transform)((REPOElement)label).rectTransform).localPosition), 0f, 0f); scrollView.popupPage.AddElementToScrollView(((REPOElement)xSlider).rectTransform, Vector2.op_Implicit(((Transform)((REPOElement)xSlider).rectTransform).localPosition), 0f, 0f); scrollView.popupPage.AddElementToScrollView(((REPOElement)ySlider).rectTransform, Vector2.op_Implicit(((Transform)((REPOElement)ySlider).rectTransform).localPosition), 0f, 0f); scrollView.popupPage.AddElementToScrollView(((REPOElement)zSlider).rectTransform, Vector2.op_Implicit(((Transform)((REPOElement)zSlider).rectTransform).localPosition), 0f, 0f); } public void SetValue(Vector3 newValue, bool invokeCallback) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) xSlider.SetValue(newValue.x, invokeCallback); ySlider.SetValue(newValue.y, invokeCallback); zSlider.SetValue(newValue.z, invokeCallback); } private void OnInternalValueChanged(float _) { //IL_000c: Unknown result type (might be due to invalid IL or missing references) onValueChanged?.Invoke(value); } } [Serializable] internal struct ScaleSettings { public static readonly ScaleSettings Default = new ScaleSettings { LegLBot = Vector3.one, LegLTop = Vector3.one, LegRBot = Vector3.one, LegRTop = Vector3.one, BodyBot = Vector3.one, BodyBotScale = Vector3.one, BodyTop = Vector3.one, BodyTopScale = Vector3.one, ArmL = Vector3.one, ArmR = Vector3.one, HeadBot = Vector3.one, HeadTop = Vector3.one, EyeL = Vector3.one, EyeR = Vector3.one }; public Vector3 LegLBot; public Vector3 LegLTop; public Vector3 LegRBot; public Vector3 LegRTop; public Vector3 BodyBot; public Vector3 BodyBotScale; public Vector3 BodyTop; public Vector3 BodyTopScale; public Vector3 ArmL; public Vector3 ArmR; public Vector3 HeadBot; public Vector3 HeadTop; public Vector3 EyeL; public Vector3 EyeR; public ScaleSettings Clamp(float min, float max) { //IL_0001: 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) //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) return Clamp(Vector3.one * min, Vector3.one * max); } public ScaleSettings Clamp(Vector3 min, Vector3 max) { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0011: 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_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0053: 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_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0062: 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_006f: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_007b: 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_0088: Unknown result type (might be due to invalid IL or missing references) //IL_0089: 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_008f: 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_009c: 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_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: 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_00b0: 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_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: Unknown result type (might be due to invalid IL or missing references) //IL_00d3: 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_00d9: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Unknown result type (might be due to invalid IL or missing references) //IL_00df: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: 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_00ee: Unknown result type (might be due to invalid IL or missing references) //IL_00f3: Unknown result type (might be due to invalid IL or missing references) //IL_00fb: Unknown result type (might be due to invalid IL or missing references) //IL_0100: 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_0102: Unknown result type (might be due to invalid IL or missing references) //IL_0107: Unknown result type (might be due to invalid IL or missing references) //IL_010f: Unknown result type (might be due to invalid IL or missing references) //IL_0114: Unknown result type (might be due to invalid IL or missing references) //IL_0115: Unknown result type (might be due to invalid IL or missing references) //IL_0116: Unknown result type (might be due to invalid IL or missing references) //IL_011b: Unknown result type (might be due to invalid IL or missing references) ScaleSettings result = default(ScaleSettings); result.LegLBot = MathUtilities.Clamp(LegLBot, min, max); result.LegLTop = MathUtilities.Clamp(LegLTop, min, max); result.LegRBot = MathUtilities.Clamp(LegRBot, min, max); result.LegRTop = MathUtilities.Clamp(LegRTop, min, max); result.BodyBot = MathUtilities.Clamp(BodyBot, min, max); result.BodyBotScale = MathUtilities.Clamp(BodyBotScale, min, max); result.BodyTop = MathUtilities.Clamp(BodyTop, min, max); result.BodyTopScale = MathUtilities.Clamp(BodyTopScale, min, max); result.ArmL = MathUtilities.Clamp(ArmL, min, max); result.ArmR = MathUtilities.Clamp(ArmR, min, max); result.HeadBot = MathUtilities.Clamp(HeadBot, min, max); result.HeadTop = MathUtilities.Clamp(HeadTop, min, max); result.EyeL = MathUtilities.Clamp(EyeL, min, max); result.EyeR = MathUtilities.Clamp(EyeR, min, max); return result; } public Vector3[] ToArray() { //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_000f: 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_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003e: 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_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) //IL_0058: 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_0065: 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_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_0080: 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) //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_0093: 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_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Unknown result type (might be due to invalid IL or missing references) return (Vector3[])(object)new Vector3[14] { LegLBot, LegLTop, LegRBot, LegRTop, BodyBot, BodyBotScale, BodyTop, BodyTopScale, ArmL, ArmR, HeadBot, HeadTop, EyeL, EyeR }; } public static ScaleSettings FromArray(Vector3[] array) { //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_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_005f: 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_0071: 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_0083: 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_0095: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: 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) //IL_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: 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_00ea: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: Unknown result type (might be due to invalid IL or missing references) //IL_00fc: 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) int num = 0; ScaleSettings result = default(ScaleSettings); result.LegLBot = array[num++]; result.LegLTop = array[num++]; result.LegRBot = array[num++]; result.LegRTop = array[num++]; result.BodyBot = array[num++]; result.BodyBotScale = array[num++]; result.BodyTop = array[num++]; result.BodyTopScale = array[num++]; result.ArmL = array[num++]; result.ArmR = array[num++]; result.HeadBot = array[num++]; result.HeadTop = array[num++]; result.EyeL = array[num++]; result.EyeR = array[num++]; return result; } } [BepInPlugin("Linkoid.Repo.SemibotSliders", "Semibot Sliders", "0.6")] [BepInDependency("nickklmao.menulib", "2.5")] public class SemibotSliders : BaseUnityPlugin { private BodySliderMenu bodySliderMenu = new BodySliderMenu(); internal static SemibotSliders Instance { get; private set; } internal static ManualLogSource Logger => Instance._logger; private ManualLogSource _logger => ((BaseUnityPlugin)this).Logger; internal Harmony? Harmony { get; set; } internal static ModConfigModel ConfigModel { get; private set; } private void Awake() { Instance = this; ((Component)this).gameObject.transform.parent = null; ((Object)((Component)this).gameObject).hideFlags = (HideFlags)61; ConfigModel = new ModConfigModel(((BaseUnityPlugin)this).Config); ((BaseUnityPlugin)this).Config.SettingChanged += OnConfigSettingChanged; UserConfigModel.InitGlobalUserConfig(); Patch(); Logger.LogInfo((object)$"{((BaseUnityPlugin)this).Info.Metadata.GUID} v{((BaseUnityPlugin)this).Info.Metadata.Version} has loaded!"); } private void Start() { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Expected O, but got Unknown Logger.LogMessage((object)"START!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); MenuAPIExtended.AddElementTo((BuilderDelegate)delegate(Transform parent) { //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0064: 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_009d: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: 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) Logger.LogMessage((object)"BUILDER!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); MenuPageCosmetics menuPageCosmetics = ((Component)parent).GetComponent(); REPOButton val = MenuAPI.CreateREPOButton("Semibot Sliders", (Action)delegate { menuPageCosmetics.ConfirmButton(); bodySliderMenu.Open(); }, parent, Vector2.op_Implicit(new Vector3(160f, 359.5f, 0f))); val.overrideButtonSize = new Vector2(81f, 28f); val.menuButton.colorClick = Color.white; val.menuButton.colorHover = new Color(1f, 0.9022f, 0f, 1f); val.menuButton.colorNormal = new Color(1f, 0.594f, 0f, 1f); val.menuButton.customColors = true; ((TMP_Text)val.menuButton.buttonText).margin = new Vector4(5f, 0f, 5f, 0f); ((TMP_Text)val.menuButton.buttonText).enableAutoSizing = true; ((TMP_Text)val.menuButton.buttonText).characterWidthAdjustment = 25f; }); } internal void Patch() { //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Expected O, but got Unknown //IL_0025: Expected O, but got Unknown if (Harmony == null) { Harmony val = new Harmony(((BaseUnityPlugin)this).Info.Metadata.GUID); Harmony val2 = val; Harmony = val; } Harmony.PatchAll(); } internal void Unpatch() { Harmony? harmony = Harmony; if (harmony != null) { harmony.UnpatchSelf(); } } private void OnConfigSettingChanged(object sender, SettingChangedEventArgs e) { PlayerAvatarSliders[] array = Object.FindObjectsOfType(); foreach (PlayerAvatarSliders playerAvatarSliders in array) { playerAvatarSliders.SetDirty(); } } } internal class UserConfigModel { public readonly ConfigFile ConfigFile; public const string ScaleSettingsSection = "ScaleSettings"; private readonly IReadOnlyDictionary ScaleSettingsEntries; public static UserConfigModel Instance { get; private set; } internal static void InitGlobalUserConfig() { //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Expected O, but got Unknown string text = Application.persistentDataPath + "/REPOModData/Linkoid.Repo.SemibotSliders.User.cfg"; ConfigFile configFile = new ConfigFile(text, true, ((BaseUnityPlugin)SemibotSliders.Instance).Info.Metadata); Instance = new UserConfigModel(configFile); } private UserConfigModel(ConfigFile configFile) { //IL_004e: Unknown result type (might be due to invalid IL or missing references) ConfigFile = configFile; Dictionary dictionary = new Dictionary(); FieldInfo[] fields = typeof(ScaleSettings).GetFields(BindingFlags.Instance | BindingFlags.Public); foreach (FieldInfo fieldInfo in fields) { ConfigEntry value = ConfigFile.Bind("ScaleSettings", fieldInfo.Name, (Vector3)fieldInfo.GetValue(ScaleSettings.Default), (ConfigDescription)null); dictionary.Add(fieldInfo, (ConfigEntryBase)(object)value); } ScaleSettingsEntries = dictionary; } public ScaleSettings GetScaleSettings() { object obj = default(ScaleSettings); foreach (var (fieldInfo2, val2) in ScaleSettingsEntries) { fieldInfo2.SetValue(obj, val2.BoxedValue); } return (ScaleSettings)obj; } public void SaveScaleSettings(ScaleSettings scaleSettings) { ConfigFile.SaveOnConfigSet = false; try { foreach (var (fieldInfo2, val2) in ScaleSettingsEntries) { val2.BoxedValue = fieldInfo2.GetValue(scaleSettings); } } finally { ConfigFile.SaveOnConfigSet = true; } ConfigFile.Save(); } } }