Decompiled source of TransportPolicyAdjuster v1.2.0

TransportPolicyAdjuster.dll

Decompiled 5 months ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using Colossal.UI.Binding;
using Game;
using Game.Areas;
using Game.Buildings;
using Game.City;
using Game.Common;
using Game.PSI;
using Game.Pathfind;
using Game.Policies;
using Game.Prefabs;
using Game.Routes;
using Game.Simulation;
using Game.Tools;
using Game.Triggers;
using Game.UI.InGame;
using HarmonyLib;
using Microsoft.CodeAnalysis;
using TransportPolicyAdjuster;
using Unity.Burst;
using Unity.Burst.Intrinsics;
using Unity.Collections;
using Unity.Entities;
using Unity.Jobs;
using Unity.Mathematics;
using UnityEngine;
using UnityEngine.Scripting;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]
[assembly: AssemblyCompany("TransportPolicyAdjuster")]
[assembly: AssemblyConfiguration("Steam")]
[assembly: AssemblyDescription("TransportPolicyAdjuster")]
[assembly: AssemblyFileVersion("1.2.0.0")]
[assembly: AssemblyInformationalVersion("1.2.0+73671e12ca181bf2d6b1a9c68762955a8acbc3d5")]
[assembly: AssemblyProduct("TransportPolicyAdjuster")]
[assembly: AssemblyTitle("TransportPolicyAdjuster")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.2.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)]
	internal sealed class NullableAttribute : Attribute
	{
		public readonly byte[] NullableFlags;

		public NullableAttribute(byte P_0)
		{
			NullableFlags = new byte[1] { P_0 };
		}

		public NullableAttribute(byte[] P_0)
		{
			NullableFlags = P_0;
		}
	}
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)]
	internal sealed class NullableContextAttribute : Attribute
	{
		public readonly byte Flag;

		public NullableContextAttribute(byte P_0)
		{
			Flag = P_0;
		}
	}
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.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 TransportPolicyAdjuster
{
	public class ModifiedSystem : GameSystemBase
	{
		[BurstCompile]
		private struct ModifyPolicyJob : IJobChunk
		{
			[ReadOnly]
			public DistrictModifierRefreshData m_DistrictModifierRefreshData;

			[ReadOnly]
			public BuildingModifierRefreshData m_BuildingModifierRefreshData;

			[ReadOnly]
			public RouteModifierInitializeSystem.RouteModifierRefreshData m_RouteModifierRefreshData;

			[ReadOnly]
			public CityModifierRefreshData m_CityModifierRefreshData;

			[ReadOnly]
			public NativeList<ArchetypeChunk> m_EffectProviderChunks;

			[ReadOnly]
			public ComponentTypeHandle<Modify> m_ModifyType;

			public ComponentLookup<District> m_DistrictData;

			public ComponentLookup<Building> m_BuildingData;

			public ComponentLookup<Route> m_RouteData;

			public ComponentLookup<City> m_CityData;

			public BufferLookup<DistrictModifier> m_DistrictModifiers;

			public BufferLookup<BuildingModifier> m_BuildingModifiers;

			public BufferLookup<RouteModifier> m_RouteModifiers;

			public BufferLookup<CityModifier> m_CityModifiers;

			public BufferLookup<Policy> m_Policies;

			public EntityCommandBuffer m_CommandBuffer;

			public ParallelWriter<TriggerAction> m_TriggerBuffer;

			public ParallelWriter<PolicyEventInfo> m_PolicyEventInfos;

			public void Execute(in ArchetypeChunk chunk, int unfilteredChunkIndex, bool useEnabledMask, in v128 chunkEnabledMask)
			{
				//IL_0008: Unknown result type (might be due to invalid IL or missing references)
				//IL_000d: 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_001e: 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_0026: Unknown result type (might be due to invalid IL or missing references)
				//IL_0045: 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)
				//IL_0057: 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_005d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0062: Unknown result type (might be due to invalid IL or missing references)
				//IL_0223: Unknown result type (might be due to invalid IL or missing references)
				//IL_0224: Unknown result type (might be due to invalid IL or missing references)
				//IL_022a: Unknown result type (might be due to invalid IL or missing references)
				//IL_022c: Invalid comparison between Unknown and I4
				//IL_0085: Unknown result type (might be due to invalid IL or missing references)
				//IL_008a: Unknown result type (might be due to invalid IL or missing references)
				//IL_008c: Unknown result type (might be due to invalid IL or missing references)
				//IL_008e: 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)
				//IL_0094: Unknown result type (might be due to invalid IL or missing references)
				//IL_023a: Unknown result type (might be due to invalid IL or missing references)
				//IL_023b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0240: Unknown result type (might be due to invalid IL or missing references)
				//IL_0241: Unknown result type (might be due to invalid IL or missing references)
				//IL_0246: Unknown result type (might be due to invalid IL or missing references)
				//IL_024c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0258: Unknown result type (might be due to invalid IL or missing references)
				//IL_0259: Unknown result type (might be due to invalid IL or missing references)
				//IL_025e: Unknown result type (might be due to invalid IL or missing references)
				//IL_025f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0264: Unknown result type (might be due to invalid IL or missing references)
				//IL_0273: Unknown result type (might be due to invalid IL or missing references)
				//IL_0274: Unknown result type (might be due to invalid IL or missing references)
				//IL_0279: Unknown result type (might be due to invalid IL or missing references)
				//IL_027e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0288: Unknown result type (might be due to invalid IL or missing references)
				//IL_029b: Unknown result type (might be due to invalid IL or missing references)
				//IL_02ab: Unknown result type (might be due to invalid IL or missing references)
				//IL_02ac: Unknown result type (might be due to invalid IL or missing references)
				//IL_02b1: Unknown result type (might be due to invalid IL or missing references)
				//IL_02b9: Unknown result type (might be due to invalid IL or missing references)
				//IL_02ba: Unknown result type (might be due to invalid IL or missing references)
				//IL_02bf: Unknown result type (might be due to invalid IL or missing references)
				//IL_02c0: Unknown result type (might be due to invalid IL or missing references)
				//IL_02c5: Unknown result type (might be due to invalid IL or missing references)
				//IL_02ca: Unknown result type (might be due to invalid IL or missing references)
				//IL_02cf: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a8: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a9: Unknown result type (might be due to invalid IL or missing references)
				//IL_00af: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b1: Invalid comparison between Unknown and I4
				//IL_01db: Unknown result type (might be due to invalid IL or missing references)
				//IL_01dc: Unknown result type (might be due to invalid IL or missing references)
				//IL_01e1: Unknown result type (might be due to invalid IL or missing references)
				//IL_01e8: Unknown result type (might be due to invalid IL or missing references)
				//IL_01f7: Unknown result type (might be due to invalid IL or missing references)
				//IL_0200: Unknown result type (might be due to invalid IL or missing references)
				//IL_0201: Unknown result type (might be due to invalid IL or missing references)
				//IL_0206: Unknown result type (might be due to invalid IL or missing references)
				//IL_0207: Unknown result type (might be due to invalid IL or missing references)
				//IL_020c: Unknown result type (might be due to invalid IL or missing references)
				//IL_00c8: 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_0150: Unknown result type (might be due to invalid IL or missing references)
				//IL_0152: Unknown result type (might be due to invalid IL or missing references)
				//IL_0157: Unknown result type (might be due to invalid IL or missing references)
				//IL_0161: 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)
				//IL_00ea: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ef: Unknown result type (might be due to invalid IL or missing references)
				//IL_00f0: Unknown result type (might be due to invalid IL or missing references)
				//IL_00f5: Unknown result type (might be due to invalid IL or missing references)
				//IL_0104: Unknown result type (might be due to invalid IL or missing references)
				//IL_0114: Unknown result type (might be due to invalid IL or missing references)
				//IL_0115: Unknown result type (might be due to invalid IL or missing references)
				//IL_011a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0122: Unknown result type (might be due to invalid IL or missing references)
				//IL_0123: Unknown result type (might be due to invalid IL or missing references)
				//IL_0128: Unknown result type (might be due to invalid IL or missing references)
				//IL_0129: Unknown result type (might be due to invalid IL or missing references)
				//IL_012e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0133: Unknown result type (might be due to invalid IL or missing references)
				//IL_0138: Unknown result type (might be due to invalid IL or missing references)
				//IL_017c: Unknown result type (might be due to invalid IL or missing references)
				//IL_017d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0182: Unknown result type (might be due to invalid IL or missing references)
				//IL_0183: Unknown result type (might be due to invalid IL or missing references)
				//IL_0188: Unknown result type (might be due to invalid IL or missing references)
				//IL_0197: Unknown result type (might be due to invalid IL or missing references)
				//IL_01a7: Unknown result type (might be due to invalid IL or missing references)
				//IL_01a8: Unknown result type (might be due to invalid IL or missing references)
				//IL_01ad: Unknown result type (might be due to invalid IL or missing references)
				//IL_01b5: Unknown result type (might be due to invalid IL or missing references)
				//IL_01b6: Unknown result type (might be due to invalid IL or missing references)
				//IL_01bb: Unknown result type (might be due to invalid IL or missing references)
				//IL_01bc: Unknown result type (might be due to invalid IL or missing references)
				//IL_01c1: Unknown result type (might be due to invalid IL or missing references)
				//IL_01c6: Unknown result type (might be due to invalid IL or missing references)
				//IL_01cb: Unknown result type (might be due to invalid IL or missing references)
				NativeArray<Modify> nativeArray = ((ArchetypeChunk)(ref chunk)).GetNativeArray<Modify>(ref m_ModifyType);
				for (int i = 0; i < nativeArray.Length; i++)
				{
					Modify val = nativeArray[i];
					if (!m_Policies.HasBuffer(val.m_Entity))
					{
						continue;
					}
					((EntityCommandBuffer)(ref m_CommandBuffer)).AddComponent<Updated>(val.m_Entity);
					DynamicBuffer<Policy> policies = m_Policies[val.m_Entity];
					int num = 0;
					while (true)
					{
						if (num < policies.Length)
						{
							Policy val2 = policies[num];
							if (val2.m_Policy == val.m_Policy)
							{
								if ((val.m_Flags & 1) == 0)
								{
									if (!m_DistrictModifierRefreshData.m_PolicySliderData.HasComponent(val2.m_Policy))
									{
										policies.RemoveAt(num);
										RefreshEffects(val.m_Entity, val.m_Policy, policies);
										m_PolicyEventInfos.Enqueue(new PolicyEventInfo
										{
											m_Activated = false,
											m_Entity = val.m_Policy,
											m_PolicyRange = GetPolicyRange(val.m_Entity, val.m_Policy)
										});
										break;
									}
									if (m_DistrictModifierRefreshData.m_PolicySliderData[val2.m_Policy].m_Default == val2.m_Adjustment)
									{
										policies.RemoveAt(num);
										RefreshEffects(val.m_Entity, val.m_Policy, policies);
										m_PolicyEventInfos.Enqueue(new PolicyEventInfo
										{
											m_Activated = false,
											m_Entity = val.m_Policy,
											m_PolicyRange = GetPolicyRange(val.m_Entity, val.m_Policy)
										});
										break;
									}
								}
								val2.m_Flags = val.m_Flags;
								val2.m_Adjustment = val.m_Adjustment;
								policies[num] = val2;
								RefreshEffects(val.m_Entity, val.m_Policy, policies);
								break;
							}
							num++;
							continue;
						}
						if ((val.m_Flags & 1) > 0)
						{
							policies.Add(new Policy(val.m_Policy, val.m_Flags, val.m_Adjustment));
							RefreshEffects(val.m_Entity, val.m_Policy, policies);
							m_TriggerBuffer.Enqueue(new TriggerAction((TriggerType)30, val.m_Policy, Entity.Null, Entity.Null, 0f));
							m_PolicyEventInfos.Enqueue(new PolicyEventInfo
							{
								m_Activated = true,
								m_Entity = val.m_Policy,
								m_PolicyRange = GetPolicyRange(val.m_Entity, val.m_Policy)
							});
						}
						break;
					}
				}
			}

			private PolicyRange GetPolicyRange(Entity entity, Entity policy)
			{
				//IL_000c: 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_003a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0029: 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_0176: Unknown result type (might be due to invalid IL or missing references)
				//IL_0068: Unknown result type (might be due to invalid IL or missing references)
				//IL_0057: Unknown result type (might be due to invalid IL or missing references)
				//IL_0076: Unknown result type (might be due to invalid IL or missing references)
				//IL_0096: 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)
				//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
				//IL_00c6: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b5: Unknown result type (might be due to invalid IL or missing references)
				//IL_00d4: Unknown result type (might be due to invalid IL or missing references)
				//IL_00f6: Unknown result type (might be due to invalid IL or missing references)
				//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
				//IL_0104: Unknown result type (might be due to invalid IL or missing references)
				//IL_0123: Unknown result type (might be due to invalid IL or missing references)
				//IL_0115: Unknown result type (might be due to invalid IL or missing references)
				//IL_0131: Unknown result type (might be due to invalid IL or missing references)
				//IL_0150: Unknown result type (might be due to invalid IL or missing references)
				//IL_0142: Unknown result type (might be due to invalid IL or missing references)
				//IL_015e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0173: Unknown result type (might be due to invalid IL or missing references)
				//IL_016f: Unknown result type (might be due to invalid IL or missing references)
				if (m_DistrictModifierRefreshData.m_DistrictOptionData.HasComponent(policy) && m_DistrictData.HasComponent(entity))
				{
					return (PolicyRange)2;
				}
				if (m_DistrictModifierRefreshData.m_DistrictModifierData.HasBuffer(policy) && m_DistrictModifiers.HasBuffer(entity))
				{
					return (PolicyRange)2;
				}
				if (m_BuildingModifierRefreshData.m_BuildingOptionData.HasComponent(policy) && m_BuildingData.HasComponent(entity))
				{
					return (PolicyRange)1;
				}
				if (m_BuildingModifierRefreshData.m_BuildingModifierData.HasBuffer(policy) && m_BuildingModifiers.HasBuffer(entity))
				{
					return (PolicyRange)1;
				}
				if (m_RouteModifierRefreshData.m_RouteOptionData.HasComponent(policy) && m_RouteData.HasComponent(entity))
				{
					return (PolicyRange)4;
				}
				if (m_RouteModifierRefreshData.m_RouteModifierData.HasBuffer(policy) && m_RouteModifiers.HasBuffer(entity))
				{
					return (PolicyRange)4;
				}
				if (m_CityModifierRefreshData.m_CityOptionData.HasComponent(policy) && m_CityData.HasComponent(entity))
				{
					return (PolicyRange)3;
				}
				if (m_CityModifierRefreshData.m_CityModifierData.HasBuffer(policy) && m_CityModifiers.HasBuffer(entity))
				{
					return (PolicyRange)3;
				}
				return (PolicyRange)0;
			}

			private void RefreshEffects(Entity entity, Entity policy, DynamicBuffer<Policy> policies)
			{
				//IL_000c: 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_005e: Unknown result type (might be due to invalid IL or missing references)
				//IL_002e: 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_0034: 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_004a: 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_006c: 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_0080: Unknown result type (might be due to invalid IL or missing references)
				//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_008d: Unknown result type (might be due to invalid IL or missing references)
				//IL_008e: Unknown result type (might be due to invalid IL or missing references)
				//IL_00af: Unknown result type (might be due to invalid IL or missing references)
				//IL_00f7: Unknown result type (might be due to invalid IL or missing references)
				//IL_00c5: Unknown result type (might be due to invalid IL or missing references)
				//IL_00c6: Unknown result type (might be due to invalid IL or missing references)
				//IL_00cb: Unknown result type (might be due to invalid IL or missing references)
				//IL_00d5: Unknown result type (might be due to invalid IL or missing references)
				//IL_00e2: Unknown result type (might be due to invalid IL or missing references)
				//IL_00e3: 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_013e: Unknown result type (might be due to invalid IL or missing references)
				//IL_011b: Unknown result type (might be due to invalid IL or missing references)
				//IL_011c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0121: Unknown result type (might be due to invalid IL or missing references)
				//IL_0129: Unknown result type (might be due to invalid IL or missing references)
				//IL_012b: Unknown result type (might be due to invalid IL or missing references)
				//IL_014c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0194: Unknown result type (might be due to invalid IL or missing references)
				//IL_0162: Unknown result type (might be due to invalid IL or missing references)
				//IL_0163: Unknown result type (might be due to invalid IL or missing references)
				//IL_0168: Unknown result type (might be due to invalid IL or missing references)
				//IL_0172: Unknown result type (might be due to invalid IL or missing references)
				//IL_017f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0180: Unknown result type (might be due to invalid IL or missing references)
				//IL_01a2: Unknown result type (might be due to invalid IL or missing references)
				//IL_01db: Unknown result type (might be due to invalid IL or missing references)
				//IL_01b8: Unknown result type (might be due to invalid IL or missing references)
				//IL_01b9: Unknown result type (might be due to invalid IL or missing references)
				//IL_01be: Unknown result type (might be due to invalid IL or missing references)
				//IL_01c6: Unknown result type (might be due to invalid IL or missing references)
				//IL_01c8: Unknown result type (might be due to invalid IL or missing references)
				//IL_01e9: Unknown result type (might be due to invalid IL or missing references)
				//IL_0231: Unknown result type (might be due to invalid IL or missing references)
				//IL_01ff: Unknown result type (might be due to invalid IL or missing references)
				//IL_0200: Unknown result type (might be due to invalid IL or missing references)
				//IL_0205: Unknown result type (might be due to invalid IL or missing references)
				//IL_020f: Unknown result type (might be due to invalid IL or missing references)
				//IL_021c: Unknown result type (might be due to invalid IL or missing references)
				//IL_021d: Unknown result type (might be due to invalid IL or missing references)
				//IL_023f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0292: Unknown result type (might be due to invalid IL or missing references)
				//IL_0254: Unknown result type (might be due to invalid IL or missing references)
				//IL_0264: Unknown result type (might be due to invalid IL or missing references)
				//IL_0265: Unknown result type (might be due to invalid IL or missing references)
				//IL_026a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0272: Unknown result type (might be due to invalid IL or missing references)
				//IL_0274: Unknown result type (might be due to invalid IL or missing references)
				//IL_0276: Unknown result type (might be due to invalid IL or missing references)
				//IL_027b: Unknown result type (might be due to invalid IL or missing references)
				if (m_DistrictModifierRefreshData.m_DistrictOptionData.HasComponent(policy) && m_DistrictData.HasComponent(entity))
				{
					District val = m_DistrictData[entity];
					((DistrictModifierRefreshData)(ref m_DistrictModifierRefreshData)).RefreshDistrictOptions(ref val, policies);
					m_DistrictData[entity] = val;
				}
				if (m_DistrictModifierRefreshData.m_DistrictModifierData.HasBuffer(policy) && m_DistrictModifiers.HasBuffer(entity))
				{
					DynamicBuffer<DistrictModifier> val2 = m_DistrictModifiers[entity];
					((DistrictModifierRefreshData)(ref m_DistrictModifierRefreshData)).RefreshDistrictModifiers(val2, policies);
				}
				if (m_BuildingModifierRefreshData.m_BuildingOptionData.HasComponent(policy) && m_BuildingData.HasComponent(entity))
				{
					Building val3 = m_BuildingData[entity];
					((BuildingModifierRefreshData)(ref m_BuildingModifierRefreshData)).RefreshBuildingOptions(ref val3, policies);
					m_BuildingData[entity] = val3;
				}
				if (m_BuildingModifierRefreshData.m_BuildingModifierData.HasBuffer(policy) && m_BuildingModifiers.HasBuffer(entity))
				{
					DynamicBuffer<BuildingModifier> val4 = m_BuildingModifiers[entity];
					((BuildingModifierRefreshData)(ref m_BuildingModifierRefreshData)).RefreshBuildingModifiers(val4, policies);
				}
				if (m_RouteModifierRefreshData.m_RouteOptionData.HasComponent(policy) && m_RouteData.HasComponent(entity))
				{
					Route route = m_RouteData[entity];
					m_RouteModifierRefreshData.RefreshRouteOptions(ref route, policies);
					m_RouteData[entity] = route;
				}
				if (m_RouteModifierRefreshData.m_RouteModifierData.HasBuffer(policy) && m_RouteModifiers.HasBuffer(entity))
				{
					DynamicBuffer<RouteModifier> modifiers = m_RouteModifiers[entity];
					m_RouteModifierRefreshData.RefreshRouteModifiers(modifiers, policies);
				}
				if (m_CityModifierRefreshData.m_CityOptionData.HasComponent(policy) && m_CityData.HasComponent(entity))
				{
					City val5 = m_CityData[entity];
					((CityModifierRefreshData)(ref m_CityModifierRefreshData)).RefreshCityOptions(ref val5, policies);
					m_CityData[entity] = val5;
				}
				if (m_CityModifierRefreshData.m_CityModifierData.HasBuffer(policy) && m_CityModifiers.HasBuffer(entity))
				{
					NativeList<CityModifierData> val6 = default(NativeList<CityModifierData>);
					val6..ctor(10, AllocatorHandle.op_Implicit((Allocator)2));
					DynamicBuffer<CityModifier> val7 = m_CityModifiers[entity];
					((CityModifierRefreshData)(ref m_CityModifierRefreshData)).RefreshCityModifiers(val7, policies, m_EffectProviderChunks, val6);
					val6.Dispose();
				}
				((EntityCommandBuffer)(ref m_CommandBuffer)).AddComponent<Updated>(entity);
			}

			void IJobChunk.Execute(in ArchetypeChunk chunk, int unfilteredChunkIndex, bool useEnabledMask, in v128 chunkEnabledMask)
			{
				Execute(in chunk, unfilteredChunkIndex, useEnabledMask, in chunkEnabledMask);
			}
		}

		private struct TypeHandle
		{
			[ReadOnly]
			public ComponentTypeHandle<Modify> __Game_Policies_Modify_RO_ComponentTypeHandle;

			public ComponentLookup<District> __Game_Areas_District_RW_ComponentLookup;

			public ComponentLookup<Building> __Game_Buildings_Building_RW_ComponentLookup;

			public ComponentLookup<Route> __Game_Routes_Route_RW_ComponentLookup;

			public ComponentLookup<City> __Game_City_City_RW_ComponentLookup;

			public BufferLookup<DistrictModifier> __Game_Areas_DistrictModifier_RW_BufferLookup;

			public BufferLookup<BuildingModifier> __Game_Buildings_BuildingModifier_RW_BufferLookup;

			public BufferLookup<RouteModifier> __Game_Routes_RouteModifier_RW_BufferLookup;

			public BufferLookup<CityModifier> __Game_City_CityModifier_RW_BufferLookup;

			public BufferLookup<Policy> __Game_Policies_Policy_RW_BufferLookup;

			[MethodImpl(MethodImplOptions.AggressiveInlining)]
			public void __AssignHandles(ref SystemState state)
			{
				//IL_0004: Unknown result type (might be due to invalid IL or missing references)
				//IL_0009: 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_0016: 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_0023: 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)
				//IL_0030: 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_0045: Unknown result type (might be due to invalid IL or missing references)
				//IL_004a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0052: Unknown result type (might be due to invalid IL or missing references)
				//IL_0057: Unknown result type (might be due to invalid IL or missing references)
				//IL_005f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0064: Unknown result type (might be due to invalid IL or missing references)
				//IL_006c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0071: 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_007e: Unknown result type (might be due to invalid IL or missing references)
				__Game_Policies_Modify_RO_ComponentTypeHandle = ((SystemState)(ref state)).GetComponentTypeHandle<Modify>(true);
				__Game_Areas_District_RW_ComponentLookup = ((SystemState)(ref state)).GetComponentLookup<District>(false);
				__Game_Buildings_Building_RW_ComponentLookup = ((SystemState)(ref state)).GetComponentLookup<Building>(false);
				__Game_Routes_Route_RW_ComponentLookup = ((SystemState)(ref state)).GetComponentLookup<Route>(false);
				__Game_City_City_RW_ComponentLookup = ((SystemState)(ref state)).GetComponentLookup<City>(false);
				__Game_Areas_DistrictModifier_RW_BufferLookup = ((SystemState)(ref state)).GetBufferLookup<DistrictModifier>(false);
				__Game_Buildings_BuildingModifier_RW_BufferLookup = ((SystemState)(ref state)).GetBufferLookup<BuildingModifier>(false);
				__Game_Routes_RouteModifier_RW_BufferLookup = ((SystemState)(ref state)).GetBufferLookup<RouteModifier>(false);
				__Game_City_CityModifier_RW_BufferLookup = ((SystemState)(ref state)).GetBufferLookup<CityModifier>(false);
				__Game_Policies_Policy_RW_BufferLookup = ((SystemState)(ref state)).GetBufferLookup<Policy>(false);
			}
		}

		private EntityQuery m_EventQuery;

		private EntityQuery m_EffectProviderQuery;

		private ModificationBarrier4 m_ModificationBarrier;

		private TriggerSystem m_TriggerSystem;

		private NativeQueue<PolicyEventInfo> m_PolicyEventInfos;

		private DistrictModifierRefreshData m_DistrictModifierRefreshData;

		private BuildingModifierRefreshData m_BuildingModifierRefreshData;

		private RouteModifierInitializeSystem.RouteModifierRefreshData m_RouteModifierRefreshData;

		private CityModifierRefreshData m_CityModifierRefreshData;

		private TypeHandle __TypeHandle;

		[Preserve]
		[Preserve]
		protected override void OnCreate()
		{
			//IL_000a: Unknown result type (might be due to invalid IL or missing references)
			//IL_000f: 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_001b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_0027: Unknown result type (might be due to invalid IL or missing references)
			//IL_002c: Unknown result type (might be due to invalid IL or missing references)
			//IL_003f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0044: 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_0058: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_0069: Unknown result type (might be due to invalid IL or missing references)
			//IL_006e: Unknown result type (might be due to invalid IL or missing references)
			//IL_007d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0082: 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_008e: 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_009a: 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_00a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d9: Unknown result type (might be due to invalid IL or missing references)
			((GameSystemBase)this).OnCreate();
			m_PolicyEventInfos = new NativeQueue<PolicyEventInfo>(AllocatorHandle.op_Implicit((Allocator)4));
			m_DistrictModifierRefreshData = new DistrictModifierRefreshData((SystemBase)(object)this);
			m_BuildingModifierRefreshData = new BuildingModifierRefreshData((SystemBase)(object)this);
			m_RouteModifierRefreshData = new RouteModifierInitializeSystem.RouteModifierRefreshData((SystemBase)(object)this);
			m_CityModifierRefreshData = new CityModifierRefreshData((SystemBase)(object)this);
			m_EventQuery = ((ComponentSystemBase)this).GetEntityQuery((ComponentType[])(object)new ComponentType[2]
			{
				ComponentType.ReadOnly<Event>(),
				ComponentType.ReadOnly<Modify>()
			});
			m_EffectProviderQuery = ((ComponentSystemBase)this).GetEntityQuery((ComponentType[])(object)new ComponentType[4]
			{
				ComponentType.ReadOnly<CityEffectProvider>(),
				ComponentType.Exclude<Deleted>(),
				ComponentType.Exclude<Destroyed>(),
				ComponentType.Exclude<Temp>()
			});
			m_ModificationBarrier = ((ComponentSystemBase)this).World.GetOrCreateSystemManaged<ModificationBarrier4>();
			m_TriggerSystem = ((ComponentSystemBase)this).World.GetOrCreateSystemManaged<TriggerSystem>();
			((ComponentSystemBase)this).RequireForUpdate(m_EventQuery);
		}

		[Preserve]
		[Preserve]
		protected override void OnUpdate()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000f: 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_0069: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_005c: Unknown result type (might be due to invalid IL or missing references)
			//IL_006e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0160: Unknown result type (might be due to invalid IL or missing references)
			//IL_0165: Unknown result type (might be due to invalid IL or missing references)
			//IL_016d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0172: Unknown result type (might be due to invalid IL or missing references)
			//IL_0187: Unknown result type (might be due to invalid IL or missing references)
			//IL_018c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0193: Unknown result type (might be due to invalid IL or missing references)
			//IL_0194: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_01af: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d8: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ea: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_01fc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0209: Unknown result type (might be due to invalid IL or missing references)
			//IL_020e: Unknown result type (might be due to invalid IL or missing references)
			//IL_021b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0220: Unknown result type (might be due to invalid IL or missing references)
			//IL_022d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0232: Unknown result type (might be due to invalid IL or missing references)
			//IL_023f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0244: Unknown result type (might be due to invalid IL or missing references)
			//IL_0251: Unknown result type (might be due to invalid IL or missing references)
			//IL_0256: Unknown result type (might be due to invalid IL or missing references)
			//IL_0263: Unknown result type (might be due to invalid IL or missing references)
			//IL_0268: Unknown result type (might be due to invalid IL or missing references)
			//IL_0275: Unknown result type (might be due to invalid IL or missing references)
			//IL_027a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0284: Unknown result type (might be due to invalid IL or missing references)
			//IL_028a: Unknown result type (might be due to invalid IL or missing references)
			//IL_028f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0290: Unknown result type (might be due to invalid IL or missing references)
			//IL_0295: Unknown result type (might be due to invalid IL or missing references)
			//IL_029a: Unknown result type (might be due to invalid IL or missing references)
			//IL_029e: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_02da: Unknown result type (might be due to invalid IL or missing references)
			//IL_02dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_02cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_02fd: Unknown result type (might be due to invalid IL or missing references)
			JobHandle val = default(JobHandle);
			NativeList<ArchetypeChunk> effectProviderChunks = ((EntityQuery)(ref m_EffectProviderQuery)).ToArchetypeChunkListAsync(AllocatorHandle.op_Implicit((Allocator)3), ref val);
			((DistrictModifierRefreshData)(ref m_DistrictModifierRefreshData)).Update((SystemBase)(object)this);
			((BuildingModifierRefreshData)(ref m_BuildingModifierRefreshData)).Update((SystemBase)(object)this);
			m_RouteModifierRefreshData.Update((SystemBase)(object)this);
			((CityModifierRefreshData)(ref m_CityModifierRefreshData)).Update((SystemBase)(object)this);
			NativeQueue<TriggerAction> val2 = (((ComponentSystemBase)m_TriggerSystem).Enabled ? m_TriggerSystem.CreateActionBuffer() : new NativeQueue<TriggerAction>(AllocatorHandle.op_Implicit((Allocator)3)));
			__TypeHandle.__Game_Policies_Policy_RW_BufferLookup.Update(ref ((SystemBase)this).CheckedStateRef);
			__TypeHandle.__Game_City_CityModifier_RW_BufferLookup.Update(ref ((SystemBase)this).CheckedStateRef);
			__TypeHandle.__Game_Routes_RouteModifier_RW_BufferLookup.Update(ref ((SystemBase)this).CheckedStateRef);
			__TypeHandle.__Game_Buildings_BuildingModifier_RW_BufferLookup.Update(ref ((SystemBase)this).CheckedStateRef);
			__TypeHandle.__Game_Areas_DistrictModifier_RW_BufferLookup.Update(ref ((SystemBase)this).CheckedStateRef);
			__TypeHandle.__Game_City_City_RW_ComponentLookup.Update(ref ((SystemBase)this).CheckedStateRef);
			__TypeHandle.__Game_Routes_Route_RW_ComponentLookup.Update(ref ((SystemBase)this).CheckedStateRef);
			__TypeHandle.__Game_Buildings_Building_RW_ComponentLookup.Update(ref ((SystemBase)this).CheckedStateRef);
			__TypeHandle.__Game_Areas_District_RW_ComponentLookup.Update(ref ((SystemBase)this).CheckedStateRef);
			__TypeHandle.__Game_Policies_Modify_RO_ComponentTypeHandle.Update(ref ((SystemBase)this).CheckedStateRef);
			ModifyPolicyJob modifyPolicyJob = default(ModifyPolicyJob);
			modifyPolicyJob.m_DistrictModifierRefreshData = m_DistrictModifierRefreshData;
			modifyPolicyJob.m_BuildingModifierRefreshData = m_BuildingModifierRefreshData;
			modifyPolicyJob.m_RouteModifierRefreshData = m_RouteModifierRefreshData;
			modifyPolicyJob.m_CityModifierRefreshData = m_CityModifierRefreshData;
			modifyPolicyJob.m_EffectProviderChunks = effectProviderChunks;
			modifyPolicyJob.m_ModifyType = __TypeHandle.__Game_Policies_Modify_RO_ComponentTypeHandle;
			modifyPolicyJob.m_TriggerBuffer = val2.AsParallelWriter();
			modifyPolicyJob.m_DistrictData = __TypeHandle.__Game_Areas_District_RW_ComponentLookup;
			modifyPolicyJob.m_BuildingData = __TypeHandle.__Game_Buildings_Building_RW_ComponentLookup;
			modifyPolicyJob.m_RouteData = __TypeHandle.__Game_Routes_Route_RW_ComponentLookup;
			modifyPolicyJob.m_CityData = __TypeHandle.__Game_City_City_RW_ComponentLookup;
			modifyPolicyJob.m_DistrictModifiers = __TypeHandle.__Game_Areas_DistrictModifier_RW_BufferLookup;
			modifyPolicyJob.m_BuildingModifiers = __TypeHandle.__Game_Buildings_BuildingModifier_RW_BufferLookup;
			modifyPolicyJob.m_RouteModifiers = __TypeHandle.__Game_Routes_RouteModifier_RW_BufferLookup;
			modifyPolicyJob.m_CityModifiers = __TypeHandle.__Game_City_CityModifier_RW_BufferLookup;
			modifyPolicyJob.m_Policies = __TypeHandle.__Game_Policies_Policy_RW_BufferLookup;
			modifyPolicyJob.m_PolicyEventInfos = m_PolicyEventInfos.AsParallelWriter();
			modifyPolicyJob.m_CommandBuffer = ((SafeCommandBufferSystem)m_ModificationBarrier).CreateCommandBuffer();
			ModifyPolicyJob modifyPolicyJob2 = modifyPolicyJob;
			JobHandle val3 = JobChunkExtensions.Schedule<ModifyPolicyJob>(modifyPolicyJob2, m_EventQuery, JobHandle.CombineDependencies(((SystemBase)this).Dependency, val));
			effectProviderChunks.Dispose(val3);
			((EntityCommandBufferSystem)m_ModificationBarrier).AddJobHandleForProducer(val3);
			if (((ComponentSystemBase)m_TriggerSystem).Enabled)
			{
				m_TriggerSystem.AddActionBufferWriter(val3);
			}
			else
			{
				val2.Dispose(val3);
			}
			((SystemBase)this).Dependency = val3;
			((JobHandle)(ref val3)).Complete();
			while (m_PolicyEventInfos.Count > 0)
			{
				Telemetry.Policy(m_PolicyEventInfos.Dequeue());
			}
		}

		[Preserve]
		[Preserve]
		protected override void OnDestroy()
		{
			m_PolicyEventInfos.Dispose();
		}

		protected override void OnCreateForCompiler()
		{
			((ComponentSystemBase)this).OnCreateForCompiler();
			__TypeHandle.__AssignHandles(ref ((SystemBase)this).CheckedStateRef);
		}

		[Preserve]
		[Preserve]
		public ModifiedSystem()
		{
		}
	}
	[BepInPlugin("TransportPolicyAdjuster", "TransportPolicyAdjuster", "1.2.0")]
	[HarmonyPatch]
	public class PublicTransportSettingsPlugin : BaseUnityPlugin
	{
		public void Awake()
		{
			//IL_0012: Unknown result type (might be due to invalid IL or missing references)
			//IL_0017: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: 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_0030: Expected I4, but got Unknown
			((BaseUnityPlugin)this).Logger.LogInfo((object)"Plugin TransportPolicyAdjuster is loaded!");
			OperatingSystemFamily operatingSystemFamily = SystemInfo.operatingSystemFamily;
			if (1 == 0)
			{
			}
			string text = (operatingSystemFamily - 1) switch
			{
				0 => "TransportPolicyAdjuster_mac_x86_64.bundle", 
				1 => "TransportPolicyAdjuster_win_x86_64.dll", 
				2 => "TransportPolicyAdjuster_linux_x86_64.so", 
				_ => throw new NotImplementedException(), 
			};
			if (1 == 0)
			{
			}
			string text2 = text;
			BurstRuntime.LoadAdditionalLibrary(text2);
			Harmony.CreateAndPatchAll(typeof(PublicTransportSettingsPlugin).Assembly, "TransportPolicyAdjuster");
		}

		[HarmonyPatch(typeof(SystemOrder), "Initialize", new Type[] { typeof(UpdateSystem) })]
		[HarmonyPostfix]
		private static void InjectSystems(UpdateSystem updateSystem)
		{
			updateSystem.UpdateAt<ModifiedSystem>((SystemUpdatePhase)6);
		}

		[HarmonyPatch(typeof(ModifiedSystem), "OnUpdate")]
		[HarmonyPrefix]
		private static bool OnUpdate(ref ModifiedSystem __instance)
		{
			((ComponentSystemBase)__instance).Enabled = false;
			return false;
		}
	}
	public static class ReflectionExtensions
	{
		public static T GetMemberValue<T>(this object obj, string memberName)
		{
			MemberInfo memberInfo = GetMemberInfo(obj, memberName);
			object obj2 = null;
			try
			{
				if (memberInfo is PropertyInfo)
				{
					obj2 = memberInfo.As<PropertyInfo>().GetValue(obj, null);
					return (T)obj2;
				}
				if (memberInfo is FieldInfo)
				{
					obj2 = memberInfo.As<FieldInfo>().GetValue(obj);
					return (T)obj2;
				}
				throw new Exception("ReflectionExtensions: Couldn't find member name: " + memberName + "!");
			}
			catch (InvalidCastException)
			{
				throw new Exception("Cannot cast " + obj2.GetType().FullName + " to " + typeof(T).GetType().FullName);
			}
		}

		public static T SetMemberValue<T>(this object obj, string memberName, T newValue)
		{
			MemberInfo memberInfo = GetMemberInfo(obj, memberName);
			T memberValue = obj.GetMemberValue<T>(memberName);
			if (memberInfo is PropertyInfo)
			{
				memberInfo.As<PropertyInfo>().SetValue(obj, newValue, null);
			}
			else if (memberInfo is FieldInfo)
			{
				memberInfo.As<FieldInfo>().SetValue(obj, newValue);
			}
			return memberValue;
		}

		private static MemberInfo GetMemberInfo(object obj, string memberName)
		{
			List<PropertyInfo> source = new List<PropertyInfo> { obj.GetType().GetProperty(memberName, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.FlattenHierarchy) };
			source = source.Where((PropertyInfo i) => (object)i != null).ToList();
			if (source.Count != 0)
			{
				return source[0];
			}
			List<FieldInfo> source2 = new List<FieldInfo> { obj.GetType().GetField(memberName, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.FlattenHierarchy) };
			source2 = source2.Where((FieldInfo i) => (object)i != null).ToList();
			if (source2.Count != 0)
			{
				return source2[0];
			}
			return null;
		}

		[DebuggerHidden]
		private static T As<T>(this object obj)
		{
			return (T)obj;
		}
	}
	[HarmonyPatch]
	public class RouteModifierInitializeSystem
	{
		[BurstCompile]
		public struct InitializeRouteModifiersJob : IJobChunk
		{
			[ReadOnly]
			public RouteModifierRefreshData m_RouteModifierRefreshData;

			[ReadOnly]
			public BufferTypeHandle<Policy> m_PolicyType;

			public ComponentTypeHandle<Route> m_RouteType;

			public BufferTypeHandle<RouteModifier> m_RouteModifierType;

			public void Execute(in ArchetypeChunk chunk, int unfilteredChunkIndex, bool useEnabledMask, in v128 chunkEnabledMask)
			{
				//IL_0008: Unknown result type (might be due to invalid IL or missing references)
				//IL_000d: 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_001a: 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)
				//IL_0027: Unknown result type (might be due to invalid IL or missing references)
				//IL_0030: Unknown result type (might be due to invalid IL or missing references)
				//IL_0035: 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_0050: Unknown result type (might be due to invalid IL or missing references)
				//IL_005a: 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_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_008e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0090: Unknown result type (might be due to invalid IL or missing references)
				NativeArray<Route> nativeArray = ((ArchetypeChunk)(ref chunk)).GetNativeArray<Route>(ref m_RouteType);
				BufferAccessor<RouteModifier> bufferAccessor = ((ArchetypeChunk)(ref chunk)).GetBufferAccessor<RouteModifier>(ref m_RouteModifierType);
				BufferAccessor<Policy> bufferAccessor2 = ((ArchetypeChunk)(ref chunk)).GetBufferAccessor<Policy>(ref m_PolicyType);
				for (int i = 0; i < nativeArray.Length; i++)
				{
					DynamicBuffer<Policy> policies = bufferAccessor2[i];
					if (policies.Length != 0)
					{
						Route route = nativeArray[i];
						m_RouteModifierRefreshData.RefreshRouteOptions(ref route, policies);
						nativeArray[i] = route;
						if (bufferAccessor.Length != 0)
						{
							DynamicBuffer<RouteModifier> modifiers = bufferAccessor[i];
							m_RouteModifierRefreshData.RefreshRouteModifiers(modifiers, policies);
						}
					}
				}
			}

			void IJobChunk.Execute(in ArchetypeChunk chunk, int unfilteredChunkIndex, bool useEnabledMask, in v128 chunkEnabledMask)
			{
				Execute(in chunk, unfilteredChunkIndex, useEnabledMask, in chunkEnabledMask);
			}
		}

		public struct RouteModifierRefreshData
		{
			public ComponentLookup<PolicySliderData> m_PolicySliderData;

			public ComponentLookup<RouteOptionData> m_RouteOptionData;

			public BufferLookup<RouteModifierData> m_RouteModifierData;

			public RouteModifierRefreshData(SystemBase system)
			{
				//IL_0004: Unknown result type (might be due to invalid IL or missing references)
				//IL_0009: 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_0016: 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_0023: Unknown result type (might be due to invalid IL or missing references)
				m_PolicySliderData = system.GetComponentLookup<PolicySliderData>(true);
				m_RouteOptionData = system.GetComponentLookup<RouteOptionData>(true);
				m_RouteModifierData = system.GetBufferLookup<RouteModifierData>(true);
			}

			public RouteModifierRefreshData(RouteModifierRefreshData data)
			{
				//IL_0002: Unknown result type (might be due to invalid IL or missing references)
				//IL_0003: Unknown result type (might be due to invalid IL or missing references)
				//IL_0008: Unknown result type (might be due to invalid IL or missing references)
				//IL_000e: Unknown result type (might be due to invalid IL or missing references)
				//IL_000f: 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_001a: Unknown result type (might be due to invalid IL or missing references)
				//IL_001b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0020: Unknown result type (might be due to invalid IL or missing references)
				m_PolicySliderData = data.m_PolicySliderData;
				m_RouteOptionData = data.m_RouteOptionData;
				m_RouteModifierData = data.m_RouteModifierData;
			}

			public void Update(SystemBase system)
			{
				m_PolicySliderData.Update(system);
				m_RouteOptionData.Update(system);
				m_RouteModifierData.Update(system);
			}

			public void RefreshRouteOptions(ref Route route, DynamicBuffer<Policy> policies)
			{
				//IL_0010: 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_0016: Unknown result type (might be due to invalid IL or missing references)
				//IL_0017: 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_0026: Unknown result type (might be due to invalid IL or missing references)
				//IL_0027: Unknown result type (might be due to invalid IL or missing references)
				//IL_003f: 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_0045: Unknown result type (might be due to invalid IL or missing references)
				//IL_004a: 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)
				route.m_OptionMask = 0u;
				for (int i = 0; i < policies.Length; i++)
				{
					Policy val = policies[i];
					if ((val.m_Flags & 1) != 0 && m_RouteOptionData.HasComponent(val.m_Policy))
					{
						RouteOptionData val2 = m_RouteOptionData[val.m_Policy];
						route.m_OptionMask |= val2.m_OptionMask;
					}
				}
			}

			public void RefreshRouteModifiers(DynamicBuffer<RouteModifier> modifiers, DynamicBuffer<Policy> policies)
			{
				//IL_0014: 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_001b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0021: Unknown result type (might be due to invalid IL or missing references)
				//IL_002a: 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)
				//IL_004b: Unknown result type (might be due to invalid IL or missing references)
				//IL_004c: Unknown result type (might be due to invalid IL or missing references)
				//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_0064: Unknown result type (might be due to invalid IL or missing references)
				//IL_0069: Unknown result type (might be due to invalid IL or missing references)
				//IL_0071: Unknown result type (might be due to invalid IL or missing references)
				//IL_0072: Unknown result type (might be due to invalid IL or missing references)
				//IL_0115: Unknown result type (might be due to invalid IL or missing references)
				//IL_0117: Unknown result type (might be due to invalid IL or missing references)
				//IL_008c: Unknown result type (might be due to invalid IL or missing references)
				//IL_008d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0092: Unknown result type (might be due to invalid IL or missing references)
				//IL_0097: Unknown result type (might be due to invalid IL or missing references)
				//IL_0099: Unknown result type (might be due to invalid IL or missing references)
				//IL_009f: 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_00ac: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ae: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b8: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ba: 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)
				//IL_00d1: 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)
				//IL_00dd: Unknown result type (might be due to invalid IL or missing references)
				//IL_00f0: Unknown result type (might be due to invalid IL or missing references)
				//IL_00f2: Unknown result type (might be due to invalid IL or missing references)
				//IL_00fc: Unknown result type (might be due to invalid IL or missing references)
				//IL_00fe: 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_0125: Unknown result type (might be due to invalid IL or missing references)
				modifiers.Clear();
				for (int i = 0; i < policies.Length; i++)
				{
					Policy val = policies[i];
					if ((val.m_Flags & 1) == 0 || !m_RouteModifierData.HasBuffer(val.m_Policy))
					{
						continue;
					}
					DynamicBuffer<RouteModifierData> val2 = m_RouteModifierData[val.m_Policy];
					for (int j = 0; j < val2.Length; j++)
					{
						RouteModifierData val3 = val2[j];
						float delta;
						if (m_PolicySliderData.HasComponent(val.m_Policy))
						{
							PolicySliderData val4 = m_PolicySliderData[val.m_Policy];
							float num = (val.m_Adjustment - val4.m_Range.min) / (val4.m_Range.max - val4.m_Range.min);
							num = math.select(num, 0f, val4.m_Range.min == val4.m_Range.max);
							delta = math.lerp(val3.m_Range.min, val3.m_Range.max, num);
						}
						else
						{
							delta = val3.m_Range.min;
						}
						AddModifier(modifiers, val3, delta);
					}
				}
			}

			public static void AddModifier(DynamicBuffer<RouteModifier> modifiers, RouteModifierData modifierData, float delta)
			{
				//IL_001d: 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_0023: Invalid comparison between I4 and Unknown
				//IL_0008: Unknown result type (might be due to invalid IL or missing references)
				//IL_000e: Unknown result type (might be due to invalid IL or missing references)
				//IL_002e: 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_0039: Expected I4, but got Unknown
				//IL_0034: Unknown result type (might be due to invalid IL or missing references)
				//IL_0039: Unknown result type (might be due to invalid IL or missing references)
				//IL_003a: 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_0040: 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)
				//IL_0044: Unknown result type (might be due to invalid IL or missing references)
				//IL_0045: Unknown result type (might be due to invalid IL or missing references)
				//IL_0057: Expected I4, but got Unknown
				//IL_0060: 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_00b5: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b6: Unknown result type (might be due to invalid IL or missing references)
				//IL_00d3: Unknown result type (might be due to invalid IL or missing references)
				//IL_00d4: Unknown result type (might be due to invalid IL or missing references)
				//IL_00d9: Unknown result type (might be due to invalid IL or missing references)
				//IL_00df: Expected I4, but got Unknown
				while (modifiers.Length <= (int)modifierData.m_Type)
				{
					modifiers.Add(default(RouteModifier));
				}
				RouteModifier val = modifiers[(int)modifierData.m_Type];
				ModifierValueMode mode = modifierData.m_Mode;
				ModifierValueMode val2 = mode;
				switch ((int)val2)
				{
				case 0:
					val.m_Delta.y = val.m_Delta.y * (1f + delta) + delta;
					break;
				case 1:
					val.m_Delta.x += delta;
					break;
				case 2:
					delta = 1f / math.max(0.001f, 1f + delta) - 1f;
					val.m_Delta.y = val.m_Delta.y * (1f + delta) + delta;
					break;
				}
				modifiers[(int)modifierData.m_Type] = val;
			}
		}

		[HarmonyPatch(typeof(RouteModifierInitializeSystem), "OnUpdate")]
		[HarmonyPrefix]
		public static bool OnUpdate(ref RouteModifierInitializeSystem __instance)
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000d: 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)
			//IL_0030: 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)
			//IL_004b: 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_0081: Unknown result type (might be due to invalid IL or missing references)
			//IL_008e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0090: Unknown result type (might be due to invalid IL or missing references)
			//IL_0097: Unknown result type (might be due to invalid IL or missing references)
			//IL_0098: Unknown result type (might be due to invalid IL or missing references)
			//IL_009f: 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_00b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d7: Unknown result type (might be due to invalid IL or missing references)
			RouteModifierRefreshData memberValue = __instance.GetMemberValue<RouteModifierRefreshData>("m_RouteModifierRefreshData");
			((RouteModifierRefreshData)(ref memberValue)).Update((SystemBase)(object)__instance);
			object memberValue2 = __instance.GetMemberValue<object>("__TypeHandle");
			BufferTypeHandle<RouteModifier> memberValue3 = memberValue2.GetMemberValue<BufferTypeHandle<RouteModifier>>("__Game_Routes_RouteModifier_RW_BufferTypeHandle");
			memberValue3.Update(ref ((SystemBase)__instance).CheckedStateRef);
			ComponentTypeHandle<Route> memberValue4 = memberValue2.GetMemberValue<ComponentTypeHandle<Route>>("__Game_Routes_Route_RW_ComponentTypeHandle");
			memberValue4.Update(ref ((SystemBase)__instance).CheckedStateRef);
			BufferTypeHandle<Policy> memberValue5 = memberValue2.GetMemberValue<BufferTypeHandle<Policy>>("__Game_Policies_Policy_RO_BufferTypeHandle");
			memberValue5.Update(ref ((SystemBase)__instance).CheckedStateRef);
			InitializeRouteModifiersJob initializeRouteModifiersJob = default(InitializeRouteModifiersJob);
			initializeRouteModifiersJob.m_RouteModifierRefreshData = new RouteModifierRefreshData(memberValue);
			initializeRouteModifiersJob.m_PolicyType = memberValue5;
			initializeRouteModifiersJob.m_RouteType = memberValue4;
			initializeRouteModifiersJob.m_RouteModifierType = memberValue3;
			InitializeRouteModifiersJob initializeRouteModifiersJob2 = initializeRouteModifiersJob;
			InitializeRouteModifiersJob initializeRouteModifiersJob3 = initializeRouteModifiersJob2;
			JobHandle memberValue6 = __instance.GetMemberValue<JobHandle>("Dependency");
			__instance.SetMemberValue<JobHandle>("Dependency", JobChunkExtensions.ScheduleParallel<InitializeRouteModifiersJob>(initializeRouteModifiersJob3, __instance.GetMemberValue<EntityQuery>("m_CreatedQuery"), memberValue6));
			return false;
		}
	}
	[HarmonyPatch]
	public class VehicleCountSection
	{
		[BurstCompile]
		public struct CalculateVehicleCountJob : IJob
		{
			[ReadOnly]
			public Entity m_SelectedEntity;

			[ReadOnly]
			public Entity m_SelectedPrefab;

			[ReadOnly]
			public Entity m_VehicleCountPolicy;

			[ReadOnly]
			public ComponentLookup<VehicleTiming> m_VehicleTimings;

			[ReadOnly]
			public ComponentLookup<PathInformation> m_PathInformations;

			[ReadOnly]
			public ComponentLookup<TransportLineData> m_TransportLineDatas;

			[ReadOnly]
			public ComponentLookup<PolicySliderData> m_PolicySliderDatas;

			[ReadOnly]
			public BufferLookup<RouteVehicle> m_RouteVehicles;

			[ReadOnly]
			public BufferLookup<RouteWaypoint> m_RouteWaypoints;

			[ReadOnly]
			public BufferLookup<RouteSegment> m_RouteSegments;

			[ReadOnly]
			public BufferLookup<RouteModifier> m_RouteModifiers;

			[ReadOnly]
			public BufferLookup<RouteModifierData> m_RouteModifierDatas;

			public NativeArray<int> m_IntResults;

			public NativeList<float2> m_CountResults;

			public void Execute()
			{
				//IL_0008: Unknown result type (might be due to invalid IL or missing references)
				//IL_000d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0012: 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_001f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0024: Unknown result type (might be due to invalid IL or missing references)
				//IL_002c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0031: Unknown result type (might be due to invalid IL or missing references)
				//IL_0036: 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_0048: Unknown result type (might be due to invalid IL or missing references)
				//IL_0050: Unknown result type (might be due to invalid IL or missing references)
				//IL_0055: Unknown result type (might be due to invalid IL or missing references)
				//IL_005a: Unknown result type (might be due to invalid IL or missing references)
				//IL_005c: Unknown result type (might be due to invalid IL or missing references)
				//IL_006a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0073: 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)
				//IL_008a: Unknown result type (might be due to invalid IL or missing references)
				//IL_008c: Unknown result type (might be due to invalid IL or missing references)
				//IL_008e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0094: Invalid comparison between Unknown and I4
				//IL_00c6: Unknown result type (might be due to invalid IL or missing references)
				TransportLineData val = m_TransportLineDatas[m_SelectedPrefab];
				DynamicBuffer<RouteVehicle> val2 = m_RouteVehicles[m_SelectedEntity];
				DynamicBuffer<RouteModifier> val3 = m_RouteModifiers[m_SelectedEntity];
				DynamicBuffer<RouteModifierData> val4 = m_RouteModifierDatas[m_VehicleCountPolicy];
				PolicySliderData val5 = m_PolicySliderDatas[m_VehicleCountPolicy];
				float defaultVehicleInterval = val.m_DefaultVehicleInterval;
				float vehicleInterval = defaultVehicleInterval;
				RouteUtils.ApplyModifier(ref vehicleInterval, val3, (RouteModifierType)1);
				float num = CalculateStableDuration(val);
				float2 val7 = default(float2);
				for (int i = 0; i < val4.Length; i++)
				{
					RouteModifierData val6 = val4[i];
					if ((int)val6.m_Type == 1)
					{
						ref NativeList<float2> countResults = ref m_CountResults;
						for (int j = 1; j <= 50; j++)
						{
							float num2 = 100f / (num / (defaultVehicleInterval * (float)j));
							((float2)(ref val7))..ctor((float)j * val5.m_Step, num2);
							countResults.Add(ref val7);
						}
					}
				}
				m_IntResults[0] = CalculateVehicleCount(vehicleInterval, num);
				m_IntResults[1] = val2.Length;
			}

			private int CalculateVehicleCount(float vehicleInterval, float lineDuration)
			{
				return math.max(1, (int)math.round(lineDuration / math.max(1f, vehicleInterval)));
			}

			private float CalculateStableDuration(TransportLineData transportLineData)
			{
				//IL_0008: Unknown result type (might be due to invalid IL or missing references)
				//IL_000d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0012: 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_001f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0024: Unknown result type (might be due to invalid IL or missing references)
				//IL_0037: Unknown result type (might be due to invalid IL or missing references)
				//IL_003c: Unknown result type (might be due to invalid IL or missing references)
				//IL_007d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0082: Unknown result type (might be due to invalid IL or missing references)
				//IL_0090: Unknown result type (might be due to invalid IL or missing references)
				//IL_0092: Unknown result type (might be due to invalid IL or missing references)
				//IL_009b: 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_00a9: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ae: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b3: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
				//IL_00be: Unknown result type (might be due to invalid IL or missing references)
				//IL_00c3: Unknown result type (might be due to invalid IL or missing references)
				//IL_00c8: Unknown result type (might be due to invalid IL or missing references)
				//IL_00cc: Unknown result type (might be due to invalid IL or missing references)
				//IL_00d3: Unknown result type (might be due to invalid IL or missing references)
				//IL_00d8: Unknown result type (might be due to invalid IL or missing references)
				//IL_00dd: Unknown result type (might be due to invalid IL or missing references)
				//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
				//IL_0106: Unknown result type (might be due to invalid IL or missing references)
				//IL_00f6: Unknown result type (might be due to invalid IL or missing references)
				//IL_0115: Unknown result type (might be due to invalid IL or missing references)
				DynamicBuffer<RouteWaypoint> val = m_RouteWaypoints[m_SelectedEntity];
				DynamicBuffer<RouteSegment> val2 = m_RouteSegments[m_SelectedEntity];
				int num = 0;
				for (int i = 0; i < val.Length; i++)
				{
					if (m_VehicleTimings.HasComponent(val[i].m_Waypoint))
					{
						num = i;
						break;
					}
				}
				float num2 = 0f;
				PathInformation val4 = default(PathInformation);
				for (int j = 0; j < val.Length; j++)
				{
					int2 val3 = int2.op_Implicit(num + j);
					val3.y++;
					val3 = math.select(val3, val3 - val.Length, val3 >= val.Length);
					Entity waypoint = val[val3.y].m_Waypoint;
					Entity segment = val2[val3.x].m_Segment;
					if (m_PathInformations.TryGetComponent(segment, ref val4))
					{
						num2 += val4.m_Duration;
					}
					if (m_VehicleTimings.HasComponent(waypoint))
					{
						num2 += transportLineData.m_StopDuration;
					}
				}
				return num2;
			}
		}

		[MethodImpl(MethodImplOptions.NoInlining)]
		[HarmonyReversePatch(/*Could not decode attribute arguments.*/)]
		[HarmonyPatch(typeof(VehicleCountSection), "Visible")]
		public static bool Visible(VehicleCountSection instance)
		{
			return false;
		}

		[HarmonyPatch(typeof(VehicleCountSection), "OnSetVehicleCount")]
		[HarmonyPrefix]
		public static bool OnSetVehicleCount(float newVehicleCount, ref VehicleCountSection __instance)
		{
			//IL_0015: 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_0022: Unknown result type (might be due to invalid IL or missing references)
			//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_0034: Unknown result type (might be due to invalid IL or missing references)
			//IL_0047: 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_00ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b2: Unknown result type (might be due to invalid IL or missing references)
			PoliciesUISystem memberValue = __instance.GetMemberValue<PoliciesUISystem>("m_PoliciesUISystem");
			Entity memberValue2 = __instance.GetMemberValue<Entity>("selectedEntity");
			Entity memberValue3 = __instance.GetMemberValue<Entity>("m_VehicleCountPolicy");
			NativeList<float2> memberValue4 = __instance.GetMemberValue<NativeList<float2>>("m_CountResult");
			float2? val = null;
			for (int i = 0; i < memberValue4.Length; i++)
			{
				if (memberValue4[i].x == newVehicleCount)
				{
					val = memberValue4[i];
					break;
				}
			}
			if (!val.HasValue)
			{
				throw new Exception($"TransportPolicyAdjuster: m_CountResult does not contain index {newVehicleCount}");
			}
			memberValue.SetPolicy(memberValue2, memberValue3, true, val.Value.y);
			return false;
		}

		[HarmonyPatch(typeof(VehicleCountSection), "OnWriteProperties")]
		[HarmonyPrefix]
		public static bool OnWriteProperties(ref IJsonWriter writer, ref VehicleCountSection __instance)
		{
			//IL_006a: Unknown result type (might be due to invalid IL or missing references)
			writer.PropertyName("vehicleCount");
			writer.Write(__instance.GetMemberValue<int>("vehicleCount"));
			writer.PropertyName("activeVehicles");
			writer.Write(__instance.GetMemberValue<int>("activeVehicles"));
			writer.PropertyName("vehicleCounts");
			int num = 50;
			JsonWriterExtensions.ArrayBegin(writer, num);
			for (int i = 1; i <= num; i++)
			{
				MathematicsWriters.Write(writer, new float2((float)(i * 10), (float)i));
			}
			writer.ArrayEnd();
			return false;
		}

		[HarmonyPatch(typeof(VehicleCountSection), "OnUpdate")]
		[HarmonyPrefix]
		public static bool OnUpdate(ref VehicleCountSection __instance)
		{
			//IL_0037: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0052: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0072: 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_008e: 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_00aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_0115: Unknown result type (might be due to invalid IL or missing references)
			//IL_011a: Unknown result type (might be due to invalid IL or missing references)
			//IL_013c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0141: Unknown result type (might be due to invalid IL or missing references)
			//IL_014f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0154: Unknown result type (might be due to invalid IL or missing references)
			//IL_0162: Unknown result type (might be due to invalid IL or missing references)
			//IL_0167: Unknown result type (might be due to invalid IL or missing references)
			//IL_016e: 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_0177: Unknown result type (might be due to invalid IL or missing references)
			//IL_0179: Unknown result type (might be due to invalid IL or missing references)
			//IL_0180: Unknown result type (might be due to invalid IL or missing references)
			//IL_0182: Unknown result type (might be due to invalid IL or missing references)
			//IL_0189: Unknown result type (might be due to invalid IL or missing references)
			//IL_018b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0192: Unknown result type (might be due to invalid IL or missing references)
			//IL_0194: Unknown result type (might be due to invalid IL or missing references)
			//IL_019b: Unknown result type (might be due to invalid IL or missing references)
			//IL_019d: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_01dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f3: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f8: Unknown result type (might be due to invalid IL or missing references)
			__instance.SetMemberValue("visible", Visible(__instance));
			object memberValue = __instance.GetMemberValue<object>("__TypeHandle");
			if (((InfoSectionBase)__instance).visible)
			{
				BufferLookup<RouteModifierData> memberValue2 = memberValue.GetMemberValue<BufferLookup<RouteModifierData>>("__Game_Prefabs_RouteModifierData_RO_BufferLookup");
				memberValue2.Update(ref ((SystemBase)__instance).CheckedStateRef);
				BufferLookup<RouteModifier> memberValue3 = memberValue.GetMemberValue<BufferLookup<RouteModifier>>("__Game_Routes_RouteModifier_RO_BufferLookup");
				memberValue3.Update(ref ((SystemBase)__instance).CheckedStateRef);
				BufferLookup<RouteSegment> memberValue4 = memberValue.GetMemberValue<BufferLookup<RouteSegment>>("__Game_Routes_RouteSegment_RO_BufferLookup");
				memberValue4.Update(ref ((SystemBase)__instance).CheckedStateRef);
				BufferLookup<RouteWaypoint> memberValue5 = memberValue.GetMemberValue<BufferLookup<RouteWaypoint>>("__Game_Routes_RouteWaypoint_RO_BufferLookup");
				memberValue5.Update(ref ((SystemBase)__instance).CheckedStateRef);
				BufferLookup<RouteVehicle> memberValue6 = memberValue.GetMemberValue<BufferLookup<RouteVehicle>>("__Game_Routes_RouteVehicle_RO_BufferLookup");
				memberValue6.Update(ref ((SystemBase)__instance).CheckedStateRef);
				ComponentLookup<PathInformation> memberValue7 = memberValue.GetMemberValue<ComponentLookup<PathInformation>>("__Game_Pathfind_PathInformation_RO_ComponentLookup");
				memberValue7.Update(ref ((SystemBase)__instance).CheckedStateRef);
				ComponentLookup<VehicleTiming> memberValue8 = memberValue.GetMemberValue<ComponentLookup<VehicleTiming>>("__Game_Routes_VehicleTiming_RO_ComponentLookup");
				memberValue8.Update(ref ((SystemBase)__instance).CheckedStateRef);
				ComponentLookup<PolicySliderData> memberValue9 = memberValue.GetMemberValue<ComponentLookup<PolicySliderData>>("__Game_Prefabs_PolicySliderData_RO_ComponentLookup");
				memberValue9.Update(ref ((SystemBase)__instance).CheckedStateRef);
				ComponentLookup<TransportLineData> memberValue10 = memberValue.GetMemberValue<ComponentLookup<TransportLineData>>("__Game_Prefabs_TransportLineData_RO_ComponentLookup");
				memberValue10.Update(ref ((SystemBase)__instance).CheckedStateRef);
				CalculateVehicleCountJob calculateVehicleCountJob = default(CalculateVehicleCountJob);
				calculateVehicleCountJob.m_SelectedEntity = __instance.GetMemberValue<Entity>("selectedEntity");
				calculateVehicleCountJob.m_SelectedPrefab = __instance.GetMemberValue<Entity>("selectedPrefab");
				calculateVehicleCountJob.m_VehicleCountPolicy = __instance.GetMemberValue<Entity>("m_VehicleCountPolicy");
				calculateVehicleCountJob.m_TransportLineDatas = memberValue10;
				calculateVehicleCountJob.m_PolicySliderDatas = memberValue9;
				calculateVehicleCountJob.m_VehicleTimings = memberValue8;
				calculateVehicleCountJob.m_PathInformations = memberValue7;
				calculateVehicleCountJob.m_RouteVehicles = memberValue6;
				calculateVehicleCountJob.m_RouteWaypoints = memberValue5;
				calculateVehicleCountJob.m_RouteSegments = memberValue4;
				calculateVehicleCountJob.m_RouteModifiers = memberValue3;
				calculateVehicleCountJob.m_RouteModifierDatas = memberValue2;
				calculateVehicleCountJob.m_IntResults = __instance.GetMemberValue<NativeArray<int>>("m_IntResults");
				calculateVehicleCountJob.m_CountResults = __instance.GetMemberValue<NativeList<float2>>("m_CountResult");
				CalculateVehicleCountJob calculateVehicleCountJob2 = calculateVehicleCountJob;
				JobHandle val = IJobExtensions.Schedule<CalculateVehicleCountJob>(calculateVehicleCountJob2, __instance.GetMemberValue<JobHandle>("Dependency"));
				((JobHandle)(ref val)).Complete();
			}
			return false;
		}
	}
	public static class MyPluginInfo
	{
		public const string PLUGIN_GUID = "TransportPolicyAdjuster";

		public const string PLUGIN_NAME = "TransportPolicyAdjuster";

		public const string PLUGIN_VERSION = "1.2.0";
	}
}
[BurstCompile]
internal class __UnmanagedPostProcessorOutput__374239394
{
}
[DOTSCompilerGenerated]
internal class __JobReflectionRegistrationOutput__374239394
{
	public static void CreateJobReflectionData()
	{
		try
		{
			JobChunkExtensions.EarlyJobInit<ModifiedSystem.ModifyPolicyJob>();
			JobChunkExtensions.EarlyJobInit<RouteModifierInitializeSystem.InitializeRouteModifiersJob>();
			IJobExtensions.EarlyJobInit<VehicleCountSection.CalculateVehicleCountJob>();
		}
		catch (Exception ex)
		{
			EarlyInitHelpers.JobReflectionDataCreationFailed(ex);
		}
	}

	[RuntimeInitializeOnLoadMethod(/*Could not decode attribute arguments.*/)]
	public static void EarlyInit()
	{
		CreateJobReflectionData();
	}
}