Decompiled source of PeakRunSettingsFix v1.0.0

PeakRunSettingsFix.dll

Decompiled 5 days ago
using System;
using System.Collections.Generic;
using System.Reflection;
using System.Runtime.CompilerServices;
using BepInEx;
using HarmonyLib;
using UnityEngine;
using Zorro.Core.Serizalization;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: AssemblyVersion("0.0.0.0")]
namespace PeakRunSettingsFix;

[BepInPlugin("local.peak.runsettingsfix", "Peak RunSettings Fix", "1.0.0")]
public class PeakRunSettingsFixPlugin : BaseUnityPlugin
{
	private void Awake()
	{
		//IL_0006: Unknown result type (might be due to invalid IL or missing references)
		new Harmony("local.peak.runsettingsfix").PatchAll(typeof(RunSettingSyncDataPatch));
		((BaseUnityPlugin)this).Logger.LogInfo((object)"PeakRunSettingsFix loaded - RunSettingSyncData.Deserialize fallback active");
	}
}
[HarmonyPatch(typeof(RunSettingSyncData), "Deserialize")]
public static class RunSettingSyncDataPatch
{
	private static bool Prefix(ref RunSettingSyncData __instance, BinaryDeserializer deserializer)
	{
		//IL_008c: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e4: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e9: Unknown result type (might be due to invalid IL or missing references)
		bool flag = deserializer.ReadBool();
		Dictionary<string, int> dictionary = new Dictionary<string, int>();
		ushort num = deserializer.ReadUShort();
		string[] alphabetizedIndices = RunSettings.alphabetizedIndices;
		for (int i = 0; i < num; i++)
		{
			ushort num2 = deserializer.ReadUShort();
			int value = deserializer.ReadInt();
			if (alphabetizedIndices != null && (uint)num2 < (uint)alphabetizedIndices.Length)
			{
				string text = alphabetizedIndices[num2];
				if (text != null && !dictionary.ContainsKey(text))
				{
					dictionary.Add(text, value);
				}
			}
		}
		__instance.settingValues = dictionary;
		try
		{
			object obj = __instance;
			PropertyInfo property = typeof(RunSettingSyncData).GetProperty("isCustomRun", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
			if (property != null && property.CanWrite)
			{
				property.SetValue(obj, flag, null);
			}
			__instance = (RunSettingSyncData)obj;
		}
		catch (Exception ex)
		{
			Debug.LogWarning((object)("PeakRunSettingsFix: failed to set isCustomRun, " + ex.Message));
		}
		return false;
	}
}