Decompiled source of NoRichText v1.0.0

Mods/NoRichText.dll

Decompiled 2 days ago
using System;
using System.Diagnostics;
using System.Reflection;
using System.Resources;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using System.Text.RegularExpressions;
using Il2CppSLZ.Marrow.Warehouse;
using Il2CppSystem;
using Il2CppSystem.Collections.Generic;
using MelonLoader;
using MelonLoader.Preferences;
using Microsoft.CodeAnalysis;
using NoRichText;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: MelonInfo(typeof(Core), "NoRichText", "1.0.0", "Checkerboard", null)]
[assembly: MelonGame("Stress Level Zero", "BONELAB")]
[assembly: TargetFramework(".NETCoreApp,Version=v6.0", FrameworkDisplayName = ".NET 6.0")]
[assembly: AssemblyCompany("NoRichText")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("NoRichText")]
[assembly: AssemblyTitle("NoRichText")]
[assembly: NeutralResourcesLanguage("en-US")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Embedded]
	[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
	internal sealed class RefSafetyRulesAttribute : Attribute
	{
		public readonly int Version;

		public RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
namespace NoRichText
{
	public class Core : MelonMod
	{
		private MelonPreferences_Category Category;

		private MelonPreferences_Entry<bool> LogOnClean;

		private static readonly Regex RichTextRegex = new Regex("<[^>]*>", RegexOptions.Compiled);

		public override void OnInitializeMelon()
		{
			Category = MelonPreferences.CreateCategory("NoRichText");
			LogOnClean = Category.CreateEntry<bool>("LogOnClean", false, (string)null, (string)null, false, false, (ValueValidator)null, (string)null);
			Category.SaveToFile(false);
			AssetWarehouse.OnReady(Action.op_Implicit((Action)OnWarehouseReady));
		}

		private void OnWarehouseReady()
		{
			AssetWarehouse instance = AssetWarehouse.Instance;
			Enumerator<Crate> enumerator = instance.GetCrates().GetEnumerator();
			while (enumerator.MoveNext())
			{
				Crate current = enumerator.Current;
				CleanCrate(current);
			}
			Action<Barcode> action = OnCrateAdded;
			instance.OnCrateAdded += Action<Barcode>.op_Implicit(action);
		}

		private void OnCrateAdded(Barcode barcode)
		{
			Crate crate = default(Crate);
			if (AssetWarehouse.Instance.TryGetCrate(barcode, ref crate))
			{
				CleanCrate(crate);
			}
		}

		private void CleanCrate(Crate crate)
		{
			string title = ((Scannable)crate).Title;
			if (!string.IsNullOrEmpty(title) && RichTextRegex.IsMatch(title))
			{
				string value = (((Scannable)crate).Title = RichTextRegex.Replace(title, string.Empty).Trim());
				if (LogOnClean.Value)
				{
					((MelonBase)this).LoggerInstance.Msg($"'{title}' -> '{value}'");
				}
			}
		}
	}
}