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 RiskUI v1.5.2
RiskUI.dll
Decompiled 5 months agousing System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using BepInEx.Logging; using HG.Reflection; using HarmonyLib; using JetBrains.Annotations; using Mono.Cecil; using Mono.Cecil.Cil; using MonoMod.Cil; using RiskOfOptions; using RiskOfOptions.OptionConfigs; using RiskOfOptions.Options; using RoR2; using RoR2.UI; using SimpleJSON; using TMPro; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.EventSystems; using UnityEngine.Events; using UnityEngine.UI; using Zio; using ZioConfigFile; using ZioRiskOfOptions; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: OptIn] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("0.0.0.0")] [module: UnverifiableCode] namespace MaterialHud; public class BepinScaleController : MonoBehaviour { public string Category; public string Key; public string Description; private ZioConfigEntry<float> _configValue; private void Awake() { _configValue = ConfigHelper.Bind(Category, Key, 100f, Description, null, 300f); ((ZioConfigEntryBase)_configValue).SettingChanged += SettingChanged; } private void OnEnable() { SettingChanged(null, null, arg3: false); } private void OnDestroy() { ((ZioConfigEntryBase)_configValue).SettingChanged -= SettingChanged; } private void SettingChanged(ZioConfigEntryBase zioConfigEntryBase, object o, bool arg3) { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) float num = _configValue.Value / 100f; Vector3 localScale = ((Component)this).transform.localScale; localScale.y = num; localScale.x = num; ((Component)this).transform.localScale = localScale; } } public class BepinVerticalSpacing : MonoBehaviour { private ZioConfigEntry<float> configEntry; public string desc; public string key; private GridLayoutGroup target; public float Value { get { //IL_0006: Unknown result type (might be due to invalid IL or missing references) return target.spacing.y; } set { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) Vector2 spacing = target.spacing; spacing.y = value; target.spacing = spacing; } } private void Awake() { target = ((Component)this).GetComponent<GridLayoutGroup>(); configEntry = ConfigHelper.Bind("Repositioning", key, Value, desc, null, 200f); ((ZioConfigEntryBase)configEntry).SettingChanged += SettingChanged; } private void OnEnable() { SettingChanged(null, null, arg3: false); } private void OnDestroy() { ((ZioConfigEntryBase)configEntry).SettingChanged -= SettingChanged; } private void SettingChanged(ZioConfigEntryBase zioConfigEntryBase, object o, bool arg3) { Value = configEntry.Value; } } public class CloneFillValue : MonoBehaviour { public Image from; private Image _to; private void Awake() { _to = ((Component)this).GetComponent<Image>(); } private void Update() { _to.fillAmount = from.fillAmount; } } public class AddressablePrefabLoader : MonoBehaviour { public string Address; public bool defaultActiveState = true; private void OnValidate() { Awake(); } private void Awake() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) Object.Instantiate<GameObject>(Addressables.LoadAssetAsync<GameObject>((object)Address).WaitForCompletion(), ((Component)this).transform).SetActive(defaultActiveState); } } public class CombatHealthBarLoader : MonoBehaviour { public CombatHealthBarViewer viewer; private static GameObject HealthBar => Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/UI/CombatHealthbar.prefab").WaitForCompletion(); public void Start() { viewer.healthBarPrefab = HealthBar; } } public class FieldLoader : MonoBehaviour { public string addressablePath; public string targetFieldName; public MonoBehaviour target; private static readonly MethodInfo LoadAsset = typeof(Addressables).GetMethod("LoadAssetAsync", new Type[1] { typeof(string) }); public void Start() { FieldInfo field = ((object)target).GetType().GetField(targetFieldName, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); if (!(field == null)) { object obj = LoadAsset.MakeGenericMethod(field.FieldType).Invoke(null, new object[1] { addressablePath }); object value = obj.GetType().GetMethod("WaitForCompletion", BindingFlags.Instance | BindingFlags.Public).Invoke(obj, null); field.SetValue(target, value); } } } public class NotificationAreaLoader : MonoBehaviour { public NotificationUIController controller; private static GameObject genericNotificationPrefab => Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/UI/NotificationPanel2.prefab").WaitForCompletion(); private static GameObject genericTransformationNotificationPrefab => Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/UI/GenericTransformationNotificationPanel.prefab").WaitForCompletion(); private static GameObject contagiousVoidTransformationNotificationPrefab => Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/UI/VoidTransformationNotificationPanel.prefab").WaitForCompletion(); private static GameObject cloverVoidTransformationNotificationPrefab => Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/CloverVoid/CloverVoidTransformationNotificationPanel.prefab").WaitForCompletion(); private static GameObject regeneratingScrapRegenTransformationNotificationPrefab => Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/RegeneratingScrap/RegeneratingScrapRegenTransformationNotificationPanel.prefab").WaitForCompletion(); private static GameObject lowerPricedChestsRegenTransformationNotificationPanel => Addressables.LoadAssetAsync<GameObject>((object)"Assets/RoR2/DLC2/Items/LowerPricedChests/LowerPricedChestsRegenTransformationNotificationPanel.prefab").WaitForCompletion(); private static GameObject droneRepairNotificationPanel => Addressables.LoadAssetAsync<GameObject>((object)"Assets/RoR2/DLC3/UI/NotificationPanels/DroneRepairNotificationPanel.prefab").WaitForCompletion(); public void Start() { NotificationUIController val = controller; if (val.genericNotificationPrefab == null) { val.genericNotificationPrefab = genericNotificationPrefab; } val = controller; if (val.genericTransformationNotificationPrefab == null) { val.genericTransformationNotificationPrefab = genericTransformationNotificationPrefab; } val = controller; if (val.contagiousVoidTransformationNotificationPrefab == null) { val.contagiousVoidTransformationNotificationPrefab = contagiousVoidTransformationNotificationPrefab; } val = controller; if (val.cloverVoidTransformationNotificationPrefab == null) { val.cloverVoidTransformationNotificationPrefab = cloverVoidTransformationNotificationPrefab; } val = controller; if (val.regeneratingScrapRegenTransformationNotificationPrefab == null) { val.regeneratingScrapRegenTransformationNotificationPrefab = regeneratingScrapRegenTransformationNotificationPrefab; } val = controller; if (val.LowerPricedChestsRegenTransformationNotificationPrefab == null) { val.LowerPricedChestsRegenTransformationNotificationPrefab = lowerPricedChestsRegenTransformationNotificationPanel; } val = controller; if (val.droneRepairNotificationPrefab == null) { val.droneRepairNotificationPrefab = droneRepairNotificationPanel; } } } public class HideIfFirst : MonoBehaviour { public GameObject target; public int position; private void Awake() { target.SetActive(((Component)this).transform.GetSiblingIndex() != position); } } public class BepinConfigParentManager : MonoBehaviour, IConfigHandler { public Transform[] choices; public string category; public string key; public string description; private ZioConfigEntry<int> _configEntry; public void Awake() { Startup(); ((ZioConfigEntryBase)_configEntry).SettingChanged += ConfigUpdated; } private void OnEnable() { ConfigUpdated(null, null, arg3: false); } public void OnDestroy() { ((ZioConfigEntryBase)_configEntry).SettingChanged -= ConfigUpdated; } private void ConfigUpdated(ZioConfigEntryBase zioConfigEntryBase, object o, bool arg3) { int num = Math.Min(choices.Length - 1, _configEntry.Value); ((Component)this).transform.SetParent(choices[num], false); } public void Startup() { _configEntry = ConfigHelper.Bind(category, key, 0, description, null, choices.Length - 1); } } public class DifficultyTextController : MonoBehaviour, IConfigHandler { public TextMeshProUGUI text; public string[] segmentTokens; public Image ringImage; public Image ringBehind; public RedToColorRemapperIndividual textRecolorer; public RedToColorRemapperIndividual ringRecolorer; public RedToColorRemapperIndividual ringBehindRecolorer; public RedToColorRemapperIndividual timerTextRecolorer; public RedToColorRemapperIndividual timerCentiTextRecolorer; public TextMeshProUGUI monsterLevel; public float levelsPerSegment = 3f; private int _previousSegment = -1; private ZioConfigEntry<bool> _textRecolor; private ZioConfigEntry<bool> _ringLowerRecolor; private ZioConfigEntry<bool> _ringRecolor; private ZioConfigEntry<bool> _timerRecolor; private ZioConfigEntry<bool> _timerCentiRecolor; private ZioConfigEntry<bool> _monsterLevelEnabled; public static readonly Color[] DifficultyColors = (Color[])(object)new Color[9] { new Color(0.28627452f, 0.9490196f, 0.8509804f), new Color(0.2627451f, 83f / 85f, 38f / 85f), new Color(1f, 0.8862745f, 0.4f), new Color(1f, 0.6627451f, 0.2627451f), new Color(1f, 0.4862745f, 12f / 85f), new Color(1f, 0.4f, 0.2627451f), new Color(1f, 0.2627451f, 12f / 85f), new Color(1f, 0.101960786f, 0.101960786f), new Color(0.827451f, 0f, 0f) }; private void Awake() { Startup(); ((ZioConfigEntryBase)_textRecolor).SettingChanged += TextColorerChanged; ((ZioConfigEntryBase)_ringLowerRecolor).SettingChanged += RingLowerColorerChanged; ((ZioConfigEntryBase)_ringRecolor).SettingChanged += RingColorerChanged; ((ZioConfigEntryBase)_timerRecolor).SettingChanged += TimerColorerChanged; ((ZioConfigEntryBase)_timerCentiRecolor).SettingChanged += CentiColorerChanged; ((ZioConfigEntryBase)_monsterLevelEnabled).SettingChanged += MonsterLevelChanged; TextColorerChanged(null, null, arg3: false); RingLowerColorerChanged(null, null, arg3: false); RingColorerChanged(null, null, arg3: false); TimerColorerChanged(null, null, arg3: false); CentiColorerChanged(null, null, arg3: false); MonsterLevelChanged(null, null, arg3: false); } private void MonsterLevelChanged(ZioConfigEntryBase zioConfigEntryBase, object o, bool arg3) { ((Component)monsterLevel).gameObject.SetActive(_monsterLevelEnabled.Value); } private void OnDestroy() { ((ZioConfigEntryBase)_textRecolor).SettingChanged -= TextColorerChanged; ((ZioConfigEntryBase)_ringLowerRecolor).SettingChanged -= RingLowerColorerChanged; ((ZioConfigEntryBase)_ringRecolor).SettingChanged -= RingColorerChanged; ((ZioConfigEntryBase)_timerRecolor).SettingChanged -= TimerColorerChanged; ((ZioConfigEntryBase)_timerCentiRecolor).SettingChanged -= CentiColorerChanged; } private void RingColorerChanged(ZioConfigEntryBase zioConfigEntryBase, object o, bool arg3) { ((Behaviour)ringRecolorer).enabled = !_ringRecolor.Value; UpdateColors(); } private void RingLowerColorerChanged(ZioConfigEntryBase zioConfigEntryBase, object o, bool arg3) { ((Behaviour)ringBehindRecolorer).enabled = !_ringLowerRecolor.Value; UpdateColors(); } private void TextColorerChanged(ZioConfigEntryBase zioConfigEntryBase, object o, bool arg3) { ((Behaviour)textRecolorer).enabled = !_textRecolor.Value; UpdateColors(); } private void CentiColorerChanged(ZioConfigEntryBase zioConfigEntryBase, object o, bool arg3) { ((Behaviour)timerCentiTextRecolorer).enabled = !_timerCentiRecolor.Value; UpdateColors(); } private void TimerColorerChanged(ZioConfigEntryBase zioConfigEntryBase, object o, bool arg3) { ((Behaviour)timerTextRecolorer).enabled = !_timerRecolor.Value; UpdateColors(); } public void Update() { if (Object.op_Implicit((Object)(object)Run.instance)) { float num = Run.instance.ambientLevel - 1f; float num2 = num / levelsPerSegment; int num3 = Mathf.FloorToInt(num2); float fillAmount = num2 - (float)num3; if (num3 >= segmentTokens.Length) { fillAmount = 1f; } if (_monsterLevelEnabled.Value) { ((TMP_Text)monsterLevel).text = Language.GetStringFormatted("AMBIENT_LEVEL_DISPLAY_FORMAT", new object[1] { num + 1f }); } int num4 = Math.Min(segmentTokens.Length - 1, num3); if (num4 != _previousSegment) { ((TMP_Text)text).text = Language.GetString(segmentTokens[num4]).ToUpper(); _previousSegment = num4; UpdateColors(); } ringImage.fillAmount = fillAmount; } } private void UpdateColors() { //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00ca: 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) if (Object.op_Implicit((Object)(object)Run.instance)) { int num = Math.Max(0, _previousSegment); Color color = DifficultyColors[num]; if (_ringRecolor.Value) { ((Graphic)(Image)ringRecolorer.target).color = color; } if (_ringLowerRecolor.Value) { ((Graphic)(Image)ringBehindRecolorer.target).color = color; } if (_textRecolor.Value) { ((Graphic)(TextMeshProUGUI)textRecolorer.target).color = color; } if (_timerRecolor.Value) { ((Graphic)(TextMeshProUGUI)timerTextRecolorer.target).color = color; } if (_timerCentiRecolor.Value) { ((Graphic)(TextMeshProUGUI)timerCentiTextRecolorer.target).color = color; } } } public void Startup() { _textRecolor = ConfigHelper.Bind("General", "Difficulty Text Colored Per Difficulty", defaultValue: false, "Should the difficulty text be recolored based on current difficulty."); _ringLowerRecolor = ConfigHelper.Bind("General", "Difficulty Lower Ring Colored Per Difficulty", defaultValue: false, "Should the difficulty lower ring be recolored based on current difficulty."); _ringRecolor = ConfigHelper.Bind("General", "Difficulty Upper Ring Colored Per Difficulty", defaultValue: false, "Should the difficulty upper ring be recolored based on current difficulty."); _timerRecolor = ConfigHelper.Bind("General", "Timer Text Colored Per Difficulty", defaultValue: false, "Should the timer text be recolored based on current difficulty."); _timerCentiRecolor = ConfigHelper.Bind("General", "Centisecond Timer Text Colored Per Difficulty", defaultValue: false, "Should the timer centisecond text be recolored based on current difficulty."); _monsterLevelEnabled = ConfigHelper.Bind("General", "Monster Level Text Enable", defaultValue: false, "Should the monster level text be displayed."); } } public class HealthbarRecolor : MonoBehaviour, IConfigHandler { public class HealthBarConfig { private static readonly Type StyleType = typeof(HealthBarStyle); public HealthBarStyle style; private readonly FieldInfo _fieldInfo; private ZioConfigEntry<Color> _configValue; private bool rainbow; public Color Color { get { //IL_0016: Unknown result type (might be due to invalid IL or missing references) return ((BarStyle)_fieldInfo.GetValue(style)).baseColor; } set { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) BarStyle val = (BarStyle)_fieldInfo.GetValue(style); val.baseColor = value; _fieldInfo.SetValue(style, val); } } public HealthBarConfig(string category, string key, string desc, string field, HealthBarStyle styleIn, bool b) { //IL_0026: Unknown result type (might be due to invalid IL or missing references) style = styleIn; _fieldInfo = StyleType.GetField(field, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); _configValue = ConfigHelper.Bind<Color>(category, key, Color, desc); if (b) { ((ZioConfigEntryBase)_configValue).SettingChanged += ConfigChanged; } } public void Destroy() { ((ZioConfigEntryBase)_configValue).SettingChanged -= ConfigChanged; } public void ConfigChanged(ZioConfigEntryBase zioConfigEntryBase, object o, bool arg3) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) rainbow = _configValue.Value == Color.clear; Color = _configValue.Value; } public void Update(Color color) { //IL_0009: Unknown result type (might be due to invalid IL or missing references) if (rainbow) { Color = color; } } } public string whichBar = "Player HealthBar"; public HealthBar healthBar; private readonly Dictionary<string, HealthBarConfig> entries = new Dictionary<string, HealthBarConfig>(); public void Awake() { Startup(b: true); OnEnable(); } private void OnEnable() { foreach (KeyValuePair<string, HealthBarConfig> entry in entries) { entry.Value.ConfigChanged(null, null, arg3: false); } } private void SetupConfig(string key, string desc, HealthBarStyle style, string field, bool b) { string key2 = "Recoloring " + whichBar + key; HealthBarConfig value = new HealthBarConfig("Recoloring " + whichBar, key, desc, field, style, b); entries[key2] = value; } private void OnDestroy() { foreach (KeyValuePair<string, HealthBarConfig> entry in entries) { entry.Value.Destroy(); } } private void Update() { //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) Color color = Color.HSVToRGB(Mathf.Sin(Time.time) * 0.5f + 0.5f, 1f, 1f); foreach (KeyValuePair<string, HealthBarConfig> entry in entries) { entry.Value.Update(color); } } public void Startup(bool b) { HealthBarStyle style = healthBar.style; SetupConfig("Trailing Under", "When hurt the bit that is slow to catch up.", style, "trailingUnderHealthBarStyle", b); SetupConfig("Instant Health", "From medkits, etc.", style, "instantHealthBarStyle", b); SetupConfig("Trailing Over", "The general color of the healthbar.", style, "trailingOverHealthBarStyle", b); SetupConfig("Shield", "Shield", style, "shieldBarStyle", b); SetupConfig("Curse", "Curse refers to having Shaped glass / anything that temporarily lowers max HP & normally leaves you w/ the white outlined section.", style, "curseBarStyle", b); SetupConfig("Barrier", "Barrier", style, "barrierBarStyle", b); SetupConfig("Flash", "?", style, "flashBarStyle", b); SetupConfig("Cull", "Cull refers to things like guillotine / freeze, and is only seen when an allied minion (turret / zoea / drone, etc..) is hit by a Glacial Elite's death effect radius. Cull can't be applied to players however.", style, "cullBarStyle", b); SetupConfig("Low Health Over", "Color for delicate watches and things like that.", style, "lowHealthOverStyle", b); SetupConfig("Low Health Under", "?", style, "lowHealthUnderStyle", b); SetupConfig("Magnetic", "A unused??? healthbar style.", style, "magneticStyle", b); SetupConfig("OSP", "One shot protection color.", style, "ospStyle", b); } public void Startup() { Startup(b: false); } } public class HideFromBepinConfig : MonoBehaviour, IConfigHandler { public GameObject target; public string configName; public string configDesc; public string configCategory; public bool defaultValue; private ZioConfigEntry<bool> _configEntry; public void Awake() { Startup(); ((ZioConfigEntryBase)_configEntry).SettingChanged += SettingChanged; SettingChanged(); } public void OnDestroy() { ((ZioConfigEntryBase)_configEntry).SettingChanged -= SettingChanged; } private void SettingChanged(ZioConfigEntryBase config, object oldValue, bool ignoreSave) { SettingChanged(); } private void SettingChanged() { target.SetActive(_configEntry.Value); } public void Startup() { _configEntry = ConfigHelper.Bind(configCategory, configName, defaultValue, configDesc); } } public interface IConfigHandler { void Startup(); } public class RedToColorRemapperIndividual : MonoBehaviour, IConfigHandler { public string configKey; public string configDesc; private Color defaultColor; private ZioConfigEntry<Color> _configEntry; public MonoBehaviour target; private bool _rainbow; public void Startup() { //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) //IL_0019: Unknown result type (might be due to invalid IL or missing references) defaultColor = GetColor(); _configEntry = ConfigHelper.Bind<Color>("Recoloring", configKey, defaultColor, configDesc); } public void Awake() { Startup(); ((ZioConfigEntryBase)_configEntry).SettingChanged += UpdateColor; } private void OnEnable() { UpdateColor(); } private void OnDestroy() { ((ZioConfigEntryBase)_configEntry).SettingChanged -= UpdateColor; } private void UpdateColor(ZioConfigEntryBase config, object oldValue, bool ignoreSave) { UpdateColor(); } private void SetColor(Color color) { //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) MonoBehaviour val = target; TextMeshProUGUI val2 = (TextMeshProUGUI)(object)((val is TextMeshProUGUI) ? val : null); if (val2 == null) { Image val3 = (Image)(object)((val is Image) ? val : null); if (val3 == null) { HealthBar val4 = (HealthBar)(object)((val is HealthBar) ? val : null); if (val4 != null) { val4.style.trailingOverHealthBarStyle.baseColor = color; } } else { ((Graphic)val3).color = color; } } else { ((Graphic)val2).color = color; } } private Color GetColor() { //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002f: 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_0046: Unknown result type (might be due to invalid IL or missing references) MonoBehaviour val = target; TextMeshProUGUI val2 = (TextMeshProUGUI)(object)((val is TextMeshProUGUI) ? val : null); if (val2 == null) { Image val3 = (Image)(object)((val is Image) ? val : null); if (val3 == null) { return ((HealthBar)(((val is HealthBar) ? val : null)?)).style.trailingOverHealthBarStyle.baseColor ?? Color.black; } return ((Graphic)val3).color; } return ((Graphic)val2).color; } private void UpdateColor() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) if (_configEntry.Value == Color.clear) { _rainbow = true; } else { SetColor(_configEntry.Value); } } private void Update() { //IL_002a: Unknown result type (might be due to invalid IL or missing references) if (_rainbow) { SetColor(Color.HSVToRGB(Mathf.Sin(Time.time) * 0.5f + 0.5f, 1f, 1f)); } } } public class TextSizeBepin : MonoBehaviour, IConfigHandler { public string Key; public string Description; public TextMeshProUGUI Target; private ZioConfigEntry<float> _configEntry; public void Awake() { Startup(); ((ZioConfigEntryBase)_configEntry).SettingChanged += SettingChanged; } private void OnEnable() { SettingChanged(null, null, arg3: false); } private void OnDestroy() { ((ZioConfigEntryBase)_configEntry).SettingChanged -= SettingChanged; } private void SettingChanged(ZioConfigEntryBase zioConfigEntryBase, object o, bool arg3) { ((TMP_Text)Target).fontSize = _configEntry.Value; } public void Startup() { _configEntry = ConfigHelper.Bind("Rescaling", Key, ((TMP_Text)Target).fontSize, Description, null, 100f); } } public class MaterialEquipmentIcon : MonoBehaviour { public EquipmentIcon icon; public Image onCooldown; public Image mask; public TextMeshProUGUI stockText; public GameObject keyText; public void Update() { //IL_006f: 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_0074: 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_007a: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0080: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: Unknown result type (might be due to invalid IL or missing references) if (!icon.hasEquipment) { ((Component)((TMP_Text)stockText).transform.parent).gameObject.SetActive(false); mask.fillAmount = 0f; ((Behaviour)onCooldown).enabled = false; return; } EquipmentState val = (icon.displayAlternateEquipment ? icon.targetInventory.alternateEquipmentState : icon.targetInventory.currentEquipmentState); FixedTimeStamp now = FixedTimeStamp.now; FixedTimeStamp chargeFinishTime = val.chargeFinishTime; ((Behaviour)onCooldown).enabled = ((DisplayData)(ref icon.currentDisplayData)).showCooldown; float num = Mathf.Max(0f, chargeFinishTime - now); if (float.IsPositiveInfinity(num)) { num = 0f; } float cooldown = val.equipmentDef.cooldown; cooldown *= icon.targetInventory.CalculateEquipmentCooldownScale(); mask.fillAmount = num / cooldown; ((Component)((TMP_Text)stockText).transform.parent).gameObject.SetActive(icon.currentDisplayData.maxStock > 1); } } [RequireComponent(typeof(RectTransform))] public class MaterialItemIcon : MonoBehaviour { public InspectPanelLocator inspectPanelLocator; public UserProfile userProfile; public RawImage glowImage; public RawImage image; public TextMeshProUGUI stackText; public TooltipProvider tooltipProvider; public ItemIndex itemIndex; public int itemCount; public Action OnItemClicked; public RectTransform rectTransform { get; set; } public InspectPanelController inspectPanel { get { if (Object.op_Implicit((Object)(object)inspectPanelLocator)) { return inspectPanelLocator.InspectPanel; } return null; } } public void Awake() { CacheRectTransform(); inspectPanelLocator = ((Component)this).GetComponent<InspectPanelLocator>(); userProfile = ((Component)this).GetComponentInParent<HUD>().localUserViewer.userProfile; } public void CacheRectTransform() { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Expected O, but got Unknown if (rectTransform == null) { rectTransform = (RectTransform)((Component)this).transform; } } public void SetItemIndex(ItemIndex newItemIndex, int newItemCount) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_004f: 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_0124: Unknown result type (might be due to invalid IL or missing references) //IL_012a: Unknown result type (might be due to invalid IL or missing references) //IL_0135: 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_016b: 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_0177: Unknown result type (might be due to invalid IL or missing references) //IL_00fb: Unknown result type (might be due to invalid IL or missing references) //IL_00ed: 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_0105: Unknown result type (might be due to invalid IL or missing references) //IL_010a: Unknown result type (might be due to invalid IL or missing references) if (itemIndex == newItemIndex && itemCount == newItemCount) { return; } itemIndex = newItemIndex; itemCount = newItemCount; string titleToken = ""; string bodyToken = ""; Color val = Color.white; Color bodyColor = default(Color); ((Color)(ref bodyColor))..ctor(0.6f, 0.6f, 0.6f, 1f); ItemDef itemDef = ItemCatalog.GetItemDef(itemIndex); if ((Object)(object)itemDef != (Object)null) { image.texture = itemDef.pickupIconTexture; if (itemCount > 1) { ((TMP_Text)stackText).text = "x" + itemCount; ((Behaviour)stackText).enabled = true; } else { ((TMP_Text)stackText).text = ""; ((Behaviour)stackText).enabled = false; } titleToken = itemDef.nameToken; bodyToken = itemDef.pickupToken; val = Color32.op_Implicit(ColorCatalog.GetColor(Object.op_Implicit((Object)(object)itemDef._itemTierDef) ? itemDef._itemTierDef.darkColorIndex : itemDef.darkColorIndex)); } if (Object.op_Implicit((Object)(object)glowImage)) { ((Graphic)glowImage).color = new Color(val.r, val.g, val.b, 0.75f); } if (Object.op_Implicit((Object)(object)tooltipProvider)) { tooltipProvider.titleToken = titleToken; tooltipProvider.bodyToken = bodyToken; tooltipProvider.titleColor = val; tooltipProvider.bodyColor = bodyColor; } } public void ItemClicked() { //IL_000f: Unknown result type (might be due to invalid IL or missing references) if (!userProfile.useInspectFeature) { return; } ItemDef itemDef = ItemCatalog.GetItemDef(itemIndex); if ((Object)(object)itemDef != (Object)null) { if (Object.op_Implicit((Object)(object)inspectPanel)) { inspectPanel.Show(InspectInfo.op_Implicit(itemDef), false, (UserProfile)null); } OnItemClicked?.Invoke(); } } } public class MaterialSkillIcon : MonoBehaviour { public Image onCooldown; public SkillIcon icon; public Image mask; public TextMeshProUGUI stockText; private void Update() { if (Object.op_Implicit((Object)(object)icon.targetSkill)) { float cooldownRemaining = icon.targetSkill.cooldownRemaining; float num = icon.targetSkill.CalculateFinalRechargeInterval(); bool flag = num >= float.Epsilon; mask.fillAmount = (flag ? (cooldownRemaining / num) : 0f); ((Behaviour)onCooldown).enabled = flag && icon.targetSkill.stock <= 0 && mask.fillAmount > float.Epsilon; if (icon.targetSkill.maxStock > 1) { ((Component)((TMP_Text)stockText).transform.parent).gameObject.SetActive(true); } else { ((Component)((TMP_Text)stockText).transform.parent).gameObject.SetActive(false); } } } } public static class ConfigHelper { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static Action<ZioConfigEntryBase, object, bool> <>9__8_0; public static UnityAction <>9__10_0; public static UnityAction <>9__10_1; internal void <get_SelectedProfile>b__8_0(ZioConfigEntryBase _, object profile, bool _) { SelectedProfile = (int)profile; } internal void <MakeSelectedProfileOptions>b__10_0() { //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_003b: 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_0055: Expected O, but got Unknown configFiles.Add(new ZioConfigFile(whichFile.FileSystem, UPath.op_Implicit($"{UPathExtensions.GetDirectory(whichFile.FilePath)}/RiskUI/{default(Guid)}"), true, whichFile.OwnerMetadata)); option.max = configFiles.Count - 1; } internal void <MakeSelectedProfileOptions>b__10_1() { //IL_0019: Unknown result type (might be due to invalid IL or missing references) whichFile.FileSystem.DeleteFile(configFiles[SelectedProfile].FilePath); configFiles.RemoveAt(SelectedProfile); option.max = configFiles.Count - 1; } } public static Dictionary<string, ZioConfigEntryBase> Entries = new Dictionary<string, ZioConfigEntryBase>(); private static ZioConfigEntry<int> _selectedProfile; private static IntSliderConfig option; public static ZioConfigFile whichFile => RiskUIPlugin.ConfigFile; public static List<ZioConfigFile> configFiles => RiskUIPlugin.ConfigFiles; public static int SelectedProfile { get { if (_selectedProfile != null) { return _selectedProfile.Value; } _selectedProfile = whichFile.Bind<int>("Profiles", "Selected Profile", 0, "Currently selected profile."); ((ZioConfigEntryBase)_selectedProfile).SettingChanged += delegate(ZioConfigEntryBase _, object profile, bool _) { SelectedProfile = (int)profile; }; if (RiskUIPlugin.RiskOfOptionsEnabled) { MakeSelectedProfileOptions(); } return _selectedProfile.Value; } set { _selectedProfile.Value = value; foreach (KeyValuePair<ConfigDefinition, ZioConfigEntryBase> item in whichFile) { if (!(item.Key == ((ZioConfigEntryBase)_selectedProfile).Definition)) { ApplyConfigProfile(item.Value); } } } } private static void MakeSelectedProfileOptions() { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Expected O, but got Unknown //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Expected O, but got Unknown //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_0059: Expected O, but got Unknown //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Expected O, but got Unknown //IL_0081: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Expected O, but got Unknown option = new IntSliderConfig { max = configFiles.Count - 1 }; ModSettingsManager.AddOption((BaseOption)new ZioIntSliderOption(_selectedProfile, option)); object obj = <>c.<>9__10_0; if (obj == null) { UnityAction val = delegate { //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_003b: 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_0055: Expected O, but got Unknown configFiles.Add(new ZioConfigFile(whichFile.FileSystem, UPath.op_Implicit($"{UPathExtensions.GetDirectory(whichFile.FilePath)}/RiskUI/{default(Guid)}"), true, whichFile.OwnerMetadata)); option.max = configFiles.Count - 1; }; <>c.<>9__10_0 = val; obj = (object)val; } ModSettingsManager.AddOption((BaseOption)new GenericButtonOption("Add Profile", "Profiles", (UnityAction)obj)); object obj2 = <>c.<>9__10_1; if (obj2 == null) { UnityAction val2 = delegate { //IL_0019: Unknown result type (might be due to invalid IL or missing references) whichFile.FileSystem.DeleteFile(configFiles[SelectedProfile].FilePath); configFiles.RemoveAt(SelectedProfile); option.max = configFiles.Count - 1; }; <>c.<>9__10_1 = val2; obj2 = (object)val2; } ModSettingsManager.AddOption((BaseOption)new GenericButtonOption("Delete Profile", "Profiles", (UnityAction)obj2)); } public static ZioConfigEntry<T> Bind<T>(string category, string key, T defaultValue, string desc, [CanBeNull] Action<ZioConfigEntry<T>> firstSetupCallback = null, object riskOfOptionsExtra = null) { string key2 = category + key; if (!Entries.ContainsKey(key2)) { ZioConfigEntry<T> val = RiskUIPlugin.ConfigFile.Bind<T>(category, key, defaultValue, desc); ((ZioConfigEntryBase)val).SettingChanged += UpdateSelectedProfile; foreach (ZioConfigFile configFile in RiskUIPlugin.ConfigFiles) { configFile.Bind<T>(category, key, defaultValue, desc); } ApplyConfigProfile((ZioConfigEntryBase)(object)val); if (RiskUIPlugin.RiskOfOptionsEnabled) { FillRiskOfOptions<T>(val, riskOfOptionsExtra); } Entries.Add(key2, (ZioConfigEntryBase)(object)val); firstSetupCallback?.Invoke(val); } return (ZioConfigEntry<T>)(object)Entries[key2]; } private static void UpdateSelectedProfile(ZioConfigEntryBase arg1, object arg2, bool arg3) { configFiles[SelectedProfile][arg1.Definition].BoxedValue = arg1.BoxedValue; } private static void ApplyConfigProfile(ZioConfigEntryBase configEntry) { if (RiskUIPlugin.NeverBeforeInitialized) { UpdateSelectedProfile(configEntry, null, arg3: false); } else { configEntry.BoxedValue = configFiles[SelectedProfile][configEntry.Definition].BoxedValue; } } private static void FillRiskOfOptions<T>(ZioConfigEntry<T> configEntry, object riskOfOptionsExtra = null) { //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Expected O, but got Unknown //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Expected O, but got Unknown //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_0064: Expected O, but got Unknown //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Expected O, but got Unknown //IL_006b: 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_0081: Expected O, but got Unknown //IL_007c: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Expected O, but got Unknown //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Expected O, but got Unknown if (!(configEntry is ZioConfigEntry<string> val)) { if (!(configEntry is ZioConfigEntry<bool> val2)) { if (!(configEntry is ZioConfigEntry<int> val3)) { if (!(configEntry is ZioConfigEntry<float> val4)) { if (configEntry is ZioConfigEntry<Color> val5) { ModSettingsManager.AddOption((BaseOption)new ZioColorOption(val5)); } } else { ModSettingsManager.AddOption((BaseOption)new ZioSliderOption(val4, new SliderConfig { max = (float)riskOfOptionsExtra })); } } else { ModSettingsManager.AddOption((BaseOption)new ZioIntSliderOption(val3, new IntSliderConfig { max = (int)riskOfOptionsExtra })); } } else { ModSettingsManager.AddOption((BaseOption)new ZioCheckBoxOption(val2)); } } else { ModSettingsManager.AddOption((BaseOption)new ZioStringInputFieldOption(val)); } } } internal static class Log { private static ManualLogSource _logSource; internal static void Init(ManualLogSource logSource) { _logSource = logSource; } internal static void Debug(object data) { _logSource.LogDebug(data); } internal static void Error(object data) { _logSource.LogError(data); } internal static void Fatal(object data) { _logSource.LogFatal(data); } internal static void Info(object data) { _logSource.LogInfo(data); } internal static void Message(object data) { _logSource.LogMessage(data); } internal static void Warning(object data) { _logSource.LogWarning(data); } } [HarmonyPatch] public static class NewHarmonyPatches { [HarmonyILManipulator] [HarmonyPatch(typeof(CameraRigController), "UpdateHUD")] public static void ReplaceHUD(ILContext il) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_0080: 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) ILCursor val = new ILCursor(il); int num = default(int); MethodReference val2 = default(MethodReference); if (val.TryGotoNext((MoveType)1, new Func<Instruction, bool>[3] { (Instruction x) => ILPatternMatchingExt.MatchLdloc(x, ref num), (Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt(x, ref val2), (Instruction x) => ILPatternMatchingExt.MatchStsfld(x, typeof(CameraRigController), "HudPrefab") })) { val.Emit(OpCodes.Call, (MethodBase)AccessTools.Method(typeof(RiskUIPlugin), "CreateHud", (Type[])null, (Type[])null)); val.RemoveRange(2); if (val.TryGotoNext((MoveType)1, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdsfld(x, typeof(CameraRigController), "HudPrefab") })) { val.Emit(OpCodes.Call, (MethodBase)AccessTools.Method(typeof(RiskUIPlugin), "CreateHud", (Type[])null, (Type[])null)); val.Remove(); } else { Log.Error("CameraRigController.UpdateHUD # 2"); } } else { Log.Error("CameraRigController.UpdateHUD # 1"); } } [HarmonyILManipulator] [HarmonyPatch(typeof(HealthBar), "UpdateBarInfos")] public static void FixInfusionColor(ILContext il) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown ILCursor val = new ILCursor(il); if (val.TryGotoNext(new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdsfld(x, typeof(HealthBar), "voidPanelColor") })) { val.Remove(); val.EmitDelegate<Func<Color>>((Func<Color>)delegate { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) Color value3 = RiskUIPlugin.VoidColor.Value; return (value3 == Color.clear) ? Color.HSVToRGB(Mathf.Sin(Time.time) * 0.5f + 0.5f, 1f, 1f) : value3; }); } else { Log.Error("HealthBar.UpdateBarInfos # 1"); } if (val.TryGotoNext(new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdsfld(x, typeof(HealthBar), "infusionPanelColor") })) { val.Remove(); val.EmitDelegate<Func<Color>>((Func<Color>)delegate { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) Color value2 = RiskUIPlugin.InfusionColor.Value; return (value2 == Color.clear) ? Color.HSVToRGB(Mathf.Sin(Time.time) * 0.5f + 0.5f, 1f, 1f) : value2; }); } else { Log.Error("HealthBar.UpdateBarInfos # 2"); } if (val.TryGotoNext(new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdsfld(x, typeof(HealthBar), "voidShieldsColor") })) { val.Remove(); val.EmitDelegate<Func<Color>>((Func<Color>)delegate { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) Color value = RiskUIPlugin.VoidShieldColor.Value; return (value == Color.clear) ? Color.HSVToRGB(Mathf.Sin(Time.time) * 0.5f + 0.5f, 1f, 1f) : value; }); } else { Log.Error("HealthBar.UpdateBarInfos # 3"); } } [HarmonyPrefix] [HarmonyPatch(typeof(Run), "InstantiateUi")] public static bool OverwriteTracker(Run __instance, Transform uiRoot, ref GameObject __result) { if (!Object.op_Implicit((Object)(object)uiRoot)) { return true; } string nameToken = __instance.nameToken; if (nameToken == "ECLIPSE_GAMEMODE_NAME" || nameToken == "GAMEMODE_CLASSIC_RUN_NAME") { __result = Object.Instantiate<GameObject>(RiskUIPlugin.CreateClassicRunHud(), uiRoot); __instance.uiInstances.Add(__result); return false; } return true; } [HarmonyPrefix] [HarmonyPatch(typeof(DifficultyDef), "GetIconSprite")] public static bool SwapIcon(DifficultyDef __instance, ref Sprite __result) { if (__instance.nameToken == null || !RiskUIPlugin.DifficultyIconMap.ContainsKey(__instance.nameToken)) { return true; } __result = RiskUIPlugin.DifficultyIconMap[__instance.nameToken]; return false; } [HarmonyILManipulator] [HarmonyPatch(typeof(AllyCardManager), "Awake")] public static void ReplaceAllyCards(ILContext il) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_0040: Unknown result type (might be due to invalid IL or missing references) ILCursor val = new ILCursor(il); if (val.TryGotoNext(new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdstr(x, "Prefabs/UI/AllyCard") })) { val.RemoveRange(2); val.Emit(OpCodes.Call, (MethodBase)AccessTools.Method(typeof(RiskUIPlugin), "CreateAllyCard", (Type[])null, (Type[])null)); } else { Log.Error("AllyCardManager.Awake"); } } [HarmonyPostfix] [HarmonyPatch(typeof(EnemyInfoPanel), "Init")] public static void ChangeMonsterInventory() { EnemyInfoPanel.panelPrefab = RiskUIPlugin.EnemyInfoPanel; } [HarmonyPostfix] [HarmonyPatch(typeof(HUD), "DeactivateScoreboard")] public static void Unselect(HUD __instance) { ScoreboardController val = default(ScoreboardController); if (Object.op_Implicit((Object)(object)__instance.scoreboardPanel) && __instance.scoreboardPanel.TryGetComponent<ScoreboardController>(ref val) && Object.op_Implicit((Object)(object)val.eventSystem)) { ((EventSystem)val.eventSystem).SetSelectedGameObject((GameObject)null); val.eventSystem.currentSelectedButton = null; } } } internal static class Utils { public static T TryAddComponent<T>(this GameObject go) where T : Component { T result = default(T); if (go.TryGetComponent<T>(ref result)) { return result; } return go.AddComponent<T>(); } public static void RemoveComponent<T>(this GameObject go) where T : Component { T val = default(T); if (go.TryGetComponent<T>(ref val)) { Object.Destroy((Object)(object)val); } } public static void RemoveComponents<T>(this GameObject go) where T : Component { T[] components = go.GetComponents<T>(); for (int i = 0; i < components.Length; i++) { Object.Destroy((Object)(object)components[i]); } } public static T GetCopyOf<T>(this Component comp, T other) where T : Component { Type type = ((object)comp).GetType(); if (type != ((object)other).GetType()) { return default(T); } BindingFlags bindingAttr = BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic; PropertyInfo[] properties = type.GetProperties(bindingAttr); foreach (PropertyInfo propertyInfo in properties) { if (propertyInfo.CanWrite) { try { propertyInfo.SetValue(comp, propertyInfo.GetValue(other, null), null); } catch { } } } FieldInfo[] fields = type.GetFields(bindingAttr); foreach (FieldInfo fieldInfo in fields) { fieldInfo.SetValue(comp, fieldInfo.GetValue(other)); } return (T)(object)((comp is T) ? comp : null); } public static T GetCopyOf<T>(this ScriptableObject comp, T other) where T : ScriptableObject { Type type = ((object)comp).GetType(); if (type != ((object)other).GetType()) { return default(T); } BindingFlags bindingAttr = BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic; PropertyInfo[] properties = type.GetProperties(bindingAttr); foreach (PropertyInfo propertyInfo in properties) { if (propertyInfo.CanWrite) { try { propertyInfo.SetValue(comp, propertyInfo.GetValue(other, null), null); } catch { } } } FieldInfo[] fields = type.GetFields(bindingAttr); foreach (FieldInfo fieldInfo in fields) { fieldInfo.SetValue(comp, fieldInfo.GetValue(other)); } return (T)(object)((comp is T) ? comp : null); } public static T AddComponentCopy<T>(this GameObject go, T toAdd) where T : Component { return ((Component)(object)go.AddComponent<T>()).GetCopyOf(toAdd); } } [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("bubbet.riskui", "Risk UI", "1.5.2")] public class RiskUIPlugin : BaseUnityPlugin { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static UnityAction <>9__26_0; public static UnityAction <>9__26_1; internal void <MakeRiskofOptions>b__26_0() { Application.OpenURL("https://github.com/Bubbet/Risk-Of-Rain-Mods/issues/new"); } internal void <MakeRiskofOptions>b__26_1() { Application.OpenURL("https://ko-fi.com/bubbet"); } } public static GameObject _newHud; public static GameObject _newClassicRunHud; public static GameObject _newSimulacrumHud; public static GameObject _allyCard; public static GameObject BaseWaveUI; public static GameObject EnemyInfoPanel; public static readonly Dictionary<string, Sprite> DifficultyIconMap = new Dictionary<string, Sprite>(); public static ZioConfigEntry<Color> VoidColor; public static ZioConfigEntry<Color> InfusionColor; public static ZioConfigEntry<Color> VoidShieldColor; public static ZioConfigFile ConfigFile; private string description; private Sprite icon; public static ZioConfigEntry<bool> Enabled; private Harmony harm; private PatchClassProcessor patcher; public static readonly List<ZioConfigFile> ConfigFiles = new List<ZioConfigFile>(); public static bool NeverBeforeInitialized; public static bool RiskOfOptionsEnabled => Chainloader.PluginInfos.ContainsKey("bubbet.zioriskofoptions"); public void Awake() { //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Expected O, but got Unknown //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Expected O, but got Unknown Log.Init(((BaseUnityPlugin)this).Logger); LoadAssets(); harm = new Harmony(((BaseUnityPlugin)this).Info.Metadata.GUID); patcher = new PatchClassProcessor(harm, typeof(NewHarmonyPatches)); RoR2Application.onLoad = (Action)Delegate.Combine(RoR2Application.onLoad, new Action(OnLoad)); } private void LoadAssets() { //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Expected O, but got Unknown //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) string directoryName = Path.GetDirectoryName(((BaseUnityPlugin)this).Info.Location); try { JSONNode val = JSON.Parse(File.OpenText(Path.Combine(directoryName, "manifest.json")).ReadToEnd()); description = ((object)val["description"]).ToString(); byte[] array = File.ReadAllBytes(Path.Combine(directoryName, "icon.png")); Texture2D val2 = new Texture2D(256, 256); ImageConversion.LoadImage(val2, array); icon = Sprite.Create(val2, new Rect(0f, 0f, 256f, 256f), new Vector2(0.5f, 0.5f)); } catch { } AssetBundle val3 = AssetBundle.LoadFromFile(Path.Combine(directoryName, "riskui")); _newHud = val3.LoadAsset<GameObject>("RiskUI"); _newClassicRunHud = val3.LoadAsset<GameObject>("MaterialClassicRunInfoHudPanel"); _newSimulacrumHud = val3.LoadAsset<GameObject>("MaterialSimulacrum"); _allyCard = val3.LoadAsset<GameObject>("MaterialAllyCard"); BaseWaveUI = val3.LoadAsset<GameObject>("MaterialDefaultWaveUI"); EnemyInfoPanel = val3.LoadAsset<GameObject>("MaterialMonsterItemInventory"); CreateIconMap(val3); } private void CreateIconMap(AssetBundle assetBundle) { DifficultyIconMap["SUNNY_NAME"] = assetBundle.LoadAsset<Sprite>("Sunny (More Difficulties)"); DifficultyIconMap["RAINSOON_NAME"] = assetBundle.LoadAsset<Sprite>("ThunderStorm (More Difficulties)"); DifficultyIconMap["HIFU_DIFFICULTY_NAME"] = assetBundle.LoadAsset<Sprite>("Inferno (Inferno)"); DifficultyIconMap["DIFFICULTY_CONFIGURABLEDIFFICULTYMOD_NAME"] = assetBundle.LoadAsset<Sprite>("Pluviculture (ConfigurableDifficulty)"); DifficultyIconMap["Mico27_DIFFICULTY_TROPICALSTORM_NAME"] = assetBundle.LoadAsset<Sprite>("Tropical Storm (Tropical Storm)"); DifficultyIconMap["GROOVYDIFFICULTY_4_NAME"] = assetBundle.LoadAsset<Sprite>("Deluge (UntitledDifficultyMod)"); DifficultyIconMap["CALYPSO_NAME"] = assetBundle.LoadAsset<Sprite>("Calypso (More Difficulties)"); DifficultyIconMap["GROOVYDIFFICULTY_5_NAME"] = assetBundle.LoadAsset<Sprite>("Charybdis (UntitledDifficultyMod)"); DifficultyIconMap["TEMPEST_NAME"] = assetBundle.LoadAsset<Sprite>("Tempest (More Difficulties)"); DifficultyIconMap["SCYLLA_NAME"] = assetBundle.LoadAsset<Sprite>("Armageddon (More Difficulties)"); DifficultyIconMap["DIFFICULTY_EASY_NAME"] = assetBundle.LoadAsset<Sprite>("Drizzle"); DifficultyIconMap["DIFFICULTY_NORMAL_NAME"] = assetBundle.LoadAsset<Sprite>("Rainstorm"); DifficultyIconMap["DIFFICULTY_HARD_NAME"] = assetBundle.LoadAsset<Sprite>("Monsoon"); } private void OnLoad() { //IL_000a: 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_001b: Expected O, but got Unknown //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Expected O, but got Unknown //IL_0102: Unknown result type (might be due to invalid IL or missing references) //IL_0107: Unknown result type (might be due to invalid IL or missing references) //IL_0135: Unknown result type (might be due to invalid IL or missing references) //IL_013a: 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_009e: 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_00af: Expected O, but got Unknown ConfigFile = new ZioConfigFile(RoR2Application.cloudStorage, UPath.op_Implicit("/RiskUI.cfg"), true, (BaseUnityPlugin)(object)this); foreach (UPath item in FileSystemExtensions.EnumeratePaths((IFileSystem)(object)RoR2Application.cloudStorage, new UPath("/RiskUI/"))) { ConfigFiles.Add(new ZioConfigFile(RoR2Application.cloudStorage, item, true, (BaseUnityPlugin)(object)this)); } if (ConfigFiles.Count < 1) { NeverBeforeInitialized = true; ConfigFiles.Add(new ZioConfigFile(RoR2Application.cloudStorage, UPath.op_Implicit($"/RiskUI/{default(Guid)}"), true, (BaseUnityPlugin)(object)this)); } Enabled = ConfigHelper.Bind("General", "Enabled", defaultValue: true, "Should the hud be replaced. Only updates on hud awake, so stage change and starting new runs."); ((ZioConfigEntryBase)Enabled).SettingChanged += EnabledChanged; EnabledChanged(); VoidColor = ConfigHelper.Bind<Color>("Recoloring Player HealthBar", "Void Color", Color32.op_Implicit(new Color32((byte)181, (byte)100, (byte)189, byte.MaxValue)), "Color of void, Void Fiends health bar."); InfusionColor = ConfigHelper.Bind<Color>("Recoloring Player HealthBar", "Infusion Color", Color32.op_Implicit(new Color32((byte)221, (byte)44, (byte)38, byte.MaxValue)), "Color of infusion."); VoidShieldColor = ConfigHelper.Bind<Color>("Recoloring Player HealthBar", "Void Shield Color", Color32.op_Implicit(new Color32((byte)229, (byte)127, (byte)240, byte.MaxValue)), "Color of void shield."); if (RiskOfOptionsEnabled) { MakeRiskofOptions(); } IConfigHandler[] componentsInChildren = _newHud.GetComponentsInChildren<IConfigHandler>(); for (int i = 0; i < componentsInChildren.Length; i++) { componentsInChildren[i].Startup(); } } private void EnabledChanged() { if (Enabled.Value) { patcher.Patch(); } else { harm.UnpatchSelf(); } } private void EnabledChanged(ZioConfigEntryBase arg1, object arg2, bool arg3) { EnabledChanged(); } [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)] private void MakeRiskofOptions() { //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Expected O, but got Unknown //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Expected O, but got Unknown //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: Expected O, but got Unknown //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_009b: Expected O, but got Unknown if (Object.op_Implicit((Object)(object)icon)) { ModSettingsManager.SetModIcon(icon); } if (description != null) { ModSettingsManager.SetModDescription(description); } object obj = <>c.<>9__26_0; if (obj == null) { UnityAction val = delegate { Application.OpenURL("https://github.com/Bubbet/Risk-Of-Rain-Mods/issues/new"); }; <>c.<>9__26_0 = val; obj = (object)val; } ModSettingsManager.AddOption((BaseOption)new GenericButtonOption("Report An Issue", "General", "If you find a bug in the mod, reporting an issue is the best way to ensure it gets fixed.", "Open Link", (UnityAction)obj)); object obj2 = <>c.<>9__26_1; if (obj2 == null) { UnityAction val2 = delegate { Application.OpenURL("https://ko-fi.com/bubbet"); }; <>c.<>9__26_1 = val2; obj2 = (object)val2; } ModSettingsManager.AddOption((BaseOption)new GenericButtonOption("Donate to Bubbet", "General", "Donate to the programmer of RiskUI.", "Open Link", (UnityAction)obj2)); } public static GameObject CreateHud() { return _newHud; } public static GameObject CreateClassicRunHud() { return _newClassicRunHud; } public static GameObject CreateSimulcrum() { return _newSimulacrumHud; } public static GameObject CreateAllyCard() { return _allyCard; } }