using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using BepInEx;
using HarmonyLib;
using Microsoft.CodeAnalysis;
using SuperFantasyKingdom;
using SuperFantasyKingdom.Tavern;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]
[assembly: AssemblyCompany("TavernFoodPriorities")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("1.6.0.0")]
[assembly: AssemblyInformationalVersion("1.6.0+b823ae10082a55c8f271cb8b08bef34628a7a155")]
[assembly: AssemblyProduct("Tavern Food Priorities")]
[assembly: AssemblyTitle("TavernFoodPriorities")]
[assembly: AssemblyVersion("1.6.0.0")]
[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 TavernFoodPriorities
{
[BepInPlugin("ownly.tavernfoodpriorities", "Tavern Food Priorities", "1.6.0")]
public class Plugin : BaseUnityPlugin
{
private void Awake()
{
//IL_0010: Unknown result type (might be due to invalid IL or missing references)
new Harmony(((BaseUnityPlugin)this).Info.Metadata.GUID).PatchAll();
((BaseUnityPlugin)this).Logger.LogInfo((object)"Tavern Food Priorities loaded: units eat the cheapest food first");
}
}
[HarmonyPatch(typeof(TavernFoodManager), "FindBestFood")]
internal static class Patch_FindLowestFood
{
private static readonly ResourceType[] eatOrderConserveFish;
private static readonly ResourceType[] eatOrderSpendFish;
private static bool Prefix(TavernFoodManager __instance, ref ResourceType __result)
{
//IL_003b: Unknown result type (might be due to invalid IL or missing references)
//IL_00a0: Unknown result type (might be due to invalid IL or missing references)
//IL_00a2: Expected I4, but got Unknown
//IL_0051: Unknown result type (might be due to invalid IL or missing references)
//IL_0056: 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_0063: Unknown result type (might be due to invalid IL or missing references)
//IL_0065: Unknown result type (might be due to invalid IL or missing references)
//IL_007e: 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)
List<ResourceAmount> value = Traverse.Create((object)__instance).Field("m_Inventory").GetValue<List<ResourceAmount>>();
ResourceType[] array = (Traverse.Create((object)__instance).Field("m_CookFish").GetValue<bool>() ? eatOrderConserveFish : eatOrderSpendFish);
ResourceType val = (ResourceType)0;
int num = int.MaxValue;
if (value != null)
{
foreach (ResourceAmount item in value)
{
if (item.amount > 0)
{
int num2 = Array.IndexOf(array, item.type);
if (num2 >= 0 && num2 < num)
{
num = num2;
val = item.type;
}
}
}
}
__result = (ResourceType)(int)val;
return false;
}
static Patch_FindLowestFood()
{
ResourceType[] array = new ResourceType[6];
RuntimeHelpers.InitializeArray(array, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/);
eatOrderConserveFish = (ResourceType[])(object)array;
ResourceType[] array2 = new ResourceType[6];
RuntimeHelpers.InitializeArray(array2, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/);
eatOrderSpendFish = (ResourceType[])(object)array2;
}
}
}