Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of LockAllCosmetics v4.0.1
LockAllCosmetics.dll
Decompiled a day agousing 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 Microsoft.CodeAnalysis; using TMPro; using UnityEngine; using UnityEngine.UI; [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("")] [assembly: AssemblyCompany("REPOJP")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("zabuMod")] [assembly: AssemblyTitle("zabuMod")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace REPOJP.LockAllCosmetics { [BepInPlugin("REPOJP.LockAllCosmetics", "LockAllCosmetics", "4.0.2")] public class LockAllCosmeticsPlugin : BaseUnityPlugin { private enum LockAction { None, LockUnusedCosmetics, LockAllCosmetics } public const string PluginGuid = "REPOJP.LockAllCosmetics"; public const string PluginName = "LockAllCosmetics"; public const string PluginVersion = "4.0.2"; private const KeyCode LockUnusedKey = 290; private const KeyCode LockAllKey = 291; private const float ProgressMax = 1f; private const float ProgressMin = 0f; private const float ProgressIncreaseStart = 0.13f; private const float ProgressIncreaseEnd = 0.075f; private const float ProgressRecoveryPerSecond = 0.3f; private const float DoublePressWindowSeconds = 1f; private const float MinimumUiVisibleSeconds = 3f; private const float SuccessCooldownSeconds = 5f; private const float FailureCooldownSeconds = 2f; private const float CompletionMessageSeconds = 3f; private const float BarWidth = 560f; private const float BarHeight = 26f; private const int CanvasSortingOrder = 32000; private static LockAllCosmeticsPlugin instance; private GameObject canvasObject = null; private Image blackOverlayImage = null; private RectTransform barFillRect = null; private TextMeshProUGUI titleText = null; private TextMeshProUGUI hintText = null; private TextMeshProUGUI subHintText = null; private TextMeshProUGUI percentText = null; private LockAction activeAction = LockAction.None; private float lockProgress = 0f; private float cooldownUntil = 0f; private float minimumUiVisibleUntil = 0f; private float lastF9PressTime = -999f; private float lastF10PressTime = -999f; private bool lockSequenceActive = false; private bool completionMessageActive = false; private float completionMessageUntil = 0f; private bool uiCreated = false; private void Awake() { try { if ((Object)(object)instance != (Object)null && (Object)(object)instance != (Object)(object)this) { Object.Destroy((Object)(object)((Component)this).gameObject); return; } instance = this; ((Component)this).transform.parent = null; ((Object)((Component)this).gameObject).hideFlags = (HideFlags)61; Object.DontDestroyOnLoad((Object)(object)((Component)this).gameObject); ((BaseUnityPlugin)this).Logger.LogInfo((object)"Loaded LockAllCosmetics 4.0.2. Double-press F9 or F10 within 1 second, then mash the same key."); } catch (Exception ex) { ((BaseUnityPlugin)this).Logger.LogError((object)("Failure: Awake\n" + ex)); } } private void Update() { try { UpdateCompletionMessage(); if (!completionMessageActive && !(Time.unscaledTime < cooldownUntil)) { bool keyDown = Input.GetKeyDown((KeyCode)290); bool keyDown2 = Input.GetKeyDown((KeyCode)291); ProcessActivationKey(keyDown, LockAction.LockUnusedCosmetics, ref lastF9PressTime); ProcessActivationKey(keyDown2, LockAction.LockAllCosmetics, ref lastF10PressTime); bool flag = (activeAction == LockAction.LockUnusedCosmetics && keyDown) || (activeAction == LockAction.LockAllCosmetics && keyDown2); if (lockSequenceActive && !flag) { RecoverProgress(); } if (lockSequenceActive) { UpdateLockUi(); } if (lockSequenceActive && lockProgress <= 0f && Time.unscaledTime >= minimumUiVisibleUntil) { CancelSequence(); } if (lockSequenceActive && lockProgress >= 1f) { ExecuteActiveAction(); } } } catch (Exception ex) { ((BaseUnityPlugin)this).Logger.LogError((object)("Failure: Update\n" + ex)); } } private void ProcessActivationKey(bool keyPressed, LockAction action, ref float lastPressTime) { if (!keyPressed) { return; } if (lockSequenceActive) { if (activeAction == action) { IncreaseProgress(); } return; } float unscaledTime = Time.unscaledTime; if (unscaledTime - lastPressTime > 1f) { lastPressTime = unscaledTime; return; } StartLockSequence(action); IncreaseProgress(); lastF9PressTime = -999f; lastF10PressTime = -999f; } private void StartLockSequence(LockAction action) { activeAction = action; lockSequenceActive = true; lockProgress = 0f; minimumUiVisibleUntil = Time.unscaledTime + 3f; EnsureLockUi(); UpdateUiTextForAction(); SetLockUiVisible(visible: true); } private void IncreaseProgress() { float num = Mathf.Clamp01(lockProgress); float num2 = Mathf.Lerp(0.13f, 0.075f, num); lockProgress += num2; if (lockProgress > 1f) { lockProgress = 1f; } } private void RecoverProgress() { lockProgress -= 0.3f * Time.unscaledDeltaTime; if (lockProgress < 0f) { lockProgress = 0f; } } private void ExecuteActiveAction() { if (activeAction == LockAction.LockUnusedCosmetics) { ExecuteLockUnusedCosmetics(); } else if (activeAction == LockAction.LockAllCosmetics) { ExecuteLockAllCosmetics(); } else { ResetSequence(2f); } } private void ExecuteLockAllCosmetics() { try { object staticInstance = GetStaticInstance("MetaManager"); if (!CanExecuteMetaOperation(staticInstance)) { ((BaseUnityPlugin)this).Logger.LogWarning((object)"Failure: MetaManager is not ready."); ResetSequence(2f); return; } if (!InvokeInstanceMethod(staticInstance, "Reset", new object[0])) { ((BaseUnityPlugin)this).Logger.LogWarning((object)"Failure: MetaManager.Reset was not found."); ResetSequence(2f); return; } ClearCurrentOutfitAndSetWhite(staticInstance); InvokeInstanceMethod(staticInstance, "Save", new object[0]); RefreshCosmeticState(staticInstance); RefreshCurrentCosmeticMenu(); ((BaseUnityPlugin)this).Logger.LogInfo((object)"Success: Locked all cosmetics and cleared outfit colors to white."); ShowCompletionMessage("Lock Complete", "All cosmetics are locked.", "Current outfit was removed. Colors were reset to white."); } catch (Exception ex) { ((BaseUnityPlugin)this).Logger.LogError((object)("Failure: ExecuteLockAllCosmetics\n" + ex)); ResetSequence(2f); } } private void ExecuteLockUnusedCosmetics() { try { object staticInstance = GetStaticInstance("MetaManager"); if (!CanExecuteMetaOperation(staticInstance)) { ((BaseUnityPlugin)this).Logger.LogWarning((object)"Failure: MetaManager is not ready."); ResetSequence(2f); return; } IList instanceListField = GetInstanceListField(staticInstance, "cosmeticUnlocks"); IList instanceListField2 = GetInstanceListField(staticInstance, "cosmeticPresets"); if (instanceListField == null) { ((BaseUnityPlugin)this).Logger.LogWarning((object)"Failure: cosmeticUnlocks field was not found."); ResetSequence(2f); return; } if (instanceListField2 == null) { ((BaseUnityPlugin)this).Logger.LogWarning((object)"Failure: cosmeticPresets field was not found."); ResetSequence(2f); return; } HashSet<int> presetCosmeticIndexSet = GetPresetCosmeticIndexSet(instanceListField2); int count = instanceListField.Count; int num = RemoveIntegersNotInSet(instanceListField, presetCosmeticIndexSet); RemoveIntegersNotInSet(GetInstanceListField(staticInstance, "cosmeticHistory"), presetCosmeticIndexSet); string text = EquipFirstPreset(staticInstance); RefreshCosmeticState(staticInstance); InvokeInstanceMethod(staticInstance, "Save", new object[0]); RefreshCurrentCosmeticMenu(); ((BaseUnityPlugin)this).Logger.LogInfo((object)("Success: Locked unused cosmetics. Locked=" + num + ", Kept=" + instanceListField.Count + ", Before=" + count + ", PresetUsed=" + presetCosmeticIndexSet.Count + ", " + text)); ShowCompletionMessage("Lock Complete", "Unused cosmetics are locked.", text + " Locked: " + num); } catch (Exception ex) { ((BaseUnityPlugin)this).Logger.LogError((object)("Failure: ExecuteLockUnusedCosmetics\n" + ex)); ResetSequence(2f); } } private bool CanExecuteMetaOperation(object metaManager) { if (metaManager == null) { return false; } object instanceFieldOrPropertyValue = GetInstanceFieldOrPropertyValue(metaManager, "saveReady"); if (instanceFieldOrPropertyValue is bool && !(bool)instanceFieldOrPropertyValue) { return false; } return true; } private void RefreshCosmeticState(object metaManager) { InvokeInstanceMethod(metaManager, "CosmeticPreviewSet", new object[1] { false }); InvokeInstanceMethod(metaManager, "CosmeticPlayerUpdateLocal", new object[2] { true, true }); } private void RefreshCurrentCosmeticMenu() { try { object staticInstance = GetStaticInstance("MenuManager"); object instanceFieldOrPropertyValue = GetInstanceFieldOrPropertyValue(staticInstance, "currentMenuPage"); if (instanceFieldOrPropertyValue == null) { return; } Type type = FindType("MenuPageCosmetics"); if (!(type == null)) { Component val = null; Component val2 = (Component)((instanceFieldOrPropertyValue is Component) ? instanceFieldOrPropertyValue : null); if ((Object)(object)val2 != (Object)null) { val = val2.GetComponent(type); } GameObject val3 = (GameObject)((instanceFieldOrPropertyValue is GameObject) ? instanceFieldOrPropertyValue : null); if ((Object)(object)val == (Object)null && (Object)(object)val3 != (Object)null) { val = val3.GetComponent(type); } if (!((Object)(object)val == (Object)null)) { InvokeInstanceMethod(val, "RefreshScrollContent", new object[0]); } } } catch (Exception ex) { ((BaseUnityPlugin)this).Logger.LogWarning((object)("Failure: RefreshCurrentCosmeticMenu\n" + ex)); } } private HashSet<int> GetPresetCosmeticIndexSet(IList cosmeticPresets) { HashSet<int> hashSet = new HashSet<int>(); if (cosmeticPresets == null) { return hashSet; } for (int i = 0; i < cosmeticPresets.Count; i++) { if (!(cosmeticPresets[i] is IEnumerable enumerable)) { continue; } foreach (object item in enumerable) { if (item is int num && num >= 0) { hashSet.Add(num); } } } return hashSet; } private int RemoveIntegersNotInSet(IList list, HashSet<int> keepSet) { if (list == null) { return 0; } int num = 0; for (int num2 = list.Count - 1; num2 >= 0; num2--) { if (list[num2] is int item && !keepSet.Contains(item)) { list.RemoveAt(num2); num++; } } return num; } private void ClearListField(object target, string fieldName) { GetInstanceListField(target, fieldName)?.Clear(); } private void ClearCurrentOutfitAndSetWhite(object metaManager) { ClearListField(metaManager, "cosmeticEquipped"); ClearListField(metaManager, "cosmeticEquippedPreview"); int whiteColorIndex = GetWhiteColorIndex(metaManager); SetIntArrayValues(GetInstanceFieldOrPropertyValue(metaManager, "colorsEquipped"), whiteColorIndex); SetIntArrayValues(GetInstanceFieldOrPropertyValue(metaManager, "colorsEquippedPreview"), whiteColorIndex); SetInstanceFieldOrPropertyValue(metaManager, "cosmeticPreviewEnabled", false); SetInstanceFieldOrPropertyValue(metaManager, "colorsPreviewEnabled", false); InvokeInstanceMethod(metaManager, "CosmeticPreviewSet", new object[1] { false }); } private string EquipFirstPreset(object metaManager) { IList instanceListField = GetInstanceListField(metaManager, "cosmeticPresets"); IList instanceListField2 = GetInstanceListField(metaManager, "colorPresets"); IList instanceListField3 = GetInstanceListField(metaManager, "cosmeticEquipped"); if (instanceListField == null || instanceListField.Count == 0 || instanceListField3 == null) { ClearCurrentOutfitAndSetWhite(metaManager); return "Preset 1 was not found. Outfit was cleared."; } instanceListField3.Clear(); ClearListField(metaManager, "cosmeticEquippedPreview"); int num = 0; if (instanceListField[0] is IEnumerable enumerable) { foreach (object item in enumerable) { if (item is int num2 && num2 >= 0) { instanceListField3.Add(num2); num++; } } } int num3 = ApplyFirstColorPreset(metaManager, instanceListField2); SetInstanceFieldOrPropertyValue(metaManager, "cosmeticPreviewEnabled", false); SetInstanceFieldOrPropertyValue(metaManager, "colorsPreviewEnabled", false); InvokeInstanceMethod(metaManager, "CosmeticPreviewSet", new object[1] { false }); if (num == 0 && num3 == 0) { ClearCurrentOutfitAndSetWhite(metaManager); return "Preset 1 is empty. Outfit was cleared."; } return "Preset 1 was equipped."; } private int ApplyFirstColorPreset(object metaManager, IList colorPresets) { object instanceFieldOrPropertyValue = GetInstanceFieldOrPropertyValue(metaManager, "colorsEquipped"); int whiteColorIndex = GetWhiteColorIndex(metaManager); SetIntArrayValues(instanceFieldOrPropertyValue, whiteColorIndex); SetIntArrayValues(GetInstanceFieldOrPropertyValue(metaManager, "colorsEquippedPreview"), whiteColorIndex); if (!(instanceFieldOrPropertyValue is Array array) || colorPresets == null || colorPresets.Count == 0) { return 0; } int num = 0; if (!(colorPresets[0] is IEnumerable enumerable)) { return 0; } int num2 = 0; foreach (object item in enumerable) { if (num2 >= array.Length) { break; } if (item is int) { array.SetValue((int)item, num2); num++; } num2++; } return num; } private int GetWhiteColorIndex(object metaManager) { IList instanceListField = GetInstanceListField(metaManager, "colors"); if (instanceListField == null) { return 0; } for (int i = 0; i < instanceListField.Count; i++) { object? obj = instanceListField[i]; Object val = (Object)((obj is Object) ? obj : null); if (!(val == (Object)null)) { string name = val.name; if (!string.IsNullOrEmpty(name) && name.IndexOf("white", StringComparison.OrdinalIgnoreCase) >= 0) { return i; } } } return 0; } private void SetIntArrayValues(object arrayObject, int value) { if (arrayObject is Array array) { for (int i = 0; i < array.Length; i++) { array.SetValue(value, i); } } } private void ResetSequence(float cooldownSeconds) { activeAction = LockAction.None; lockProgress = 0f; lockSequenceActive = false; minimumUiVisibleUntil = 0f; cooldownUntil = Time.unscaledTime + cooldownSeconds; lastF9PressTime = -999f; lastF10PressTime = -999f; SetLockUiVisible(visible: false); } private void CancelSequence() { activeAction = LockAction.None; lockProgress = 0f; lockSequenceActive = false; minimumUiVisibleUntil = 0f; lastF9PressTime = -999f; lastF10PressTime = -999f; SetLockUiVisible(visible: false); } private void EnsureLockUi() { //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Expected O, but got Unknown //IL_00d3: Unknown result type (might be due to invalid IL or missing references) //IL_0123: Unknown result type (might be due to invalid IL or missing references) //IL_0129: Expected O, but got Unknown //IL_014b: Unknown result type (might be due to invalid IL or missing references) //IL_0158: Unknown result type (might be due to invalid IL or missing references) //IL_0165: Unknown result type (might be due to invalid IL or missing references) //IL_0172: 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_01d3: Unknown result type (might be due to invalid IL or missing references) //IL_01da: Expected O, but got Unknown //IL_0208: Unknown result type (might be due to invalid IL or missing references) //IL_021f: Unknown result type (might be due to invalid IL or missing references) //IL_0236: Unknown result type (might be due to invalid IL or missing references) //IL_0243: Unknown result type (might be due to invalid IL or missing references) //IL_025a: Unknown result type (might be due to invalid IL or missing references) //IL_0287: Unknown result type (might be due to invalid IL or missing references) //IL_0296: Unknown result type (might be due to invalid IL or missing references) //IL_02bf: Unknown result type (might be due to invalid IL or missing references) //IL_02ec: Unknown result type (might be due to invalid IL or missing references) //IL_02fb: Unknown result type (might be due to invalid IL or missing references) //IL_0324: Unknown result type (might be due to invalid IL or missing references) //IL_0351: Unknown result type (might be due to invalid IL or missing references) //IL_0360: Unknown result type (might be due to invalid IL or missing references) //IL_0389: Unknown result type (might be due to invalid IL or missing references) //IL_03b9: Unknown result type (might be due to invalid IL or missing references) //IL_03c0: Expected O, but got Unknown //IL_03ea: Unknown result type (might be due to invalid IL or missing references) //IL_0401: Unknown result type (might be due to invalid IL or missing references) //IL_0418: Unknown result type (might be due to invalid IL or missing references) //IL_042f: Unknown result type (might be due to invalid IL or missing references) //IL_0446: Unknown result type (might be due to invalid IL or missing references) //IL_0479: Unknown result type (might be due to invalid IL or missing references) //IL_04a9: Unknown result type (might be due to invalid IL or missing references) //IL_04b0: Expected O, but got Unknown //IL_04e2: Unknown result type (might be due to invalid IL or missing references) //IL_04fd: Unknown result type (might be due to invalid IL or missing references) //IL_0518: Unknown result type (might be due to invalid IL or missing references) //IL_0529: Unknown result type (might be due to invalid IL or missing references) //IL_053a: Unknown result type (might be due to invalid IL or missing references) //IL_0555: Unknown result type (might be due to invalid IL or missing references) //IL_0588: Unknown result type (might be due to invalid IL or missing references) //IL_05b5: Unknown result type (might be due to invalid IL or missing references) //IL_05c4: Unknown result type (might be due to invalid IL or missing references) //IL_05ed: Unknown result type (might be due to invalid IL or missing references) if (!uiCreated || !((Object)(object)canvasObject != (Object)null)) { canvasObject = new GameObject("LockAllCosmeticsCanvas", new Type[4] { typeof(RectTransform), typeof(Canvas), typeof(CanvasScaler), typeof(GraphicRaycaster) }); ((Object)canvasObject).hideFlags = (HideFlags)61; canvasObject.transform.SetParent(((Component)this).transform, false); Canvas component = canvasObject.GetComponent<Canvas>(); component.renderMode = (RenderMode)0; component.sortingOrder = 32000; CanvasScaler component2 = canvasObject.GetComponent<CanvasScaler>(); component2.uiScaleMode = (ScaleMode)1; component2.referenceResolution = new Vector2(1920f, 1080f); component2.matchWidthOrHeight = 0.5f; GraphicRaycaster component3 = canvasObject.GetComponent<GraphicRaycaster>(); ((Behaviour)component3).enabled = false; GameObject val = new GameObject("BlackOverlay", new Type[2] { typeof(RectTransform), typeof(Image) }); val.transform.SetParent(canvasObject.transform, false); RectTransform component4 = val.GetComponent<RectTransform>(); component4.anchorMin = Vector2.zero; component4.anchorMax = Vector2.one; component4.offsetMin = Vector2.zero; component4.offsetMax = Vector2.zero; blackOverlayImage = val.GetComponent<Image>(); ((Graphic)blackOverlayImage).raycastTarget = false; ((Graphic)blackOverlayImage).color = new Color(0f, 0f, 0f, 0f); GameObject val2 = new GameObject("LockPanel", new Type[1] { typeof(RectTransform) }); val2.transform.SetParent(canvasObject.transform, false); RectTransform component5 = val2.GetComponent<RectTransform>(); component5.anchorMin = new Vector2(0.5f, 0.5f); component5.anchorMax = new Vector2(0.5f, 0.5f); component5.pivot = new Vector2(0.5f, 0.5f); component5.anchoredPosition = Vector2.zero; component5.sizeDelta = new Vector2(900f, 230f); titleText = CreateText(val2.transform, "Title", string.Empty, 34f, new Vector2(0f, 70f), new Vector2(900f, 44f)); ((Graphic)titleText).color = new Color(1f, 1f, 1f, 1f); hintText = CreateText(val2.transform, "Hint", string.Empty, 22f, new Vector2(0f, 30f), new Vector2(900f, 36f)); ((Graphic)hintText).color = new Color(1f, 1f, 1f, 0.92f); subHintText = CreateText(val2.transform, "SubHint", string.Empty, 19f, new Vector2(0f, -5f), new Vector2(900f, 32f)); ((Graphic)subHintText).color = new Color(1f, 1f, 1f, 0.82f); GameObject val3 = new GameObject("BarBackground", new Type[2] { typeof(RectTransform), typeof(Image) }); val3.transform.SetParent(val2.transform, false); RectTransform component6 = val3.GetComponent<RectTransform>(); component6.anchorMin = new Vector2(0.5f, 0.5f); component6.anchorMax = new Vector2(0.5f, 0.5f); component6.pivot = new Vector2(0.5f, 0.5f); component6.anchoredPosition = new Vector2(0f, -48f); component6.sizeDelta = new Vector2(560f, 26f); Image component7 = val3.GetComponent<Image>(); ((Graphic)component7).raycastTarget = false; ((Graphic)component7).color = new Color(0f, 0f, 0f, 0.85f); GameObject val4 = new GameObject("BarFill", new Type[2] { typeof(RectTransform), typeof(Image) }); val4.transform.SetParent(val3.transform, false); barFillRect = val4.GetComponent<RectTransform>(); barFillRect.anchorMin = new Vector2(0f, 0f); barFillRect.anchorMax = new Vector2(0f, 1f); barFillRect.pivot = new Vector2(0f, 0.5f); barFillRect.offsetMin = Vector2.zero; barFillRect.offsetMax = Vector2.zero; barFillRect.sizeDelta = new Vector2(0f, 0f); Image component8 = val4.GetComponent<Image>(); ((Graphic)component8).raycastTarget = false; ((Graphic)component8).color = new Color(1f, 0.2f, 0.2f, 1f); percentText = CreateText(val2.transform, "Percent", "0%", 18f, new Vector2(0f, -88f), new Vector2(900f, 30f)); ((Graphic)percentText).color = new Color(1f, 1f, 1f, 0.95f); uiCreated = true; SetLockUiVisible(visible: false); } } private TextMeshProUGUI CreateText(Transform parent, string objectName, string text, float fontSize, Vector2 anchoredPosition, Vector2 sizeDelta) { //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Expected O, but got Unknown //IL_0048: 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) //IL_0074: 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_0089: Unknown result type (might be due to invalid IL or missing references) GameObject val = new GameObject(objectName, new Type[2] { typeof(RectTransform), typeof(TextMeshProUGUI) }); val.transform.SetParent(parent, false); RectTransform component = val.GetComponent<RectTransform>(); component.anchorMin = new Vector2(0.5f, 0.5f); component.anchorMax = new Vector2(0.5f, 0.5f); component.pivot = new Vector2(0.5f, 0.5f); component.anchoredPosition = anchoredPosition; component.sizeDelta = sizeDelta; TextMeshProUGUI component2 = val.GetComponent<TextMeshProUGUI>(); ((TMP_Text)component2).text = text; ((TMP_Text)component2).fontSize = fontSize; ((TMP_Text)component2).alignment = (TextAlignmentOptions)514; ((TMP_Text)component2).enableWordWrapping = false; ((Graphic)component2).raycastTarget = false; return component2; } private void UpdateUiTextForAction() { if (!((Object)(object)titleText == (Object)null) && !((Object)(object)hintText == (Object)null) && !((Object)(object)subHintText == (Object)null)) { if (activeAction == LockAction.LockUnusedCosmetics) { ((TMP_Text)titleText).text = "Lock Unused Cosmetics"; ((TMP_Text)hintText).text = "Mash F9 to lock cosmetics not saved in presets. Stop to cancel."; ((TMP_Text)subHintText).text = "Lock all cosmetics: F10"; } else if (activeAction == LockAction.LockAllCosmetics) { ((TMP_Text)titleText).text = "Lock All Cosmetics"; ((TMP_Text)hintText).text = "Mash F10 to lock all cosmetics. Stop to cancel."; ((TMP_Text)subHintText).text = "Lock unused cosmetics: F9"; } } } private void UpdateLockUi() { //IL_004a: 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) EnsureLockUi(); float num = Mathf.Clamp01(lockProgress); float num2 = num; int num3 = Mathf.RoundToInt(num * 100f); if ((Object)(object)blackOverlayImage != (Object)null) { ((Graphic)blackOverlayImage).color = new Color(0f, 0f, 0f, num2); } if ((Object)(object)barFillRect != (Object)null) { barFillRect.sizeDelta = new Vector2(560f * num, 0f); } if ((Object)(object)percentText != (Object)null) { ((TMP_Text)percentText).text = num3 + "%"; } } private void ShowCompletionMessage(string title, string message, string detail) { activeAction = LockAction.None; lockSequenceActive = false; completionMessageActive = true; completionMessageUntil = Time.unscaledTime + 3f; cooldownUntil = Time.unscaledTime + 5f; lockProgress = 1f; minimumUiVisibleUntil = 0f; lastF9PressTime = -999f; lastF10PressTime = -999f; EnsureLockUi(); if ((Object)(object)titleText != (Object)null) { ((TMP_Text)titleText).text = title; } if ((Object)(object)hintText != (Object)null) { ((TMP_Text)hintText).text = message; } if ((Object)(object)subHintText != (Object)null) { ((TMP_Text)subHintText).text = detail; } SetLockUiVisible(visible: true); UpdateCompletionUi(); } private void UpdateCompletionMessage() { if (completionMessageActive) { if (Time.unscaledTime >= completionMessageUntil) { completionMessageActive = false; SetLockUiVisible(visible: false); } else { UpdateCompletionUi(); } } } private void UpdateCompletionUi() { //IL_0033: 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) EnsureLockUi(); if ((Object)(object)blackOverlayImage != (Object)null) { ((Graphic)blackOverlayImage).color = new Color(0f, 0f, 0f, 0.72f); } if ((Object)(object)barFillRect != (Object)null) { barFillRect.sizeDelta = new Vector2(560f, 0f); } if ((Object)(object)percentText != (Object)null) { ((TMP_Text)percentText).text = "Complete"; } } private void SetLockUiVisible(bool visible) { if ((Object)(object)canvasObject != (Object)null) { canvasObject.SetActive(visible); } } private object GetStaticInstance(string typeName) { Type type = FindType(typeName); if (type == null) { return null; } FieldInfo field = type.GetField("instance", BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic); if (field != null) { return field.GetValue(null); } PropertyInfo property = type.GetProperty("instance", BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic); if (property != null) { return property.GetValue(null, null); } return null; } private IList GetInstanceListField(object target, string fieldName) { object instanceFieldOrPropertyValue = GetInstanceFieldOrPropertyValue(target, fieldName); return instanceFieldOrPropertyValue as IList; } private object GetInstanceFieldOrPropertyValue(object target, string memberName) { if (target == null) { return null; } FieldInfo field = target.GetType().GetField(memberName, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); if (field != null) { return field.GetValue(target); } PropertyInfo property = target.GetType().GetProperty(memberName, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); if (property != null) { return property.GetValue(target, null); } return null; } private bool SetInstanceFieldOrPropertyValue(object target, string memberName, object value) { if (target == null) { return false; } FieldInfo field = target.GetType().GetField(memberName, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); if (field != null) { field.SetValue(target, value); return true; } PropertyInfo property = target.GetType().GetProperty(memberName, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); if (property != null && property.CanWrite) { property.SetValue(target, value, null); return true; } return false; } private bool InvokeInstanceMethod(object target, string methodName, object[] parameters) { if (target == null) { return false; } MethodInfo methodInfo = FindInstanceMethod(target.GetType(), methodName, parameters); if (methodInfo == null) { return false; } methodInfo.Invoke(target, parameters); return true; } private MethodInfo FindInstanceMethod(Type type, string methodName, object[] parameters) { if (type == null) { return null; } int num = ((parameters != null) ? parameters.Length : 0); MethodInfo[] methods = type.GetMethods(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); foreach (MethodInfo methodInfo in methods) { if (!(methodInfo.Name != methodName)) { ParameterInfo[] parameters2 = methodInfo.GetParameters(); if (parameters2.Length == num) { return methodInfo; } } } return null; } private Type FindType(string typeName) { Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies(); for (int i = 0; i < assemblies.Length; i++) { Type type = null; try { type = assemblies[i].GetType(typeName, throwOnError: false); } catch { type = null; } if (type != null) { return type; } } for (int j = 0; j < assemblies.Length; j++) { Type[] array = null; try { array = assemblies[j].GetTypes(); } catch (ReflectionTypeLoadException ex) { array = ex.Types; } catch { array = null; } if (array == null) { continue; } foreach (Type type2 in array) { if (!(type2 == null) && (type2.Name == typeName || type2.FullName == typeName)) { return type2; } } } return null; } } }