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;
}
}