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 ImprovedUI v1.2.1
ImprovedUI.dll
Decompiled 2 years ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections.Generic; 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 System.Text; using BepInEx; using BepInEx.Configuration; using EntityStates; using HG; using HG.Reflection; using On.RoR2; using On.RoR2.Networking; using On.RoR2.UI; using Rewired.ComponentControls.Effects; using RoR2; using RoR2.Networking; using RoR2.Skills; using RoR2.UI; using RoR2.UI.SkinControllers; using SimpleJSON; using TMPro; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.EventSystems; using UnityEngine.Events; using UnityEngine.Networking; 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: OptIn] [assembly: TargetFramework(".NETStandard,Version=v2.0", FrameworkDisplayName = "")] [assembly: AssemblyCompany("ImprovedUI")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("ImprovedUI")] [assembly: AssemblyTitle("ImprovedUI")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace ImprovedUI; internal class BuffTimer : NetworkBehaviour { private BuffDisplay display; private BuffIcon buffIcon; public HGTextMeshProUGUI countdown; public Image fill; private TimedBuff timedBuff; private float duration; private void Awake() { buffIcon = ((Component)this).GetComponent<BuffIcon>(); } private void Start() { //IL_004c: 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_009f: 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) display = ((Component)this).GetComponentInParent<BuffDisplay>(); if (!Object.op_Implicit((Object)(object)display.source)) { return; } fill.sprite = buffIcon.iconImage.sprite; ((Component)fill).transform.localPosition = Vector3.zero; ((TMP_Text)countdown).transform.localPosition = new Vector3(25f, 65f, 0f); foreach (TimedBuff timedBuff in display.source.timedBuffs) { if (timedBuff.buffIndex == buffIcon.buffDef.buffIndex) { this.timedBuff = timedBuff; duration = this.timedBuff.timer; break; } } } private void Update() { //IL_0041: 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_0138: Unknown result type (might be due to invalid IL or missing references) if (timedBuff != null && timedBuff.timer > 0f) { if (Object.op_Implicit((Object)(object)fill)) { ((Component)fill).transform.localPosition = Vector3.zero; fill.fillAmount = Mathf.Clamp01((duration - timedBuff.timer) / duration); } if (Object.op_Implicit((Object)(object)countdown)) { double num = Math.Round(timedBuff.timer, 2); ((TMP_Text)countdown).text = ((num > 0.0) ? (num + "s") : ""); } } else { if (!Object.op_Implicit((Object)(object)display) || !Object.op_Implicit((Object)(object)display.source)) { return; } float num2 = 0f; foreach (TimedBuff timedBuff in display.source.timedBuffs) { if (timedBuff.buffIndex == buffIcon.buffDef.buffIndex && timedBuff.timer > 0f && num2 < timedBuff.timer) { num2 = timedBuff.timer; this.timedBuff = timedBuff; } } duration = num2; } } } internal class Command : MonoBehaviour { } internal class CustomHUDBehaviour : MonoBehaviour { public List<GameObject> objectsToEnable = new List<GameObject>(); public List<GameObject> draggableElements = new List<GameObject>(); public HUD HUD; public GameObject hudScale; private GameObject InfoBar; private GameObject ClassicRunInfoHudPanel; public GameObject lineX; public bool draggingX; public GameObject lineY; public bool draggingY; public GameObject gridRoot; public bool axisLock; public bool snapping; public float snapScale = 1f; public TMP_Dropdown dropdown; public TMP_InputField presetName; public HGButton add; public HGButton cancel; public HGButton delete; public HGButton save; private bool delayedLoad; private float delayedLoadTimer; public float delayedLoadDelay = 1f; private void Start() { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Expected O, but got Unknown //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Expected O, but got Unknown //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Expected O, but got Unknown //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Expected O, but got Unknown ((UnityEvent)((Button)((Component)add).GetComponent<HGButton>()).onClick).AddListener(new UnityAction(NewPreset)); ((UnityEvent)((Button)((Component)cancel).GetComponent<HGButton>()).onClick).AddListener(new UnityAction(LoadPreset)); ((UnityEvent)((Button)((Component)delete).GetComponent<HGButton>()).onClick).AddListener(new UnityAction(DeletePreset)); ((UnityEvent)((Button)((Component)save).GetComponent<HGButton>()).onClick).AddListener(new UnityAction(SaveHUDData)); ((UnityEvent<int>)(object)dropdown.onValueChanged).AddListener((UnityAction<int>)ChangePreset); ((UnityEvent<string>)(object)presetName.onValueChanged).AddListener((UnityAction<string>)RenamePreset); UpdateInputBox(Configs.hudData.defaultPreset, sendCallBack: false); } private void OnDestroy() { ((UnityEventBase)((Button)((Component)add).GetComponent<HGButton>()).onClick).RemoveAllListeners(); ((UnityEventBase)((Button)((Component)cancel).GetComponent<HGButton>()).onClick).RemoveAllListeners(); ((UnityEventBase)((Button)((Component)delete).GetComponent<HGButton>()).onClick).RemoveAllListeners(); ((UnityEventBase)((Button)((Component)save).GetComponent<HGButton>()).onClick).RemoveAllListeners(); ((UnityEventBase)dropdown.onValueChanged).RemoveAllListeners(); ((UnityEventBase)presetName.onValueChanged).RemoveAllListeners(); } private void Update() { //IL_019a: Unknown result type (might be due to invalid IL or missing references) //IL_01cb: Unknown result type (might be due to invalid IL or missing references) //IL_01ee: Unknown result type (might be due to invalid IL or missing references) //IL_0211: Unknown result type (might be due to invalid IL or missing references) //IL_023e: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: 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_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) //IL_00f4: Unknown result type (might be due to invalid IL or missing references) //IL_00f9: 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_010b: Unknown result type (might be due to invalid IL or missing references) //IL_0112: Unknown result type (might be due to invalid IL or missing references) //IL_0119: Unknown result type (might be due to invalid IL or missing references) //IL_011e: Unknown result type (might be due to invalid IL or missing references) //IL_0125: Unknown result type (might be due to invalid IL or missing references) //IL_012c: Unknown result type (might be due to invalid IL or missing references) //IL_0133: Unknown result type (might be due to invalid IL or missing references) //IL_0138: Unknown result type (might be due to invalid IL or missing references) //IL_05db: Unknown result type (might be due to invalid IL or missing references) //IL_0301: Unknown result type (might be due to invalid IL or missing references) //IL_0308: Expected O, but got Unknown //IL_030f: 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_031d: Unknown result type (might be due to invalid IL or missing references) //IL_0329: Unknown result type (might be due to invalid IL or missing references) //IL_0330: Unknown result type (might be due to invalid IL or missing references) //IL_0344: Unknown result type (might be due to invalid IL or missing references) //IL_034e: Unknown result type (might be due to invalid IL or missing references) //IL_037c: Unknown result type (might be due to invalid IL or missing references) //IL_03d3: Unknown result type (might be due to invalid IL or missing references) //IL_0404: Unknown result type (might be due to invalid IL or missing references) //IL_0409: Unknown result type (might be due to invalid IL or missing references) //IL_0413: Unknown result type (might be due to invalid IL or missing references) //IL_04d2: Unknown result type (might be due to invalid IL or missing references) //IL_04d7: Unknown result type (might be due to invalid IL or missing references) //IL_0483: Unknown result type (might be due to invalid IL or missing references) //IL_048d: Unknown result type (might be due to invalid IL or missing references) //IL_04a3: Unknown result type (might be due to invalid IL or missing references) //IL_04a8: Unknown result type (might be due to invalid IL or missing references) //IL_04ad: Unknown result type (might be due to invalid IL or missing references) //IL_04be: Unknown result type (might be due to invalid IL or missing references) //IL_054a: Unknown result type (might be due to invalid IL or missing references) //IL_054f: Unknown result type (might be due to invalid IL or missing references) //IL_04fb: 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_051b: Unknown result type (might be due to invalid IL or missing references) //IL_0520: Unknown result type (might be due to invalid IL or missing references) //IL_0525: Unknown result type (might be due to invalid IL or missing references) //IL_0536: Unknown result type (might be due to invalid IL or missing references) if (delayedLoad) { delayedLoadTimer += Time.deltaTime; if (delayedLoadTimer >= delayedLoadDelay) { delayedLoadTimer = 0f; delayedLoad = false; Debug.LogWarning((object)"delay load"); if (!Configs.ResetHUDData) { } if (MainPlugin.debug && Configs.ResetHUDData) { Configs.hudData.presets.Clear(); string name = "Default"; HUDData.PresetData presetData = new HUDData.PresetData(name); foreach (GameObject draggableElement in draggableElements) { DraggableUI component = draggableElement.GetComponent<DraggableUI>(); Vector3 position = ((Component)component.target).transform.position; Quaternion rotation = ((Component)component.target).transform.rotation; Vector3 localScale = ((Component)component.target).transform.localScale; presetData.AddTransformData(new HUDData.TransformData(((Object)draggableElement).name, new Vector3(position.x, position.y, position.z), new Vector3(rotation.x, rotation.y, rotation.z), localScale.x)); } Configs.hudData.presets.Add(presetData); Configs.hudData.defaultPreset = presetData.name; SaveHUDData(); } } } if (Input.GetKeyDown(Configs.GridToggleKey.Value)) { gridRoot.SetActive(!gridRoot.activeInHierarchy); } if (Input.GetKeyDown(Configs.AxisLockKey.Value)) { axisLock = axisLock; } if (Input.GetKeyDown(Configs.SnappingToggleKey.Value)) { snapping = snapping; } if (Input.GetKeyDown(Configs.IncreaseSnap.Value) || Input.GetAxis("Mouse ScrollWheel") > 0f) { } if (Input.GetKeyDown(Configs.DecreaseSnap.Value) || Input.GetAxis("Mouse ScrollWheel") > 0f) { } lineX.SetActive(draggingX); lineY.SetActive(draggingY); if (!Object.op_Implicit((Object)(object)InfoBar) && Object.op_Implicit((Object)(object)HUD) && Object.op_Implicit((Object)(object)HUD.gameModeUiInstance)) { Transform val = HUD.gameModeUiInstance.GetComponent<ChildLocator>().FindChild("RightInfoBar"); val.SetParent(HUD.gameModeUiInstance.transform.parent); RectTransform val2 = (RectTransform)((Component)val).transform; Vector3 localPosition = ((Component)val2).transform.localPosition; ((Component)val2).transform.localPosition = new Vector3(localPosition.x, -116f, localPosition.z); val2.sizeDelta = new Vector2(34f, val2.sizeDelta.y); InfoBar = Prefabs.NewDraggableElement("RightInfoBar", ((Component)this).transform, HUD.canvas, val, new Vector2(165f, 355f)); draggableElements.Add(InfoBar); ClassicRunInfoHudPanel = Prefabs.NewDraggableElement("ClassicRunInfoHudPanel", ((Component)this).transform, HUD.canvas, HUD.gameModeUiInstance.transform, new Vector2(260f, 115f)); draggableElements.Add(ClassicRunInfoHudPanel); ((RectTransform)ClassicRunInfoHudPanel.transform).pivot = Vector2.one * 0.75f; objectsToEnable.AddRange(draggableElements); foreach (GameObject draggableElement2 in draggableElements) { draggableElement2.GetComponent<DraggableUI>().Start(); } int num = 0; Resolution currentResolution; while (true) { int num2 = num; currentResolution = Screen.currentResolution; if (num2 >= ((Resolution)(ref currentResolution)).width / 5) { break; } Transform transform = Prefabs.NewGuideline(gridRoot.transform, Color.black * 0.5f, 0.005f, (SnapAxis)2, setActive: true).transform; Vector3 right = Vector3.right; currentResolution = Screen.currentResolution; transform.localPosition = right * (float)(-((Resolution)(ref currentResolution)).width + num * 10); num++; } int num3 = 0; while (true) { int num4 = num3; currentResolution = Screen.currentResolution; if (num4 >= ((Resolution)(ref currentResolution)).height / 5) { break; } Transform transform2 = Prefabs.NewGuideline(gridRoot.transform, Color.black * 0.5f, 0.005f, (SnapAxis)1, setActive: true).transform; Vector3 up = Vector3.up; currentResolution = Screen.currentResolution; transform2.localPosition = up * (float)(-((Resolution)(ref currentResolution)).height + num3 * 10); num3++; } UpdateDropdown(resetIndex: false, Configs.hudData.presets.IndexOf(Configs.hudData.presets.Find((HUDData.PresetData x) => x.name == Configs.hudData.defaultPreset))); if (!Configs.ResetHUDData) { LoadPreset(); } else if (MainPlugin.debug) { delayedLoad = true; } } if (!Input.GetKeyDown(Configs.HUDToggleKey.Value)) { return; } foreach (GameObject item in objectsToEnable) { item.SetActive(!item.activeInHierarchy); } } private void UpdateDropdown(bool resetIndex = false, int setIndex = 0, bool callBack = false) { if (MainPlugin.debug) { Debug.LogWarning((object)"UpdateDropdown"); } dropdown.ClearOptions(); List<string> list = new List<string>(); foreach (HUDData.PresetData preset in Configs.hudData.presets) { list.Add(preset.name); } dropdown.AddOptions(list); if (setIndex != 0) { dropdown.SetValue(setIndex, callBack); } UpdateInputBox(Configs.hudData.defaultPreset); if (resetIndex) { dropdown.SetValue(0, false); } } private void UpdateInputBox(string s, bool sendCallBack = true) { presetName.SetText(s, sendCallBack); } public void ChangePreset(int index) { if (MainPlugin.debug) { Debug.LogWarning((object)"ChangePreset"); } Configs.hudData.defaultPreset = Configs.hudData.presets.ElementAt(index).name; LoadPreset(); UpdateInputBox(Configs.hudData.defaultPreset); } public void SetDefaultPreset() { if (MainPlugin.debug) { Debug.LogWarning((object)"SetDefaultPreset"); } HUDData.PresetData presetDataByName = Configs.hudData.GetPresetDataByName(Configs.hudData.defaultPreset); Configs.hudData.defaultPreset = presetDataByName.name; UpdateDropdown(); } public void DeletePreset() { if (MainPlugin.debug) { Debug.LogWarning((object)"DeletePreset"); } if (!(Configs.hudData.defaultPreset == "Default")) { HUDData.PresetData presetDataByName = Configs.hudData.GetPresetDataByName(Configs.hudData.defaultPreset); Configs.hudData.presets.Remove(presetDataByName); Configs.hudData.defaultPreset = "Default"; LoadPreset(); UpdateDropdown(resetIndex: true); } } public void RenamePreset(string s) { if (!(Configs.hudData.defaultPreset == "Default")) { if (MainPlugin.debug) { Debug.LogWarning((object)"RenamePreset"); } int value = dropdown.value; HUDData.PresetData presetDataByName = Configs.hudData.GetPresetDataByName(Configs.hudData.defaultPreset); presetDataByName.name = s; Configs.hudData.defaultPreset = s; dropdown.options[value].text = s; Configs.hudData.GetPresetDataByName(Configs.hudData.defaultPreset).name = s; } } public void LoadPreset() { //IL_007d: 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_00a6: 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_00cf: 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_0109: Unknown result type (might be due to invalid IL or missing references) if (MainPlugin.debug) { Debug.LogWarning((object)"LoadPreset"); } HUDData.PresetData presetDataByName = Configs.hudData.GetPresetDataByName(Configs.hudData.defaultPreset); foreach (GameObject draggableElement in draggableElements) { DraggableUI component = draggableElement.GetComponent<DraggableUI>(); HUDData.TransformData transformDataByName = presetDataByName.GetTransformDataByName(((Object)draggableElement).name); if (transformDataByName != null && Object.op_Implicit((Object)(object)component)) { draggableElement.transform.position = transformDataByName.position; draggableElement.transform.rotation = Quaternion.Euler(transformDataByName.rotation); draggableElement.transform.localScale = Vector3.one * transformDataByName.scale; ((Component)component.target).transform.position = draggableElement.transform.position; ((Component)component.target).transform.rotation = draggableElement.transform.rotation; ((Component)component.target).transform.localScale = draggableElement.transform.localScale; } } } public void NewPreset() { //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_0069: 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_008f: 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_009d: 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_00a9: 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_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) if (MainPlugin.debug) { Debug.LogWarning((object)"NewPreset"); } string text = "NewPreset" + Configs.hudData.presets.Count; HUDData.PresetData presetData = new HUDData.PresetData(text); foreach (GameObject draggableElement in draggableElements) { Vector3 position = draggableElement.transform.position; Quaternion rotation = draggableElement.transform.rotation; Vector3 localScale = draggableElement.transform.localScale; presetData.AddTransformData(new HUDData.TransformData(((Object)draggableElement).name, new Vector3(position.x, position.y, position.z), new Vector3(rotation.x, rotation.y, rotation.z), localScale.x)); } Configs.hudData.presets.Add(presetData); Configs.hudData.defaultPreset = presetData.name; dropdown.AddOptions(new List<string> { presetData.name }); dropdown.SetValue(dropdown.value + 1, false); UpdateInputBox(text, sendCallBack: false); SaveHUDData(); } public void SaveHUDData() { if (MainPlugin.debug) { Debug.LogWarning((object)"SaveHUDData"); } Configs.hudData.SaveHUDData(); } } internal class DPSBehaviour : MonoBehaviour { public RectTransform stupidShit; public HGTextMeshProUGUI text; public HUD hud; private float dps; private float damageCache; private long time; private long oldTime; private long lastCachedTime; private long lastResetTime; private void OnEnable() { GlobalEventManager.onClientDamageNotified += GlobalEventManager_onClientDamageNotified; } private void GlobalEventManager_onClientDamageNotified(DamageDealtMessage message) { CharacterBody val = (Object.op_Implicit((Object)(object)message.attacker) ? message.attacker.GetComponent<CharacterBody>() : null); CharacterMaster val2 = (Object.op_Implicit((Object)(object)val) ? val.master : null); if ((Object)(object)message.attacker == (Object)(object)hud.targetBodyObject || (Object.op_Implicit((Object)(object)val2) && Object.op_Implicit((Object)(object)val2.minionOwnership) && Object.op_Implicit((Object)(object)val2.minionOwnership.ownerMaster) && val2.minionOwnership.ownerMaster.hasBody && (Object)(object)((Component)val2.minionOwnership.ownerMaster.GetBody()).gameObject == (Object)(object)hud.targetBodyObject)) { damageCache += message.damage; lastCachedTime = DateTimeOffset.Now.ToUnixTimeMilliseconds(); } } private void Update() { //IL_0118: Unknown result type (might be due to invalid IL or missing references) //IL_015e: Unknown result type (might be due to invalid IL or missing references) //IL_016d: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)Run.instance == (Object)null || Time.timeScale == 0f) { return; } time = DateTimeOffset.Now.ToUnixTimeMilliseconds(); if ((float)(time - oldTime) > Configs.DPSRefreshTimer.Value) { if ((float)(time - lastCachedTime) > Configs.DPSResetTimer.Value) { damageCache = 0f; lastResetTime = DateTimeOffset.Now.ToUnixTimeMilliseconds(); } dps = damageCache / ((float)(time - lastResetTime) * Time.timeScale / 1000f); oldTime = DateTimeOffset.Now.ToUnixTimeMilliseconds(); double num = Math.Round(dps); ((TMP_Text)text).text = (float.IsNaN((float)num) ? "0" : num.ToString()); } if (Util.HasEffectiveAuthority(((Component)this).gameObject) && Input.GetKeyDown(Configs.DPSRefreshKey.Value)) { damageCache = 0f; lastResetTime = DateTimeOffset.Now.ToUnixTimeMilliseconds(); } if (Object.op_Implicit((Object)(object)stupidShit) && !(stupidShit.sizeDelta != new Vector2(201f, 127f))) { } } private void OnDisable() { GlobalEventManager.onClientDamageNotified -= GlobalEventManager_onClientDamageNotified; } } internal class DraggUI : MonoBehaviour, IDragHandler, IEventSystemHandler { public RectTransform canvasRectTransform; public Transform target; private Vector2 pointerOffset; private RectTransform panelRectTransform; private HUDScaleController scale; private bool clampedToLeft; private bool clampedToRight; private bool clampedToTop; private bool clampedToBottom; private void Start() { //IL_000d: 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_003a: Expected O, but got Unknown //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) ((Component)this).transform.position = target.position; scale = ((Component)target).GetComponent<HUDScaleController>(); panelRectTransform = (RectTransform)((Component)this).transform; ((Transform)panelRectTransform).localScale = Vector3.one; ((Transform)panelRectTransform).localRotation = ((Component)target).transform.localRotation; } public void OnBeginDrag(PointerEventData eventData) { //IL_0014: Unknown result type (might be due to invalid IL or missing references) ((Transform)panelRectTransform).SetAsLastSibling(); RectTransformUtility.ScreenPointToLocalPointInRectangle(panelRectTransform, eventData.position, eventData.pressEventCamera, ref pointerOffset); } public void OnDrag(PointerEventData eventData) { //IL_002b: 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_0051: 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_0067: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_009f: 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_00a9: 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_00d9: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: Unknown result type (might be due to invalid IL or missing references) //IL_011c: 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_0137: Unknown result type (might be due to invalid IL or missing references) //IL_013c: Unknown result type (might be due to invalid IL or missing references) //IL_014b: 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_0177: Unknown result type (might be due to invalid IL or missing references) //IL_018c: Unknown result type (might be due to invalid IL or missing references) //IL_0191: Unknown result type (might be due to invalid IL or missing references) //IL_01a5: Unknown result type (might be due to invalid IL or missing references) //IL_0216: Unknown result type (might be due to invalid IL or missing references) //IL_021c: Unknown result type (might be due to invalid IL or missing references) //IL_0228: Unknown result type (might be due to invalid IL or missing references) //IL_0232: Unknown result type (might be due to invalid IL or missing references) //IL_01cf: Unknown result type (might be due to invalid IL or missing references) //IL_01d4: Unknown result type (might be due to invalid IL or missing references) //IL_01ea: Unknown result type (might be due to invalid IL or missing references) //IL_01ef: Unknown result type (might be due to invalid IL or missing references) //IL_01fe: Unknown result type (might be due to invalid IL or missing references) Vector2 val = default(Vector2); if (Object.op_Implicit((Object)(object)canvasRectTransform) && Object.op_Implicit((Object)(object)panelRectTransform) && RectTransformUtility.ScreenPointToLocalPointInRectangle(canvasRectTransform, eventData.position, eventData.pressEventCamera, ref val)) { ((Transform)panelRectTransform).localPosition = new Vector3(val.x, val.y, ((Component)this).transform.localPosition.z) - new Vector3(pointerOffset.x, pointerOffset.y); ClampToWindow(); Vector2 val2 = Vector2.op_Implicit(((Transform)panelRectTransform).localPosition); Rect rect; if (clampedToRight) { rect = canvasRectTransform.rect; float num = ((Rect)(ref rect)).width * 0.5f; rect = panelRectTransform.rect; val2.x = num - ((Rect)(ref rect)).width * (1f - panelRectTransform.pivot.x); } else if (clampedToLeft) { rect = canvasRectTransform.rect; float num2 = (0f - ((Rect)(ref rect)).width) * 0.5f; rect = panelRectTransform.rect; val2.x = num2 + ((Rect)(ref rect)).width * panelRectTransform.pivot.x; } if (clampedToTop) { rect = canvasRectTransform.rect; float num3 = ((Rect)(ref rect)).height * 0.5f; rect = panelRectTransform.rect; val2.y = num3 - ((Rect)(ref rect)).height * (1f - panelRectTransform.pivot.y); } else if (clampedToBottom) { rect = canvasRectTransform.rect; float num4 = (0f - ((Rect)(ref rect)).height) * 0.5f; rect = panelRectTransform.rect; val2.y = num4 + ((Rect)(ref rect)).height * panelRectTransform.pivot.y; } ((Transform)panelRectTransform).localPosition = new Vector3(val2.x, val2.y, ((Transform)panelRectTransform).localPosition.z); } } private void ClampToWindow() { Vector3[] array = (Vector3[])(object)new Vector3[4]; Vector3[] array2 = (Vector3[])(object)new Vector3[4]; canvasRectTransform.GetWorldCorners(array); panelRectTransform.GetWorldCorners(array2); if (array2[2].x > array[2].x) { if (!clampedToRight) { clampedToRight = true; } } else if (clampedToRight) { clampedToRight = false; } else if (array2[0].x < array[0].x) { if (!clampedToLeft) { clampedToLeft = true; } } else if (clampedToLeft) { clampedToLeft = false; } if (array2[2].y > array[2].y) { if (!clampedToTop) { clampedToTop = true; } } else if (clampedToTop) { clampedToTop = false; } else if (array2[0].y < array[0].y) { if (!clampedToBottom) { clampedToBottom = true; } } else if (clampedToBottom) { clampedToBottom = false; } } } internal class DraggableUI : MonoBehaviour, IBeginDragHandler, IEventSystemHandler, IDragHandler, IEndDragHandler { public TMP_InputField[] inputs; public RectTransform canvasRectTransform; public Transform target; public RectTransform targetRect; private Vector2 pointerOffset; private RectTransform panelRectTransform; public CustomHUDBehaviour behaviour; public Vector3 presetPosition = Vector3.zero; public float presetScale = 1f; public Vector3 presetRotation = Vector3.zero; private Vector2 startingPointerPosition; private Vector3 startingPosition; private Vector3 pointerStartingPosition; private bool lockedY; private bool lockedX; private bool axisLock; private Vector3[] panelRectCorners = (Vector3[])(object)new Vector3[4]; public float scaleCornerRadius = 12f; private Vector3 startSize; private Vector2 previousPointerPosition; private bool scale; public float sizePerDistance = 0.002f; public GameObject windowTransforms; private void OnEnable() { //IL_0042: 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_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_00d6: Unknown result type (might be due to invalid IL or missing references) //IL_00db: Unknown result type (might be due to invalid IL or missing references) //IL_0120: Unknown result type (might be due to invalid IL or missing references) //IL_0125: 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_0170: Unknown result type (might be due to invalid IL or missing references) //IL_01b6: Unknown result type (might be due to invalid IL or missing references) //IL_01bb: Unknown result type (might be due to invalid IL or missing references) //IL_01fe: Unknown result type (might be due to invalid IL or missing references) //IL_0203: Unknown result type (might be due to invalid IL or missing references) for (int i = 0; i < inputs.Length; i++) { Vector3 val; switch (i) { case 0: { TMP_InputField obj4 = inputs[i]; val = ((Component)this).transform.position; obj4.text = val.x.ToString(); ((UnityEvent<string>)(object)inputs[i].onValueChanged).AddListener((UnityAction<string>)delegate(string s) { UpdateTransforms(s, (SnapAxis)1); }); break; } case 1: { TMP_InputField obj3 = inputs[i]; val = ((Component)this).transform.position; obj3.text = val.y.ToString(); ((UnityEvent<string>)(object)inputs[i].onValueChanged).AddListener((UnityAction<string>)delegate(string s) { UpdateTransforms(s, (SnapAxis)2); }); break; } case 2: { TMP_InputField obj2 = inputs[i]; val = ((Component)this).transform.position; obj2.text = val.z.ToString(); ((UnityEvent<string>)(object)inputs[i].onValueChanged).AddListener((UnityAction<string>)delegate(string s) { UpdateTransforms(s, (SnapAxis)4); }); break; } case 3: inputs[i].text = ((Component)this).transform.rotation.x.ToString(); ((UnityEvent<string>)(object)inputs[i].onValueChanged).AddListener((UnityAction<string>)delegate(string s) { UpdateTransforms(s, (SnapAxis)1, position: false); }); break; case 4: inputs[i].text = ((Component)this).transform.rotation.y.ToString(); ((UnityEvent<string>)(object)inputs[i].onValueChanged).AddListener((UnityAction<string>)delegate(string s) { UpdateTransforms(s, (SnapAxis)2, position: false); }); break; case 5: inputs[i].text = ((Component)this).transform.rotation.z.ToString(); ((UnityEvent<string>)(object)inputs[i].onValueChanged).AddListener((UnityAction<string>)delegate(string s) { UpdateTransforms(s, (SnapAxis)4, position: false); }); break; case 6: { TMP_InputField obj = inputs[i]; val = ((Component)this).transform.localScale; obj.text = ((Vector3)(ref val)).magnitude.ToString(); ((UnityEvent<string>)(object)inputs[i].onValueChanged).AddListener((UnityAction<string>)delegate(string s) { UpdateTransforms(s, (SnapAxis)0); }); break; } } } } private void OnDisable() { for (int i = 0; i < inputs.Length; i++) { ((UnityEventBase)inputs[i].onValueChanged).RemoveAllListeners(); } } public void Start() { //IL_000d: 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_0045: 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_0061: Expected O, but got Unknown //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Expected O, but got Unknown ((Component)this).transform.position = target.position; ((Component)this).transform.rotation = ((Component)target).transform.rotation; ((Component)this).transform.localScale = ((Component)target).transform.localScale; targetRect = (RectTransform)target; panelRectTransform = (RectTransform)((Component)this).transform; } public void UpdateTransforms(string s, SnapAxis axis, bool position = true) { //IL_0056: 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_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_0069: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_006e: 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_008b: Expected I4, but got Unknown //IL_018f: 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_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00c8: Unknown result type (might be due to invalid IL or missing references) //IL_00cf: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_009f: 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_0115: Unknown result type (might be due to invalid IL or missing references) //IL_011d: Unknown result type (might be due to invalid IL or missing references) //IL_0124: 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_00f3: Unknown result type (might be due to invalid IL or missing references) //IL_00fa: 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_0167: Unknown result type (might be due to invalid IL or missing references) //IL_016e: 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_017b: Unknown result type (might be due to invalid IL or missing references) //IL_0145: Unknown result type (might be due to invalid IL or missing references) //IL_014b: Unknown result type (might be due to invalid IL or missing references) //IL_0152: Unknown result type (might be due to invalid IL or missing references) if (MainPlugin.debug) { Debug.LogWarning((object)s); Debug.LogWarning((object)("axis: " + ((object)(SnapAxis)(ref axis)).ToString())); } if (Utility.IsNullOrWhiteSpace(s)) { return; } float num = 1f; TextSerialization.TryParseInvariant(s, ref num); Vector3 position2 = ((Component)this).transform.position; Quaternion rotation = ((Component)this).transform.rotation; SnapAxis val = axis; SnapAxis val2 = val; switch ((int)val2) { case 1: if (position) { ((Component)this).transform.position = new Vector3(num, position2.y, position2.z); } else { ((Component)this).transform.rotation = Quaternion.Euler(new Vector3(num, rotation.y, rotation.z)); } break; case 2: if (position) { ((Component)this).transform.position = new Vector3(position2.x, num, position2.z); } else { ((Component)this).transform.rotation = Quaternion.Euler(new Vector3(rotation.x, num, rotation.z)); } break; case 4: if (position) { ((Component)this).transform.position = new Vector3(position2.x, position2.y, num); } else { ((Component)this).transform.rotation = Quaternion.Euler(new Vector3(rotation.x, rotation.y, num)); } break; case 0: ((Component)this).transform.localScale = Vector3.one * num; break; case 3: break; } } public void OnBeginDrag(PointerEventData eventData) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_002e: 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_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_007a: 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) //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: 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_00fe: Unknown result type (might be due to invalid IL or missing references) //IL_0108: Unknown result type (might be due to invalid IL or missing references) //IL_0129: Unknown result type (might be due to invalid IL or missing references) //IL_013e: Unknown result type (might be due to invalid IL or missing references) //IL_0148: Unknown result type (might be due to invalid IL or missing references) //IL_0155: Unknown result type (might be due to invalid IL or missing references) //IL_015a: Unknown result type (might be due to invalid IL or missing references) //IL_015f: Unknown result type (might be due to invalid IL or missing references) startingPointerPosition = eventData.position; lockedY = false; lockedX = false; ((Transform)panelRectTransform).SetAsLastSibling(); RectTransformUtility.ScreenPointToLocalPointInRectangle(panelRectTransform, eventData.position, eventData.pressEventCamera, ref pointerOffset); previousPointerPosition = eventData.position; panelRectTransform.GetLocalCorners(panelRectCorners); for (int i = 0; i < panelRectCorners.Length; i++) { if (Vector2.Distance(Vector2.op_Implicit(panelRectCorners[i]), pointerOffset) <= scaleCornerRadius) { scale = true; break; } } startSize = ((Component)this).transform.localScale; startingPosition = ((Transform)panelRectTransform).localPosition; behaviour.lineX.transform.position = new Vector3(0f, ((Transform)panelRectTransform).position.y, ((Transform)panelRectTransform).position.z); behaviour.lineY.transform.position = new Vector3(((Transform)panelRectTransform).position.x, 0f, ((Transform)panelRectTransform).position.z); pointerStartingPosition = Vector2.op_Implicit(eventData.position); } public void OnEndDrag(PointerEventData eventData) { lockedY = false; lockedX = false; behaviour.draggingX = false; behaviour.draggingY = false; scale = false; UpdateTexts(); UpdatePreset(); } public void OnDrag(PointerEventData eventData) { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_0037: 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_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0099: 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_015e: Unknown result type (might be due to invalid IL or missing references) //IL_0160: Unknown result type (might be due to invalid IL or missing references) //IL_0165: Unknown result type (might be due to invalid IL or missing references) //IL_016a: Unknown result type (might be due to invalid IL or missing references) //IL_016f: Unknown result type (might be due to invalid IL or missing references) //IL_01fe: Unknown result type (might be due to invalid IL or missing references) //IL_0203: Unknown result type (might be due to invalid IL or missing references) //IL_020b: Unknown result type (might be due to invalid IL or missing references) //IL_0223: 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_0242: Unknown result type (might be due to invalid IL or missing references) //IL_0180: 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_01bf: Unknown result type (might be due to invalid IL or missing references) if (Input.GetKeyDown((KeyCode)324)) { } Vector2 val = default(Vector2); bool flag = RectTransformUtility.ScreenPointToLocalPointInRectangle(canvasRectTransform, eventData.position, eventData.pressEventCamera, ref val); if (scale) { float num = eventData.position.x - previousPointerPosition.x; float num2 = num * sizePerDistance; ((Component)this).transform.localScale = startSize * (1f + num2); } else { if (axisLock) { float num3 = Mathf.Abs(pointerStartingPosition.x - eventData.position.x); float num4 = Mathf.Abs(pointerStartingPosition.y - eventData.position.y); lockedX = num3 > num4; lockedY = num3 < num4; behaviour.draggingX = lockedX; behaviour.draggingY = lockedY; } else { lockedY = false; lockedX = false; behaviour.draggingX = false; behaviour.draggingY = false; } if (Object.op_Implicit((Object)(object)canvasRectTransform) && Object.op_Implicit((Object)(object)panelRectTransform)) { if (flag) { Vector3 val2 = Vector2.op_Implicit(val - pointerOffset); if (lockedX) { ((Vector3)(ref val2))..ctor(val2.x, startingPosition.y, startingPosition.z); } else if (lockedY) { ((Vector3)(ref val2))..ctor(startingPosition.x, val2.y, startingPosition.z); } ((Transform)panelRectTransform).localPosition = val2; } if (behaviour.axisLock) { Vector3 position = ((Component)this).transform.position; ((Component)this).transform.position = new Vector3(Mathf.Round(position.x * behaviour.snapScale), Mathf.Round(position.y * behaviour.snapScale), position.z); } } } UpdateTexts(); } private void UpdateTexts(bool callBack = false) { //IL_0042: 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_006e: 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_009a: Unknown result type (might be due to invalid IL or missing references) //IL_009f: 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_00f0: Unknown result type (might be due to invalid IL or missing references) //IL_00f5: Unknown result type (might be due to invalid IL or missing references) //IL_011a: Unknown result type (might be due to invalid IL or missing references) //IL_011f: 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) for (int i = 0; i < inputs.Length; i++) { switch (i) { case 0: inputs[i].SetText(((Component)this).transform.position.x.ToString(), callBack); break; case 1: inputs[i].SetText(((Component)this).transform.position.y.ToString(), callBack); break; case 2: inputs[i].SetText(((Component)this).transform.position.z.ToString(), callBack); break; case 3: inputs[i].SetText(((Component)this).transform.rotation.x.ToString(), callBack); break; case 4: inputs[i].SetText(((Component)this).transform.rotation.y.ToString(), callBack); break; case 5: inputs[i].SetText(((Component)this).transform.rotation.z.ToString(), callBack); break; case 6: inputs[i].SetText(((Component)this).transform.localScale.x.ToString(), callBack); break; } } } private void UpdatePreset() { //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_005f: 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_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_0079: Unknown result type (might be due to invalid IL or missing references) if (!(Configs.hudData.defaultPreset == "Default")) { HUDData.PresetData presetDataByName = Configs.hudData.GetPresetDataByName(Configs.hudData.defaultPreset); HUDData.TransformData transformDataByName = presetDataByName.GetTransformDataByName(((Object)this).name); if (transformDataByName != null) { transformDataByName.position = ((Component)this).transform.position; Quaternion rotation = ((Component)this).transform.rotation; transformDataByName.rotation = ((Quaternion)(ref rotation)).eulerAngles; transformDataByName.scale = ((Component)this).transform.localScale.x; } } } private void Update() { //IL_0007: 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_0069: 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_0097: Unknown result type (might be due to invalid IL or missing references) axisLock = Input.GetKey(Configs.AxisLockKey.Value); if (Input.GetKeyDown(Configs.ShowTransforms.Value)) { windowTransforms.SetActive(!windowTransforms.activeInHierarchy); UpdateTexts(); } if (Object.op_Implicit((Object)(object)target)) { target.position = ((Component)this).transform.position; target.rotation = ((Component)this).transform.rotation; target.localScale = ((Component)this).transform.localScale; } } } internal class Dropdown : TMP_Dropdown { public override GameObject CreateBlocker(Canvas rootCanvas) { return null; } } [Serializable] internal class TransformInputValidator : TMP_InputValidator { public override char Validate(ref string text, ref int pos, char ch) { if (char.IsNumber(ch) || ch == '-' || ch == '.') { text += ch; pos++; return ch; } return '\0'; } private long ConvertToInt(string inputText) { StringBuilder stringBuilder = new StringBuilder(); foreach (char c in inputText) { if (char.IsDigit(c)) { stringBuilder.Append(c); } } return long.Parse(stringBuilder.ToString()); } public static TransformInputValidator NewValidator() { return ScriptableObject.CreateInstance<TransformInputValidator>(); } } internal class ItemCountBehaviour : MonoBehaviour { private HGTextMeshProUGUI text; public ScoreboardStrip scoreboard; private Inventory inventory; public readonly string count = "<color=#FFFFFF>{0}</color> <color=#77FF17>{1}</color> <color=#E7543A>{2}</color> <color=#FFEB04>{3}</color> <color=#307FFF>{4}</color> <color=#ED7FCD>{5}</color> <color=#FF8000>{6}</color>"; private void OnEnable() { if (!Object.op_Implicit((Object)(object)text)) { text = ((Component)this).GetComponent<HGTextMeshProUGUI>(); } if (!Object.op_Implicit((Object)(object)inventory) && Object.op_Implicit((Object)(object)scoreboard) && Object.op_Implicit((Object)(object)scoreboard.itemInventoryDisplay)) { inventory = scoreboard.itemInventoryDisplay.inventory; } UpdateCounters(); Inventory.onInventoryChangedGlobal += Inventory_onInventoryChangedGlobal; } private void OnDisable() { Inventory.onInventoryChangedGlobal -= Inventory_onInventoryChangedGlobal; } private string ToString(int i) { string text = i.ToString(); return (i <= 0) ? text : ((i < 10) ? ("0" + text) : text); } private void UpdateCounters() { //IL_0037: 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_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0045: 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_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_0073: 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_0077: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: Expected I4, but got Unknown if (!Object.op_Implicit((Object)(object)inventory) || !Object.op_Implicit((Object)(object)text)) { return; } int num = 0; int num2 = 0; int num3 = 0; int num4 = 0; int num5 = 0; int num6 = 0; int num7 = 0; Enumerator<ItemDef> enumerator = ItemCatalog.allItemDefs.GetEnumerator(); try { while (enumerator.MoveNext()) { ItemDef current = enumerator.Current; int itemCount = inventory.GetItemCount(current.itemIndex); ItemTier tier = current.tier; ItemTier val = tier; switch ((int)val) { case 0: num += itemCount; break; case 1: num2 += itemCount; break; case 2: num3 += itemCount; break; case 4: num4 += itemCount; break; case 3: num5 += itemCount; break; case 6: case 7: case 8: case 9: num6 += itemCount; break; case 10: num7 += itemCount; break; } } } finally { ((IDisposable)enumerator).Dispose(); } string[] array = new string[7] { ToString(num), ToString(num2), ToString(num3), ToString(num4), ToString(num5), ToString(num6), ToString(num7) }; HGTextMeshProUGUI obj = text; string format = count; object[] args = array; ((TMP_Text)obj).text = string.Format(format, args); } private void Inventory_onInventoryChangedGlobal(Inventory inv) { if ((Object)(object)inv == (Object)(object)inventory) { UpdateCounters(); } } } internal class MultiKillTracker : MonoBehaviour { private CharacterMaster master; private CharacterBody body; public int multiKillCount; private void Start() { master = ((Component)this).GetComponent<CharacterMaster>(); } private void Update() { if (!Object.op_Implicit((Object)(object)body) && master.hasBody) { body = master.GetBody(); } else { multiKillCount = Math.Max(multiKillCount, body.multiKillCount); } } } internal class StatPanelBehaviour : MonoBehaviour { public HUD HUD; private bool added; public CharacterBody targetBody; public HGTextMeshProUGUI targetText; public GameObject label; public GameObject statStrip; public MultiKillTracker tracker; private string stats => "Max HP: " + Math.Max(0f, targetBody.healthComponent.fullHealth) + Environment.NewLine + "Full HP: " + Math.Max(0f, targetBody.healthComponent.fullCombinedHealth) + Environment.NewLine + "Regen: " + targetBody.regen + Environment.NewLine + "Damage: " + targetBody.damage + Environment.NewLine + "Atk Speed: " + targetBody.attackSpeed + Environment.NewLine + "Crit: " + targetBody.crit + Environment.NewLine + "Crit Damage: " + targetBody.critMultiplier + "x" + Environment.NewLine + "Speed: " + Math.Round(((Vector3)(ref targetBody.characterMotor.velocity)).magnitude, 1) + Environment.NewLine + "Armor: " + targetBody.armor + Environment.NewLine + "Shield: " + targetBody.healthComponent.shield + Environment.NewLine + "Barrier: " + Mathf.CeilToInt(targetBody.healthComponent.barrier) + Environment.NewLine + "Jumps: " + (targetBody.maxJumpCount - targetBody.characterMotor.jumpCount) + Environment.NewLine + "Multi Kill Count: " + targetBody.multiKillCount + Environment.NewLine + "Highest Multi Kill: " + tracker.multiKillCount + Environment.NewLine + "Elite Status: " + targetBody.GetEliteBuff() + Environment.NewLine + Environment.NewLine; private void Awake() { HUD = ((Component)this).GetComponent<HUD>(); } private void OnDisable() { if (Object.op_Implicit((Object)(object)targetText)) { Object.Destroy((Object)(object)((Component)((TMP_Text)targetText).transform.parent).gameObject); } if (Object.op_Implicit((Object)(object)label)) { Object.Destroy((Object)(object)label); } Object.Destroy((Object)(object)this); } private void Update() { //IL_012f: 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) if (Configs.enableScoreboardStats.Value && Object.op_Implicit((Object)(object)HUD) && Object.op_Implicit((Object)(object)HUD.scoreboardPanel) && Object.op_Implicit((Object)(object)label) && Object.op_Implicit((Object)(object)statStrip)) { bool activeInHierarchy = HUD.scoreboardPanel.activeInHierarchy; label.SetActive(activeInHierarchy); statStrip.SetActive(activeInHierarchy); } if (!added && Object.op_Implicit((Object)(object)HUD) && Object.op_Implicit((Object)(object)HUD.targetBodyObject) && Object.op_Implicit((Object)(object)HUD.gameModeUiInstance)) { added = true; targetBody = HUD.targetBodyObject.GetComponentInChildren<CharacterBody>(); tracker = targetBody.masterObject.AddComponent<MultiKillTracker>(); ObjectivePanelController componentInChildren = HUD.gameModeUiInstance.GetComponentInChildren<ObjectivePanelController>(); GameObject gameObject = ((Component)((Component)componentInChildren).GetComponentInChildren<LabelSkinController>()).gameObject; label = Object.Instantiate<GameObject>(gameObject, gameObject.transform.parent); label.transform.localPosition = Vector3.zero; label.transform.SetAsFirstSibling(); label.GetComponent<LanguageTextMeshController>().token = Language.GetString(targetBody.baseNameToken) + " " + Language.GetString("STAT_TITLE") + ":"; GameObject objectiveTrackerPrefab = componentInChildren.objectiveTrackerPrefab; if (Object.op_Implicit((Object)(object)objectiveTrackerPrefab)) { Transform parent = objectiveTrackerPrefab.transform.parent; statStrip = Object.Instantiate<GameObject>(objectiveTrackerPrefab, parent); statStrip.SetActive(true); statStrip.transform.localPosition = Vector3.zero; ((Component)statStrip.transform.GetChild(0)).gameObject.SetActive(false); statStrip.transform.SetAsLastSibling(); targetText = statStrip.GetComponentInChildren<HGTextMeshProUGUI>(); ((TMP_Text)targetText).fontSize = 14f; ((TMP_Text)targetText).alignment = (TextAlignmentOptions)513; gameObject.transform.SetParent(parent); } } else if (Object.op_Implicit((Object)(object)targetText) && Object.op_Implicit((Object)(object)targetBody) && Object.op_Implicit((Object)(object)tracker)) { if (Object.op_Implicit((Object)(object)label) && label.transform.GetSiblingIndex() != 0) { label.transform.SetSiblingIndex(0); } if (((TMP_Text)targetText).transform.parent.GetSiblingIndex() != 1) { ((TMP_Text)targetText).transform.parent.SetSiblingIndex(1); } ((TMP_Text)targetText).text = stats; } } } internal class Configs { internal static ConfigFile config; internal static HUDData hudData; internal static string jsonFilePath; internal static readonly bool ResetHUDData; internal static ConfigEntry<bool> enableTooltipImprovements; internal static ConfigEntry<bool> enableBodyStats; internal static ConfigEntry<bool> enableCommandImprovements; internal static ConfigEntry<bool> enableMenuPause; internal static ConfigEntry<bool> enableBuffTimer; internal static ConfigEntry<bool> enableItemCounter; internal static ConfigEntry<bool> enableDPS; internal static ConfigEntry<float> DPSResetTimer; internal static ConfigEntry<float> DPSRefreshTimer; internal static ConfigEntry<KeyCode> DPSRefreshKey; internal static ConfigEntry<bool> enableCustomHUD; internal static ConfigEntry<KeyCode> HUDToggleKey; internal static ConfigEntry<KeyCode> SnappingToggleKey; internal static ConfigEntry<KeyCode> IncreaseSnap; internal static ConfigEntry<KeyCode> DecreaseSnap; internal static ConfigEntry<KeyCode> GridToggleKey; internal static ConfigEntry<KeyCode> AxisLockKey; internal static ConfigEntry<KeyCode> ShowTransforms; internal static ConfigEntry<bool> enableBuffCountdown; internal static ConfigEntry<bool> enableBuffClockdown; internal static ConfigEntry<bool> enableScoreboardStats; internal static void Init() { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Expected O, but got Unknown config = new ConfigFile(Paths.ConfigPath + "\\ImprovedUI\\ImprovedUI.cfg", true); string text = "01 - General"; enableCommandImprovements = config.Bind<bool>(text, "Enable Command Improvements", true, (ConfigDescription)null); enableTooltipImprovements = config.Bind<bool>(text, "Enable Item Tooltip Improvements", true, "This will also add tooltips to items on the Command panel."); enableBodyStats = config.Bind<bool>(text, "Enable Survivor Stats", true, (ConfigDescription)null); enableMenuPause = config.Bind<bool>(text, "Enable Item Selection Menu Pause", true, "Pauses the game in single player, works for Command, Scrappers and Void Cradles."); enableDPS = config.Bind<bool>(text, "Enable DPS Meter", true, (ConfigDescription)null); enableCustomHUD = config.Bind<bool>(text, "Enable Customizable HUD", true, "This will enable draggable hud elements and preset features."); enableBuffTimer = config.Bind<bool>(text, "Enable Buff Timer", true, (ConfigDescription)null); enableItemCounter = config.Bind<bool>(text, "Enable Item Counters On Scoreboard", true, (ConfigDescription)null); string text2 = "02 - DPSMeter"; DPSResetTimer = config.Bind<float>(text2, "DPS Meter Reset Time", 10000f, (ConfigDescription)null); DPSRefreshTimer = config.Bind<float>(text2, "DPS Meter Refresh Time", 50f, (ConfigDescription)null); DPSRefreshKey = config.Bind<KeyCode>(text2, "DPS Meter Reset Key", (KeyCode)107, (ConfigDescription)null); string text3 = "03 - Customizable HUD"; HUDToggleKey = config.Bind<KeyCode>(text3, "Toggle Customization Key", (KeyCode)108, (ConfigDescription)null); GridToggleKey = config.Bind<KeyCode>(text3, "Grid View Key", (KeyCode)103, (ConfigDescription)null); SnappingToggleKey = config.Bind<KeyCode>(text3, "Enable Snapping Key", (KeyCode)110, (ConfigDescription)null); IncreaseSnap = config.Bind<KeyCode>(text3, "Increase Snap Size", (KeyCode)43, "Mouse scroll up also works."); DecreaseSnap = config.Bind<KeyCode>(text3, "Decrease Snap Size", (KeyCode)45, "Mouse scroll down also works."); AxisLockKey = config.Bind<KeyCode>(text3, "Axis Lock Key", (KeyCode)304, (ConfigDescription)null); ShowTransforms = config.Bind<KeyCode>(text3, "Show/Hide Window Transforms", (KeyCode)116, (ConfigDescription)null); string text4 = "04 - Buff Timer"; enableBuffCountdown = config.Bind<bool>(text4, "Enable Buff Timer Countdown", true, "This will show a countdown on top of the buff icon."); enableBuffClockdown = config.Bind<bool>(text4, "Enable Buff Timer Dark Icon Overlay", true, "This will show a darker icon overlay, that fills up clockwise."); string text5 = "05 - Body Stats"; enableScoreboardStats = config.Bind<bool>(text5, "Show Stats With Scoreboard", false, "The body stats will only show up when the scoreboard is shown."); if (enableCustomHUD.Value && MainPlugin.debug) { LoadTransformDataFromJson(); } } internal static void LoadTransformDataFromJson() { jsonFilePath = Path.Combine(Path.GetDirectoryName(config.ConfigFilePath), "HUDData.json"); string text = ""; bool flag = true; bool flag2 = true; if (File.Exists(jsonFilePath)) { text = File.ReadAllText(jsonFilePath); try { JSONNode.Parse(text); } catch { Debug.LogWarning((object)"[ImprovedUI] HUD config file malformed. Using defaults."); flag = false; } } else { Debug.LogWarning((object)"[ImprovedUI] HUD config file not found. Using defaults."); flag = false; flag2 = false; } if (!flag) { using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("ImprovedUI.HUDData.json")) { text = new StreamReader(stream).ReadToEnd(); } if (!flag2) { File.WriteAllText(jsonFilePath, text); } } hudData = new HUDData(JSON.Parse(text)); } } internal class Hook { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static hook_SetPickupOptions <>9__0_0; public static hook_OnDisplayEnd <>9__0_1; internal void <Hooks>b__0_0(orig_SetPickupOptions o, PickupPickerPanel s, Option[] c) { o.Invoke(s, c); if (RoR2Application.isInSinglePlayer) { Time.timeScale = 0f; } } internal void <Hooks>b__0_1(orig_OnDisplayEnd o, PickupPickerController e, NetworkUIPromptController a, LocalUser i, CameraRigController f) { o.Invoke(e, a, i, f); if (RoR2Application.isInSinglePlayer) { Time.timeScale = 1f; } } } internal static void Hooks() { //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Expected O, but got Unknown //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Expected O, but got Unknown //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Expected O, but got Unknown //IL_0085: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Expected O, but got Unknown //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_00b5: Expected O, but got Unknown if (MainPlugin.debug) { } if (Configs.enableCommandImprovements.Value) { PickupPickerPanel.SetPickupOptions += new hook_SetPickupOptions(PickupPickerPanel_SetPickupOptions); } if (Configs.enableTooltipImprovements.Value) { TooltipController.SetTooltipProvider += new hook_SetTooltipProvider(TooltipController_SetTooltipProvider); EquipmentIcon.Update += new hook_Update(EquipmentIcon_Update); } if (!Configs.enableMenuPause.Value) { return; } object obj = <>c.<>9__0_0; if (obj == null) { hook_SetPickupOptions val = delegate(orig_SetPickupOptions o, PickupPickerPanel s, Option[] c) { o.Invoke(s, c); if (RoR2Application.isInSinglePlayer) { Time.timeScale = 0f; } }; <>c.<>9__0_0 = val; obj = (object)val; } PickupPickerPanel.SetPickupOptions += (hook_SetPickupOptions)obj; object obj2 = <>c.<>9__0_1; if (obj2 == null) { hook_OnDisplayEnd val2 = delegate(orig_OnDisplayEnd o, PickupPickerController e, NetworkUIPromptController a, LocalUser i, CameraRigController f) { o.Invoke(e, a, i, f); if (RoR2Application.isInSinglePlayer) { Time.timeScale = 1f; } }; <>c.<>9__0_1 = val2; obj2 = (object)val2; } PickupPickerController.OnDisplayEnd += (hook_OnDisplayEnd)obj2; } private static void EquipmentIcon_Update(orig_Update orig, EquipmentIcon self) { orig.Invoke(self); if (Object.op_Implicit((Object)(object)self.tooltipProvider) && ((DisplayData)(ref self.currentDisplayData)).isReady && Object.op_Implicit((Object)(object)self.currentDisplayData.equipmentDef)) { string @string = Language.GetString(self.currentDisplayData.equipmentDef.descriptionToken); self.tooltipProvider.overrideBodyText = @string; } } private static void PickupPickerPanel_SetPickupOptions(orig_SetPickupOptions orig, PickupPickerPanel self, Option[] options) { //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0234: Unknown result type (might be due to invalid IL or missing references) //IL_0239: Unknown result type (might be due to invalid IL or missing references) //IL_0240: Unknown result type (might be due to invalid IL or missing references) //IL_024a: Unknown result type (might be due to invalid IL or missing references) //IL_024f: Unknown result type (might be due to invalid IL or missing references) //IL_025c: Unknown result type (might be due to invalid IL or missing references) //IL_0263: Unknown result type (might be due to invalid IL or missing references) //IL_026d: Unknown result type (might be due to invalid IL or missing references) //IL_0272: Unknown result type (might be due to invalid IL or missing references) //IL_006b: 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_0085: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_01ab: Unknown result type (might be due to invalid IL or missing references) //IL_01ad: Unknown result type (might be due to invalid IL or missing references) //IL_019c: Unknown result type (might be due to invalid IL or missing references) //IL_01a1: Unknown result type (might be due to invalid IL or missing references) //IL_01a6: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Invalid comparison between Unknown and I4 //IL_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Invalid comparison between Unknown and I4 //IL_00c0: 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_0101: Unknown result type (might be due to invalid IL or missing references) //IL_0107: Invalid comparison between Unknown and I4 //IL_00e8: 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_00f2: Unknown result type (might be due to invalid IL or missing references) //IL_00f7: Unknown result type (might be due to invalid IL or missing references) //IL_0112: Unknown result type (might be due to invalid IL or missing references) //IL_0117: Unknown result type (might be due to invalid IL or missing references) //IL_011c: 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_0131: Unknown result type (might be due to invalid IL or missing references) //IL_0137: Invalid comparison between Unknown and I4 //IL_0145: Unknown result type (might be due to invalid IL or missing references) //IL_014a: Unknown result type (might be due to invalid IL or missing references) //IL_014f: Unknown result type (might be due to invalid IL or missing references) //IL_0154: Unknown result type (might be due to invalid IL or missing references) //IL_0164: Unknown result type (might be due to invalid IL or missing references) //IL_016a: Invalid comparison between Unknown and I4 //IL_0178: Unknown result type (might be due to invalid IL or missing references) //IL_017d: Unknown result type (might be due to invalid IL or missing references) //IL_0182: Unknown result type (might be due to invalid IL or missing references) //IL_0187: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self, options); int num = options.Length; for (int i = 0; i < num; i++) { MPButton val = self.buttonAllocator.elements[i]; TooltipProvider val2 = (Object.op_Implicit((Object)(object)val) ? ((Component)val).GetComponent<TooltipProvider>() : null); PickupDef pickupDef = PickupCatalog.GetPickupDef(options[i].pickupIndex); if (!Object.op_Implicit((Object)(object)val2) || pickupDef == null) { continue; } ItemDef itemDef = ItemCatalog.GetItemDef(pickupDef.itemIndex); EquipmentDef equipmentDef = EquipmentCatalog.GetEquipmentDef(pickupDef.equipmentIndex); Color titleColor = Color.white; if (Object.op_Implicit((Object)(object)itemDef)) { ItemTierDef val3 = (Object.op_Implicit((Object)(object)itemDef._itemTierDef) ? itemDef._itemTierDef : ItemTierCatalog.GetItemTierDef(((int)itemDef.deprecatedTier != 5) ? itemDef.deprecatedTier : itemDef.tier)); if ((int)itemDef.darkColorIndex > 0) { titleColor = Color32.op_Implicit(ColorCatalog.GetColor(itemDef.darkColorIndex)); } else if ((int)itemDef.colorIndex > 0) { titleColor = Color32.op_Implicit(ColorCatalog.GetColor(itemDef.colorIndex)); } else if (Object.op_Implicit((Object)(object)val3) && (int)val3.darkColorIndex > 0) { titleColor = Color32.op_Implicit(ColorCatalog.GetColor(val3.darkColorIndex)); } else if (Object.op_Implicit((Object)(object)val3) && (int)val3.colorIndex > 0) { titleColor = Color32.op_Implicit(ColorCatalog.GetColor(val3.colorIndex)); } } else if (Object.op_Implicit((Object)(object)equipmentDef)) { titleColor = Color32.op_Implicit(ColorCatalog.GetColor((ColorIndex)5)); } val2.titleColor = titleColor; val2.titleToken = (Object.op_Implicit((Object)(object)itemDef) ? itemDef.nameToken : equipmentDef.nameToken); val2.bodyToken = (Object.op_Implicit((Object)(object)itemDef) ? itemDef.descriptionToken : equipmentDef.descriptionToken); } GridLayoutGroup componentInChildren = ((Component)self).GetComponentInChildren<GridLayoutGroup>(); if (Object.op_Implicit((Object)(object)((Component)self).GetComponent<Command>()) && Object.op_Implicit((Object)(object)componentInChildren)) { RectTransform component = ((Component)componentInChildren).GetComponent<RectTransform>(); component.sizeDelta += Vector2.up * (float)num * 14.5f; ((Transform)component).localPosition = Vector2.op_Implicit(Vector2.up * (float)num * -25.7f); } } private static void EquipmentIcon_SetDisplayData(orig_SetDisplayData orig, EquipmentIcon self, DisplayData newDisplayData) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_002e: 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) orig.Invoke(self, (ValueType)(object)newDisplayData); if (Object.op_Implicit((Object)(object)self.tooltipProvider) && Utility.IsNullOrWhiteSpace(self.tooltipProvider.overrideBodyText) && (Object)(object)newDisplayData.equipmentDef != (Object)null) { self.tooltipProvider.overrideBodyText = newDisplayData.equipmentDef.descriptionToken; } } private static void TooltipController_SetTooltipProvider(orig_SetTooltipProvider orig, TooltipController self, TooltipProvider provider) { //IL_002b: Unknown result type (might be due to invalid IL or missing references) ItemIcon component = ((Component)provider).GetComponent<ItemIcon>(); EquipmentIcon component2 = ((Component)provider).GetComponent<EquipmentIcon>(); if (Object.op_Implicit((Object)(object)component) && Utility.IsNullOrWhiteSpace(provider.overrideBodyText)) { ItemDef itemDef = ItemCatalog.GetItemDef(component.itemIndex); if (Object.op_Implicit((Object)(object)itemDef)) { provider.overrideBodyText = Language.GetString(itemDef.descriptionToken); } } orig.Invoke(self, provider); } } [Serializable] internal class HUDData { [Serializable] internal class PresetData { internal string name; internal Dictionary<string, TransformData> transforms = new Dictionary<string, TransformData>(); public TransformData GetTransformDataByName(string transformName) { TransformData value = null; transforms.TryGetValue(transformName, out value); if (MainPlugin.debug) { if (value != null) { Debug.LogWarning((object)value.name); } else { Debug.LogWarning((object)("NO TRANSFORMDATA: " + transformName)); } } return value; } internal void AddTransformData(TransformData transformData) { transforms.Add(transformData.name, transformData); } internal PresetData(string name) { this.name = name; } internal PresetData() { } } [Serializable] internal class TransformData { internal string name; internal Vector3 position; internal Vector3 rotation; internal float scale; internal TransformData(string name, Vector3 position, Vector3 rotation, float scale) { //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_0017: 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) this.name = name; this.position = position; this.rotation = rotation; this.scale = scale; } internal TransformData() { } } internal string defaultPreset = "Default"; internal List<PresetData> presets = new List<PresetData>(); internal void SaveHUDData() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_000d: 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_0015: Expected O, but got Unknown //IL_001a: Expected O, but got Unknown //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Expected O, but got Unknown //IL_004e: Expected O, but got Unknown //IL_007b: 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_0083: Expected O, but got Unknown //IL_0088: Expected O, but got Unknown //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_009c: Expected O, but got Unknown //IL_00a1: Expected O, but got Unknown //IL_00d6: Unknown result type (might be due to invalid IL or missing references) //IL_00db: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Expected O, but got Unknown //IL_00e3: Expected O, but got Unknown //IL_00ef: Unknown result type (might be due to invalid IL or missing references) //IL_00f4: Unknown result type (might be due to invalid IL or missing references) //IL_00f7: Expected O, but got Unknown //IL_00fc: Expected O, but got Unknown //IL_0162: Unknown result type (might be due to invalid IL or missing references) //IL_0167: Unknown result type (might be due to invalid IL or missing references) //IL_016a: Expected O, but got Unknown //IL_016f: Expected O, but got Unknown JSONNode val = (JSONNode)new JSONObject(); JSONObject val2 = new JSONObject(); JSONNode val3 = (JSONNode)val2; val["HUDData"] = (JSONNode)val2; JSONNode val4 = val3; val3 = (val4["DefaultPreset"] = JSONNode.op_Implicit(defaultPreset)); JSONNode val6 = val3; JSONObject val7 = new JSONObject(); val3 = (JSONNode)val7; val4["Presets"] = (JSONNode)val7; JSONNode val8 = val3; foreach (PresetData preset in presets) { PresetData presetData = preset; string name = presetData.name; JSONObject val9 = new JSONObject(); val3 = (JSONNode)val9; val8[name] = (JSONNode)val9; JSONNode val10 = val3; JSONObject val11 = new JSONObject(); val3 = (JSONNode)val11; val10["HUDElements"] = (JSONNode)val11; JSONNode val12 = val3; foreach (KeyValuePair<string, TransformData> transform in presetData.transforms) { TransformData value = transform.Value; string name2 = value.name; JSONObject val13 = new JSONObject(); val3 = (JSONNode)val13; val12[name2] = (JSONNode)val13; JSONNode val14 = val3; JSONObject val15 = new JSONObject(); val3 = (JSONNode)val15; val14["Position"] = (JSONNode)val15; JSONNode val16 = val3; val16["x"] = JSONNode.op_Implicit(value.position.x); val16["y"] = JSONNode.op_Implicit(value.position.y); val16["z"] = JSONNode.op_Implicit(value.position.z); JSONObject val17 = new JSONObject(); val3 = (JSONNode)val17; val14["Rotation"] = (JSONNode)val17; JSONNode val18 = val3; val18["x"] = JSONNode.op_Implicit(value.rotation.x); val18["y"] = JSONNode.op_Implicit(value.rotation.y); val18["z"] = JSONNode.op_Implicit(value.rotation.z); val14["Scale"] = JSONNode.op_Implicit(value.scale); } } File.WriteAllText(Configs.jsonFilePath, val.ToString(1), Encoding.UTF8); } internal PresetData GetPresetDataByName(string presetName) { PresetData presetData = presets.Find((PresetData x) => x.name == presetName); if (MainPlugin.debug) { if (presetData != null) { Debug.LogWarning((object)presetData.name); } else { Debug.LogWarning((object)("NO PRESET: " + presetName)); } } return presetData; } internal HUDData() { } internal HUDData(JSONNode jsonObject) { //IL_0132: Unknown result type (might be due to invalid IL or missing references) //IL_016a: Unknown result type (might be due to invalid IL or missing references) JSONNode val = jsonObject["HUDData"]; HUDData hUDData = new HUDData { defaultPreset = JSONNode.op_Implicit(val["DefaultPreset"]) }; List<JSONNode> list = val["Presets"].Children.ToList(); List<string> list2 = val["Presets"].Keys.ToList(); for (int i = 0; i < list.Count; i++) { JSONNode val2 = list[i]; PresetData presetData = new PresetData(list2[i]); List<JSONNode> list3 = val2["HUDElements"].Children.ToList(); List<string> list4 = val2["HUDElements"].Keys.ToList(); for (int j = 0; j < list3.Count; j++) { JSONNode val3 = list3[j]; JSONNode val4 = val3["Position"]; JSONNode val5 = val3["Rotation"]; presetData.AddTransformData(new TransformData(list4[j], new Vector3(JSONNode.op_Implicit(val4["x"]), JSONNode.op_Implicit(val4["y"]), JSONNode.op_Implicit(val4["z"])), new Vector3(JSONNode.op_Implicit(val5["x"]), JSONNode.op_Implicit(val5["y"]), JSONNode.op_Implicit(val5["z"])), JSONNode.op_Implicit(val3["Scale"]))); Debug.LogWarning((object)(list4[j] + " scale: " + JSONNode.op_Implicit(val3["Scale"]))); } presets.Add(presetData); } } } [BepInIncompatibility("AAAHIFU.CleanerHud")] [BepInIncompatibility("com.xoxfaby.BetterUI")] [BepInIncompatibility("bubbet.riskui")] [BepInPlugin("com.Dragonyck.ImprovedUI", "ImprovedUI", "1.2.1")] public class MainPlugin : BaseUnityPlugin { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static hook_OnClientConnect <>9__4_0; internal void <Awake>b__4_0(orig_OnClientConnect self, NetworkManagerSystemSteam user, NetworkConnection t) { } } public const string MODUID = "com.Dragonyck.ImprovedUI"; public const string MODNAME = "ImprovedUI"; public const string VERSION = "1.2.1"; internal static bool debug; private void Awake() { //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_002a: Expected O, but got Unknown if (debug) { object obj = <>c.<>9__4_0; if (obj == null) { hook_OnClientConnect val = delegate { }; <>c.<>9__4_0 = val; obj = (object)val; } NetworkManagerSystemSteam.OnClientConnect += (hook_OnClientConnect)obj; } Configs.Init(); Prefabs.CreatePrefabs(); Hook.Hooks(); } } internal class Prefabs { internal static GameObject commandPanelPrefab; internal static GameObject inputBoxPrefab; internal static GameObject dontDestroyOnLoad; internal static GameObject windowTransformPrefab; internal static GameObject buffIconPrefab; internal static Sprite dragWindowSprite; internal static Shader defaultShader; internal static Shader UIShader; internal static T Load<T>(string path) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) return Addressables.LoadAssetAsync<T>((object)path).WaitForCompletion(); } internal static void CreatePrefabs() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Expected O, but got Unknown //IL_02b7: Unknown result type (might be due to invalid IL or missing references) //IL_02c1: Unknown result type (might be due to invalid IL or missing references) //IL_02ce: Unknown result type (might be due to invalid IL or missing references) //IL_02d8: Unknown result type (might be due to invalid IL or missing references) //IL_02dd: Unknown result type (might be due to invalid IL or missing references) //IL_02f4: Unknown result type (might be due to invalid IL or missing references) //IL_030b: Unknown result type (might be due to invalid IL or missing references) //IL_0341: Unknown result type (might be due to invalid IL or missing references) //IL_039e: Unknown result type (might be due to invalid IL or missing references) //IL_03ab: Unknown result type (might be due to invalid IL or missing references) //IL_03d5: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: 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_04a3: Unknown result type (might be due to invalid IL or missing references) //IL_04aa: Expected O, but got Unknown //IL_04b6: Unknown result type (might be due to invalid IL or missing references) //IL_04cd: Unknown result type (might be due to invalid IL or missing references) //IL_018b: Unknown result type (might be due to invalid IL or missing references) //IL_0198: Unknown result type (might be due to invalid IL or missing references) //IL_01a2: Unknown result type (might be due to invalid IL or missing references) //IL_01af: 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_01c9: Unknown result type (might be due to invalid IL or missing references) //IL_0212: Unknown result type (might be due to invalid IL or missing references) //IL_0217: Unknown result type (might be due to invalid IL or missing references) //IL_059c: Unknown result type (might be due to invalid IL or missing references) //IL_05a1: Unknown result type (might be due to invalid IL or missing references) //IL_05d1: Unknown result type (might be due to invalid IL or missing references) //IL_05e3: Unknown result type (might be due to invalid IL or missing references) //IL_05f5: Unknown result type (might be due to invalid IL or missing references) //IL_062e: Unknown result type (might be due to invalid IL or missing references) //IL_0633: Unknown result type (might be due to invalid IL or missing references) //IL_0665: Unknown result type (might be due to invalid IL or missing references) //IL_066a: Unknown result type (might be due to invalid IL or missing references) //IL_06b2: Unknown result type (might be due to invalid IL or missing references) //IL_06c1: Unknown result type (might be due to invalid IL or missing references) //IL_071c: Unknown result type (might be due to invalid IL or missing references) //IL_072b: Unknown result type (might be due to invalid IL or missing references) //IL_0770: Unknown result type (might be due to invalid IL or missing references) //IL_0775: Unknown result type (might be due to invalid IL or missing references) //IL_07df: Unknown result type (might be due to invalid IL or missing references) //IL_07e9: Expected O, but got Unknown //IL_08c6: Unknown result type (might be due to invalid IL or missing references) //IL_08d0: Unknown result type (might be due to invalid IL or missing references) //IL_0a54: Unknown result type (might be due to invalid IL or missing references) //IL_0a5a: Expected O, but got Unknown //IL_0a8f: Unknown result type (might be due to invalid IL or missing references) //IL_0ac1: Unknown result type (might be due to invalid IL or missing references) //IL_0aed: Unknown result type (might be due to invalid IL or missing references) //IL_0b04: Unknown result type (might be due to invalid IL or missing references) //IL_0b09: Unknown result type (might be due to invalid IL or missing references) //IL_0b30: Unknown result type (might be due to invalid IL or missing references) //IL_0b54: Unknown result type (might be due to invalid IL or missing references) //IL_0b5a: Unknown result type (might be due to invalid IL or missing references) //IL_0b89: Unknown result type (might be due to invalid IL or missing references) //IL_0bbb: Unknown result type (might be due to invalid IL or missing references) //IL_0be7: Unknown result type (might be due to invalid IL or missing references) //IL_0c13: Unknown result type (might be due to invalid IL or missing references) //IL_0c4a: Unknown result type (might be due to invalid IL or missing references) //IL_0c61: Unknown result type (might be due to invalid IL or missing references) //IL_0c66: Unknown result type (might be due to invalid IL or missing references) //IL_0c80: Unknown result type (might be due to invalid IL or missing references) //IL_0c8a: Unknown result type (might be due to invalid IL or missing references) //IL_0ca9: Unknown result type (might be due to invalid IL or missing references) //IL_0cb3: Unknown result type (might be due to invalid IL or missing references) //IL_0d00: Unknown result type (might be due to invalid IL or missing references) //IL_0d0a: Unknown result type (might be due to invalid IL or missing references) //IL_0d28: Unknown result type (might be due to invalid IL or missing references) //IL_0d32: Unknown result type (might be due to invalid IL or missing references) //IL_0d5c: Unknown result type (might be due to invalid IL or missing references) //IL_0d63: Expected O, but got Unknown //IL_0e3f: Unknown result type (might be due to invalid IL or missing references) //IL_0e51: Unknown result type (might be due to invalid IL or missing references) //IL_0e5b: Unknown result type (might be due to invalid IL or missing references) //IL_0e8e: Unknown result type (might be due to invalid IL or missing references) //IL_0f5f: Unknown result type (might be due to invalid IL or missing references) //IL_0f69: Unknown result type (might be due to invalid IL or missing references) //IL_0f7b: Unknown result type (might be due to invalid IL or missing references) //IL_0f8a: Unknown result type (might be due to invalid IL or missing references) //IL_0fa5: Unknown result type (might be due to invalid IL or missing references) //IL_0faf: Unknown result type (might be due to invalid IL or missing references) //IL_0fb4: Unknown result type (might be due to invalid IL or missing references) //IL_0fd0: Unknown result type (might be due to invalid IL or missing references) //IL_104f: Unknown result type (might be due to invalid IL or missing references) //IL_1054: Unknown result type (might be due to invalid IL or missing references) //IL_105e: Unknown result type (might be due to invalid IL or missing references) //IL_10f3: Unknown result type (might be due to invalid IL or missing references) //IL_10f8: Unknown result type (might be due to invalid IL or missing references) //IL_1102: Unknown result type (might be due to invalid IL or missing references) //IL_1197: Unknown result type (might be due to invalid IL or missing references) //IL_119c: Unknown result type (might be due to invalid IL or missing references) //IL_11a6: Unknown result type (might be due to invalid IL or missing references) //IL_11ce: Unknown result type (might be due to invalid IL or missing references) //IL_1248: Unknown result type (might be due to invalid IL or missing references) //IL_124d: Unknown result type (might be due to invalid IL or missing references) //IL_1257: Unknown result type (might be due to invalid IL or missing references) dontDestroyOnLoad = new GameObject("dontDestroyOnLoad"); dontDestroyOnLoad.SetActive(false); Object.DontDestroyOnLoad((Object)(object)dontDestroyOnLoad); defaultShader = Load<Shader>("RoR2/Base/Shaders/HGStandard.shader"); UIShader = Load<Shader>("RoR2/Base/Shaders/HGUIIgnoreZ.shader"); if (Configs.enableBuffTimer.Value) { buffIconPrefab = Load<GameObject>("RoR2/Base/UI/BuffIcon.prefab"); BuffTimer buffTimer = buffIconPrefab.AddComponent<BuffTimer>(); GameObject gameObject = ((Component)buffIconPrefab.transform.GetChild(0)).gameObject; ((TMP_Text)gameObject.GetComponent<HGTextMeshProUGUI>()).fontSize = 18f; if (Configs.enableBuffCountdown.Value) { GameObject val = Object.Instantiate<GameObject>(gameObject); val.transform.SetParent(buffIconPrefab.transform); val.transform.localPosition = new Vector3(25f, 65f, 0f); ((Component)val.transform).transform.localScale = Vector3.one; HGTextMeshProUGUI component = val.GetComponent<HGTextMeshProUGUI>(); ((TMP_Text)component).horizontalAlignment = (HorizontalAlignmentOptions)2; buffTimer.countdown = component; ((TMP_Text)val.GetComponent<HGTextMeshProUGUI>()).text = ""; } if (Configs.enableBuffClockdown.Value) { GameObject val2 = NewRect("Clockdown", null, typeof(Image)); RectTransform component2 = val2.GetComponent<RectTransform>(); ((Component)component2).transform.SetParent(buffIconPrefab.transform); component2.pivot = Vector2.zero; component2.sizeDelta = Vector2.one * 48f; ((Transform)component2).localPosition = Vector3.zero; ((Transform)component2).localRotation = Quaternion.identity; ((Transform)component2).localScale = Vector3.one; Image component3 = val2.GetComponent<Image>(); component3.type = (Type)3; component3.fillAmount = 0f; component3.fillOrigin = 2; component3.fillClockwise = true; ((Graphic)component3).color = Color32.op_Implicit(new Color32((byte)62, (byte)62, (byte)62, (byte)200)); buffTimer.fill = component3; } Object.DontDestroyOnLoad((Object)(object)buffIconPrefab); } if (Configs.enableCommandImprovements.Value) { commandPanelPrefab = Load<GameObject>("RoR2/Base/Command/CommandPickerPanel.prefab"); commandPanelPrefab.AddComponent<Command>(); PickupPickerPanel component4 = commandPanelPrefab.GetComponent<PickupPickerPanel>(); component4.maxColumnCount = 6; GridLayoutGroup gridlayoutGroup = component4.gridlayoutGroup; gridlayoutGroup.constraint = (Constraint)1; gridlayoutGroup.constraintCount = 6; ((LayoutGroup)gridlayoutGroup).childAlignment = (TextAnchor)1; RectTransform component5 = ((Component)gridlayoutGroup).GetComponent<RectTransform>(); ((Behaviour)((Component)component5).GetComponent<RawImage>()).enabled = false; component5.sizeDelta = Vector2.right * 444f; ((Transform)component5).localPosition = Vector2.op_Implicit(Vector2.up * 100f); component5.anchorMin = new Vector2(0.5f, 1f); component5.anchorMax = new Vector2(0.5f, 1f); GameObject val3 = NewRect("Scroll", ((Component)gridlayoutGroup).transform.parent); val3.transform.localPosition = ((Component)gridlayoutGroup).transform.localPosition; ((Component)gridlayoutGroup).transform.SetParent(val3.transform); ScrollRect val4 = val3.AddComponent<ScrollRect>(); val4.horizontal = false; val4.content = component5; val4.scrollSensitivity = 30f; RectTransform component6 = ((Component)val4).GetComponent<RectTransform>(); component6.sizeDelta = new Vector2(500f, 510f); ((Transform)component6).localPosition = Vector3.zero; Image val5 = val3.gameObject.AddComponent<Image>(); ((Graphic)val5).color = new Color(0.12549f, 0.12549f, 0.12549f); val5.sprite = Load<Sprite>("RoR2/Base/UI/texUIHighlightBoxOutlineThickIcon.png"); val5.type = (Type)2; val3.gameObject.AddComponent<Mask>(); component4.buttonPrefab.AddComponent<TooltipProvider>(); Object.DontDestroyOnLoad((Object)(object)commandPanelPrefab); } if (Configs.enableItemCounter.Value) { GameObject val6 = Load<GameObject>("RoR2/Base/UI/ScoreboardStrip.prefab"); Object.DontDestroyOnLoad((Object)(object)val6); ScoreboardStrip component7 = val6.GetComponent<ScoreboardStrip>(); TextMeshProUGUI moneyText = component7.moneyText; GameObject val7 = NewRect("Text", ((TMP_Text)moneyText).transform, typeof(HGTextMeshProUGUI), typeof(ItemCountBehaviour)); val7.GetComponent<ItemCountBehaviour>().scoreboard = component7; RectTransform val8 = (RectTransform)val7.transform; ((Transform)val8).localPosition = new Vector3(-100f, 20f); val8.sizeDelta = new Vector2(300f, 50f); HGTextMeshProUGUI component8 = val7.GetComponent<HGTextMeshProUGUI>(); ((TMP_Text)component8).fontSize = 18f; ((TMP_Text)component8).alignment = (TextAlignmentOptions)516; ((TMP_Text)component8).text = ""; } bool value = Configs.enableCustomHUD.Value; bool value2 = Configs.enableDPS.Value; bool value3 = Configs.enableBodyStats.Value; if (!(value || value2 || value3)) { return; } GameObject val9 = Load<GameObject>("RoR2/Base/UI/HUDSimple.prefab"); HUD component9 = val9.GetComponent<HUD>(); ChildLocator component10 = val9.GetComponent<ChildLocator>(); HUDScaleController component11 = val9.GetComponent<HUDScaleController>(); if (value3) { val9.AddComponent<StatPanelBehaviour>(); } if (value2) { GameObject val10 = Object.Instantiate<GameObject>(component9.lunarCoinContainer); ((Graphic)val10.GetComponentInChildren<RawImage>()).color = Color32.op_Implicit(new Color32((byte)166, (byte)117, (byte)115, (byte)34)); val10.transform.SetParent(component9.lunarCoinContainer.transform.parent); val10.transform.localScale = Vector3.one; val10.transform.localPosition = Vector3.zero; val10.transform.localRotation = Quaternion.identity; Object.Destroy((Object)(object)val10.GetComponent<MoneyText>()); HGTextMeshProUGUI[] componentsInChildren = val10.GetComponentsInChildren<HGTextMeshProUGUI>(); ((Graphic)componentsInChildren[0]).color = Color32.op_Implicit(new Color32(byte.MaxValue, (byte)201, (byte)201, byte.MaxValue)); ((TMP_Text)componentsInChildren[0]).text = "0"; ((Graphic)componentsInChildren[1]).color = Color32.op_Implicit(new Color32(byte.MaxValue, (byte)201, (byte)201, byte.MaxValue)); ((TMP_Text)componentsInChildren[1]).text = "<sprite=3 tint = 1>"; DPSBehaviour dPSBehaviour = val10.AddComponent<DPSBehaviour>(); dPSBehaviour.hud = component9; dPSBehaviour.text = componentsInChildren[0]; ((RectTransform)component9.lunarCoinContainer.transform.parent).sizeDelta = new Vector2(201f, 127f); } if (value && MainPlugin.debug) { inputBoxPrefab = NewRect("InputBox", null, typeof(Image), typeof(TMP_InputField)); ((RectTransform)inputBoxPrefab.transform).sizeDelta = new Vector2(110f, 30f); GameObject val11 = NewRect("Text Area", inputBoxPrefab.transform, typeof(RectMask2D)); val11.transform.localPosition = Vector2.op_Implicit(new Vector2(5f, -14f)); val11.layer = LayerIndex.ui.intVal; GameObject val12 = NewRect("Text", val11.transform, typeof(TextMeshProUGUI)); val12.layer = LayerIndex.ui.intVal; TMP_InputField component12 = inputBoxPrefab.GetComponent<TMP_InputField>(); component12.textViewport = (RectTransform)val11.transform; component12.textComponent = (TMP_Text)(object)val12.GetComponent<TextMeshProUGUI>(); component12.pointSize = 20f; component12.characterValidation = (CharacterValidation)8; component12.inputValidator = (TMP_InputValidator)(object)TransformInputValidator.NewValidator(); Image component13 = inputBoxPrefab.GetComponent<Image>(); component13.sprite = Load<Sprite>("RoR2/Base/UI/texUIHighlightBoxOutline.png"); component13.type = (Type)1; windowTransformPrefab = NewRect("WindowTransform",