Decompiled source of Cities2Mods ServiceVehicleAI v0.4.1
Cities2Mods.ServiceVehicleAI 0.4.1.dll
Decompiled 10 months ago
The result has been truncated due to the large size, download it to view full contents!
using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Logging; using Game; using Game.Buildings; using Game.City; using Game.Common; using Game.Economy; using Game.Events; using Game.Net; using Game.Notifications; using Game.Objects; using Game.Pathfind; using Game.Prefabs; using Game.Routes; using Game.Simulation; using Game.Tools; using Game.Vehicles; using HarmonyLib; 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.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = "")] [assembly: AssemblyCompany("CityPlayer")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("0.4.1.0")] [assembly: AssemblyInformationalVersion("0.4.1")] [assembly: AssemblyProduct("Cities2Mods.CityPlayerServiceVehicleAI")] [assembly: AssemblyTitle("Cities2Mods.CityPlayerServiceVehicleAI")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("0.4.1.0")] [module: UnverifiableCode] namespace Cities2Mods.CityPlayerServiceVehicleAI; [CompilerGenerated] public class GarbageTruckAISystem : GameSystemBase { private enum GarbageActionType { Collect, Unload, AddRequest } private struct GarbageAction { public Entity m_Vehicle; public Entity m_Target; public Entity m_Request; public GarbageActionType m_Type; public int m_Capacity; public int m_MaxAmount; } [BurstCompile] private struct GarbageTruckTickJob : IJobChunk { [ReadOnly] public ComponentLookup<CarLane> m_CarLaneData; [ReadOnly] public EntityTypeHandle m_EntityType; [ReadOnly] public ComponentTypeHandle<Owner> m_OwnerType; [ReadOnly] public ComponentTypeHandle<Unspawned> m_UnspawnedType; public ComponentTypeHandle<Moving> m_MovingType; [ReadOnly] public ComponentTypeHandle<PrefabRef> m_PrefabRefType; [ReadOnly] public ComponentTypeHandle<PathInformation> m_PathInformationType; public ComponentTypeHandle<GarbageTruck> m_GarbageTruckType; public ComponentTypeHandle<Car> m_CarType; public ComponentTypeHandle<CarCurrentLane> m_CurrentLaneType; public ComponentTypeHandle<Target> m_TargetType; public ComponentTypeHandle<PathOwner> m_PathOwnerType; public BufferTypeHandle<CarNavigationLane> m_CarNavigationLaneType; public BufferTypeHandle<ServiceDispatch> m_ServiceDispatchType; [ReadOnly] public ComponentLookup<Owner> m_OwnerData; [ReadOnly] public ComponentLookup<PathInformation> m_PathInformationData; [ReadOnly] public ComponentLookup<Quantity> m_QuantityData; [ReadOnly] public ComponentLookup<SlaveLane> m_SlaveLaneData; [ReadOnly] public ComponentLookup<EdgeLane> m_EdgeLaneData; [ReadOnly] public ComponentLookup<PedestrianLane> m_PedestrianLaneData; [ReadOnly] public ComponentLookup<Curve> m_CurveData; [ReadOnly] public ComponentLookup<CarData> m_PrefabCarData; [ReadOnly] public ComponentLookup<GarbageTruckData> m_PrefabGarbageTruckData; [ReadOnly] public ComponentLookup<PrefabRef> m_PrefabRefData; [ReadOnly] public ComponentLookup<SpawnableBuildingData> m_PrefabSpawnableBuildingData; [ReadOnly] public ComponentLookup<ZoneData> m_PrefabZoneData; [ReadOnly] public ComponentLookup<GarbageCollectionRequest> m_GarbageCollectionRequestData; [ReadOnly] public ComponentLookup<GarbageProducer> m_GarbageProducerData; [ReadOnly] public ComponentLookup<GarbageFacility> m_GarbageFacilityData; [ReadOnly] public ComponentLookup<Moving> m_MovingData; [ReadOnly] public BufferLookup<SubObject> m_SubObjects; [ReadOnly] public BufferLookup<ConnectedBuilding> m_ConnectedBuildings; [ReadOnly] public BufferLookup<SubLane> m_SubLanes; [NativeDisableParallelForRestriction] public BufferLookup<PathElement> m_PathElements; [ReadOnly] public uint m_SimulationFrameIndex; [ReadOnly] public EntityArchetype m_GarbageCollectionRequestArchetype; [ReadOnly] public EntityArchetype m_HandleRequestArchetype; [ReadOnly] public GarbageParameterData m_GarbageParameters; public ParallelWriter m_CommandBuffer; public ParallelWriter<SetupQueueItem> m_PathfindQueue; public ParallelWriter<GarbageAction> m_ActionQueue; public TimeData m_TimeData; public float m_NormalizedTime; public int timeType; [ReadOnly] public ComponentLookup<Transform> m_TransformData; public void Execute(in ArchetypeChunk chunk, int unfilteredChunkIndex, bool useEnabledMask, in v128 chunkEnabledMask) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: 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_0019: 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_0026: 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_0033: 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_0049: Unknown result type (might be due to invalid IL or missing references) //IL_004e: 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_0065: 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_0078: 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_008f: 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_00b0: 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_00bb: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: 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_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00d6: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: 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_00f7: Unknown result type (might be due to invalid IL or missing references) //IL_00fd: Unknown result type (might be due to invalid IL or missing references) //IL_0102: Unknown result type (might be due to invalid IL or missing references) //IL_0108: Unknown result type (might be due to invalid IL or missing references) //IL_010d: Unknown result type (might be due to invalid IL or missing references) //IL_0113: Unknown result type (might be due to invalid IL or missing references) //IL_0118: Unknown result type (might be due to invalid IL or missing references) //IL_011e: 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_0126: 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_012d: Unknown result type (might be due to invalid IL or missing references) //IL_0139: Unknown result type (might be due to invalid IL or missing references) //IL_013b: Unknown result type (might be due to invalid IL or missing references) //IL_013d: Unknown result type (might be due to invalid IL or missing references) //IL_013f: 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_0143: Unknown result type (might be due to invalid IL or missing references) //IL_0158: 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_016e: 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_0184: Unknown result type (might be due to invalid IL or missing references) NativeArray<Entity> nativeArray = ((ArchetypeChunk)(ref chunk)).GetNativeArray(m_EntityType); NativeArray<Owner> nativeArray2 = ((ArchetypeChunk)(ref chunk)).GetNativeArray<Owner>(ref m_OwnerType); NativeArray<PrefabRef> nativeArray3 = ((ArchetypeChunk)(ref chunk)).GetNativeArray<PrefabRef>(ref m_PrefabRefType); NativeArray<PathInformation> nativeArray4 = ((ArchetypeChunk)(ref chunk)).GetNativeArray<PathInformation>(ref m_PathInformationType); NativeArray<CarCurrentLane> nativeArray5 = ((ArchetypeChunk)(ref chunk)).GetNativeArray<CarCurrentLane>(ref m_CurrentLaneType); NativeArray<GarbageTruck> nativeArray6 = ((ArchetypeChunk)(ref chunk)).GetNativeArray<GarbageTruck>(ref m_GarbageTruckType); NativeArray<Car> nativeArray7 = ((ArchetypeChunk)(ref chunk)).GetNativeArray<Car>(ref m_CarType); NativeArray<Target> nativeArray8 = ((ArchetypeChunk)(ref chunk)).GetNativeArray<Target>(ref m_TargetType); NativeArray<PathOwner> nativeArray9 = ((ArchetypeChunk)(ref chunk)).GetNativeArray<PathOwner>(ref m_PathOwnerType); BufferAccessor<CarNavigationLane> bufferAccessor = ((ArchetypeChunk)(ref chunk)).GetBufferAccessor<CarNavigationLane>(ref m_CarNavigationLaneType); BufferAccessor<ServiceDispatch> bufferAccessor2 = ((ArchetypeChunk)(ref chunk)).GetBufferAccessor<ServiceDispatch>(ref m_ServiceDispatchType); bool flag = ((ArchetypeChunk)(ref chunk)).Has<Unspawned>(ref m_UnspawnedType); for (int i = 0; i < nativeArray.Length; i++) { Entity val = nativeArray[i]; Owner owner = nativeArray2[i]; PrefabRef prefabRef = nativeArray3[i]; PathInformation pathInformation = nativeArray4[i]; GarbageTruck garbageTruck = nativeArray6[i]; Car car = nativeArray7[i]; CarCurrentLane currentLane = nativeArray5[i]; PathOwner pathOwner = nativeArray9[i]; Target target = nativeArray8[i]; DynamicBuffer<CarNavigationLane> navigationLanes = bufferAccessor[i]; DynamicBuffer<ServiceDispatch> serviceDispatches = bufferAccessor2[i]; VehicleUtils.CheckUnspawned(unfilteredChunkIndex, val, currentLane, flag, m_CommandBuffer); Tick(unfilteredChunkIndex, val, owner, prefabRef, pathInformation, navigationLanes, serviceDispatches, ref garbageTruck, ref car, ref currentLane, ref pathOwner, ref target); nativeArray6[i] = garbageTruck; nativeArray7[i] = car; nativeArray5[i] = currentLane; nativeArray9[i] = pathOwner; nativeArray8[i] = target; } } private void Tick(int jobIndex, Entity vehicleEntity, Owner owner, PrefabRef prefabRef, PathInformation pathInformation, DynamicBuffer<CarNavigationLane> navigationLanes, DynamicBuffer<ServiceDispatch> serviceDispatches, ref GarbageTruck garbageTruck, ref Car car, ref CarCurrentLane currentLane, ref PathOwner pathOwner, ref Target target) { //IL_0006: 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_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_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_001f: 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_0054: 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_0038: 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_00c7: Unknown result type (might be due to invalid IL or missing references) //IL_00cd: 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_006a: 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_012b: 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_00d1: 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_008b: 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_0096: 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_00ac: 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_0177: Unknown result type (might be due to invalid IL or missing references) //IL_0178: 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_012f: Unknown result type (might be due to invalid IL or missing references) //IL_00ed: 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_00f3: Unknown result type (might be due to invalid IL or missing references) //IL_00fd: Unknown result type (might be due to invalid IL or missing references) //IL_0102: Unknown result type (might be due to invalid IL or missing references) //IL_0107: Unknown result type (might be due to invalid IL or missing references) //IL_0113: 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_01e1: 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_01ca: Unknown result type (might be due to invalid IL or missing references) //IL_01cc: Unknown result type (might be due to invalid IL or missing references) //IL_0191: Unknown result type (might be due to invalid IL or missing references) //IL_0196: 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_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_01ab: Unknown result type (might be due to invalid IL or missing references) //IL_01b7: 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_0148: Unknown result type (might be due to invalid IL or missing references) //IL_014d: Unknown result type (might be due to invalid IL or missing references) //IL_014e: Unknown result type (might be due to invalid IL or missing references) //IL_0158: Unknown result type (might be due to invalid IL or missing references) //IL_015d: 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_016e: 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) //IL_01fd: Unknown result type (might be due to invalid IL or missing references) //IL_01ef: Unknown result type (might be due to invalid IL or missing references) //IL_0216: Unknown result type (might be due to invalid IL or missing references) //IL_0217: Unknown result type (might be due to invalid IL or missing references) //IL_0218: Unknown result type (might be due to invalid IL or missing references) //IL_0219: Unknown result type (might be due to invalid IL or missing references) //IL_020b: Unknown result type (might be due to invalid IL or missing references) //IL_0211: Unknown result type (might be due to invalid IL or missing references) //IL_0257: Unknown result type (might be due to invalid IL or missing references) //IL_022f: 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_0238: 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_02e2: Unknown result type (might be due to invalid IL or missing references) //IL_02e3: Unknown result type (might be due to invalid IL or missing references) //IL_02ec: 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_026b: Unknown result type (might be due to invalid IL or missing references) //IL_02f8: Unknown result type (might be due to invalid IL or missing references) //IL_02fe: 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_029c: Unknown result type (might be due to invalid IL or missing references) //IL_02a9: Unknown result type (might be due to invalid IL or missing references) //IL_02aa: Unknown result type (might be due to invalid IL or missing references) //IL_02b7: Unknown result type (might be due to invalid IL or missing references) //IL_02b8: 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_0270: Unknown result type (might be due to invalid IL or missing references) //IL_0271: 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_0273: Unknown result type (might be due to invalid IL or missing references) //IL_0347: Unknown result type (might be due to invalid IL or missing references) //IL_0303: Unknown result type (might be due to invalid IL or missing references) //IL_0304: Unknown result type (might be due to invalid IL or missing references) //IL_030b: Unknown result type (might be due to invalid IL or missing references) //IL_031c: Unknown result type (might be due to invalid IL or missing references) //IL_02ce: 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_0289: Unknown result type (might be due to invalid IL or missing references) //IL_028c: 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_0351: Unknown result type (might be due to invalid IL or missing references) //IL_0357: Unknown result type (might be due to invalid IL or missing references) //IL_0330: Unknown result type (might be due to invalid IL or missing references) //IL_0331: Unknown result type (might be due to invalid IL or missing references) //IL_0326: Unknown result type (might be due to invalid IL or missing references) //IL_032c: Unknown result type (might be due to invalid IL or missing references) //IL_03b3: Unknown result type (might be due to invalid IL or missing references) //IL_03b4: Unknown result type (might be due to invalid IL or missing references) //IL_035b: Unknown result type (might be due to invalid IL or missing references) //IL_035c: Unknown result type (might be due to invalid IL or missing references) //IL_0369: Unknown result type (might be due to invalid IL or missing references) //IL_036f: Unknown result type (might be due to invalid IL or missing references) //IL_0374: Unknown result type (might be due to invalid IL or missing references) //IL_0375: Unknown result type (might be due to invalid IL or missing references) //IL_0377: Unknown result type (might be due to invalid IL or missing references) //IL_0395: Unknown result type (might be due to invalid IL or missing references) //IL_039c: Unknown result type (might be due to invalid IL or missing references) //IL_03a1: Unknown result type (might be due to invalid IL or missing references) GarbageTruckData val = m_PrefabGarbageTruckData[prefabRef.m_Prefab]; Moving val2 = m_MovingData[vehicleEntity]; if (VehicleUtils.WaypointReached(currentLane)) { ((ParallelWriter)(ref m_CommandBuffer)).AddComponent<Deleted>(jobIndex, vehicleEntity, default(Deleted)); return; } if (garbageTruck.m_Garbage + garbageTruck.m_EstimatedGarbage >= val.m_GarbageCapacity) { ref GarbageTruckFlags state = ref garbageTruck.m_State; state = (GarbageTruckFlags)((uint)state | 0x10u); if (math.length(val2.m_Velocity) > 25f) { ref float3 velocity = ref val2.m_Velocity; velocity -= val2.m_Velocity * 0.05f; ((ParallelWriter)(ref m_CommandBuffer)).SetComponent<Moving>(jobIndex, vehicleEntity, val2); } } else { ref GarbageTruckFlags state2 = ref garbageTruck.m_State; state2 = (GarbageTruckFlags)((uint)state2 & 0xFFFFFFEFu); if ((garbageTruck.m_State & 1) != 0) { if (math.length(val2.m_Velocity) > 35f) { ref float3 velocity2 = ref val2.m_Velocity; velocity2 -= val2.m_Velocity * 0.05f; ((ParallelWriter)(ref m_CommandBuffer)).SetComponent<Moving>(jobIndex, vehicleEntity, val2); } } else if ((car.m_Flags & 0x200) != 0) { if (math.length(val2.m_Velocity) > 6f) { ref float3 velocity3 = ref val2.m_Velocity; velocity3 -= val2.m_Velocity * 0.05f; ((ParallelWriter)(ref m_CommandBuffer)).SetComponent<Moving>(jobIndex, vehicleEntity, val2); } } else if (math.length(val2.m_Velocity) > 30f) { ref float3 velocity4 = ref val2.m_Velocity; velocity4 -= val2.m_Velocity * 0.05f; ((ParallelWriter)(ref m_CommandBuffer)).SetComponent<Moving>(jobIndex, vehicleEntity, val2); } } if (VehicleUtils.ResetUpdatedPath(ref pathOwner)) { ResetPath(jobIndex, vehicleEntity, pathInformation, serviceDispatches, ref garbageTruck, ref car, ref currentLane); } if (!m_PrefabRefData.HasComponent(target.m_Target) || VehicleUtils.PathfindFailed(pathOwner)) { if (VehicleUtils.IsStuck(pathOwner) || (garbageTruck.m_State & 1) != 0) { if (UnloadGarbage(jobIndex, vehicleEntity, val, owner.m_Owner, ref garbageTruck, instant: true)) { ((ParallelWriter)(ref m_CommandBuffer)).AddComponent<Deleted>(jobIndex, vehicleEntity, default(Deleted)); } return; } ReturnToDepot(owner, serviceDispatches, ref garbageTruck, ref car, ref pathOwner, ref target); } else if (VehicleUtils.PathEndReached(currentLane)) { if ((garbageTruck.m_State & 1) != 0) { if (UnloadGarbage(jobIndex, vehicleEntity, val, owner.m_Owner, ref garbageTruck, instant: false)) { ((ParallelWriter)(ref m_CommandBuffer)).AddComponent<Deleted>(jobIndex, vehicleEntity, default(Deleted)); } return; } TryCollectGarbage(jobIndex, vehicleEntity, val, ref garbageTruck, ref car, ref target); CheckServiceDispatches(vehicleEntity, serviceDispatches, ref garbageTruck, ref pathOwner); if (!SelectNextDispatch(jobIndex, vehicleEntity, navigationLanes, serviceDispatches, ref garbageTruck, ref car, ref currentLane, ref pathOwner, ref target)) { ReturnToDepot(owner, serviceDispatches, ref garbageTruck, ref car, ref pathOwner, ref target); } } else { TryCollectGarbage(jobIndex, vehicleEntity, val, ref garbageTruck, ref car, ref currentLane, target.m_Target); } if ((garbageTruck.m_State & 1) == 0) { TryCollectGarbage(jobIndex, vehicleEntity, val, ref garbageTruck, ref car, ref currentLane, Entity.Null); if (garbageTruck.m_Garbage >= val.m_GarbageCapacity || (garbageTruck.m_State & 8) != 0) { ReturnToDepot(owner, serviceDispatches, ref garbageTruck, ref car, ref pathOwner, ref target); } } if (garbageTruck.m_Garbage < val.m_GarbageCapacity && (garbageTruck.m_State & 8) == 0) { CheckServiceDispatches(vehicleEntity, serviceDispatches, ref garbageTruck, ref pathOwner); if ((garbageTruck.m_State & 1) != 0) { SelectNextDispatch(jobIndex, vehicleEntity, navigationLanes, serviceDispatches, ref garbageTruck, ref car, ref currentLane, ref pathOwner, ref target); } if (garbageTruck.m_RequestCount <= 1 && (garbageTruck.m_State & 0x10) == 0) { RequestTargetIfNeeded(jobIndex, vehicleEntity, ref garbageTruck); } } else { serviceDispatches.Clear(); } FindPathIfNeeded(vehicleEntity, prefabRef, ref currentLane, ref pathOwner, ref target); } private void FindPathIfNeeded(Entity vehicleEntity, PrefabRef prefabRefData, ref CarCurrentLane currentLaneData, ref PathOwner pathOwnerData, ref Target target) { //IL_0002: 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_0018: 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_0022: 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_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0033: 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_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0049: 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_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_0084: Unknown result type (might be due to invalid IL or missing references) //IL_0087: 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_0098: 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_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: 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_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00bb: 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_00cc: 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_00d6: 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_00db: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: 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_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00e8: Unknown result type (might be due to invalid IL or missing references) //IL_00ed: Unknown result type (might be due to invalid IL or missing references) if (VehicleUtils.RequireNewPath(pathOwnerData)) { CarData val = m_PrefabCarData[prefabRefData.m_Prefab]; PathfindParameters val2 = default(PathfindParameters); val2.m_MaxSpeed = float2.op_Implicit(val.m_MaxSpeed); val2.m_WalkSpeed = float2.op_Implicit(5.555556f); val2.m_Weights = new PathfindWeights(1f, 1f, 1f, 1f); val2.m_Methods = (PathMethod)2; val2.m_IgnoredFlags = (EdgeFlags)15872; PathfindParameters val3 = val2; SetupQueueTarget val4 = default(SetupQueueTarget); val4.m_Type = (SetupTargetType)0; val4.m_Methods = (PathMethod)2; val4.m_RoadTypes = (RoadTypes)1; SetupQueueTarget val5 = val4; val4 = default(SetupQueueTarget); val4.m_Type = (SetupTargetType)0; val4.m_Methods = (PathMethod)2; val4.m_RoadTypes = (RoadTypes)1; val4.m_Entity = target.m_Target; SetupQueueTarget val6 = val4; SetupQueueItem val7 = default(SetupQueueItem); ((SetupQueueItem)(ref val7))..ctor(vehicleEntity, val3, val5, val6); VehicleUtils.SetupPathfind(ref currentLaneData, ref pathOwnerData, m_PathfindQueue, val7); } } private void CheckServiceDispatches(Entity vehicleEntity, DynamicBuffer<ServiceDispatch> serviceDispatches, ref GarbageTruck garbageTruck, ref PathOwner pathOwner) { //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_001c: 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_0037: 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_0041: 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_0078: 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_008a: 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_006b: 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_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) //IL_00dc: 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_0190: Unknown result type (might be due to invalid IL or missing references) //IL_0191: 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_00f8: Unknown result type (might be due to invalid IL or missing references) //IL_00fd: Unknown result type (might be due to invalid IL or missing references) //IL_01b3: 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_01c7: Unknown result type (might be due to invalid IL or missing references) //IL_0159: Unknown result type (might be due to invalid IL or missing references) //IL_015b: Unknown result type (might be due to invalid IL or missing references) //IL_0108: 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_0171: 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_017b: Unknown result type (might be due to invalid IL or missing references) //IL_011f: 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_0126: 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_012d: 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_013a: 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_0146: Unknown result type (might be due to invalid IL or missing references) //IL_0147: Unknown result type (might be due to invalid IL or missing references) if (serviceDispatches.Length <= garbageTruck.m_RequestCount) { return; } int num = -1; Entity val = Entity.Null; PathElement val2 = default(PathElement); bool flag = false; int num2 = 0; if (garbageTruck.m_RequestCount >= 1 && (garbageTruck.m_State & 1) == 0) { DynamicBuffer<PathElement> val3 = m_PathElements[vehicleEntity]; num2 = 1; if (pathOwner.m_ElementIndex < val3.Length) { val2 = val3[val3.Length - 1]; flag = true; } } DynamicBuffer<PathElement> val4 = default(DynamicBuffer<PathElement>); for (int i = num2; i < garbageTruck.m_RequestCount; i++) { Entity request = serviceDispatches[i].m_Request; if (m_PathElements.TryGetBuffer(request, ref val4) && val4.Length != 0) { val2 = val4[val4.Length - 1]; flag = true; } } DynamicBuffer<PathElement> val6 = default(DynamicBuffer<PathElement>); for (int j = garbageTruck.m_RequestCount; j < serviceDispatches.Length; j++) { Entity request2 = serviceDispatches[j].m_Request; if (!m_GarbageCollectionRequestData.HasComponent(request2)) { continue; } GarbageCollectionRequest val5 = m_GarbageCollectionRequestData[request2]; if (flag && m_PathElements.TryGetBuffer(request2, ref val6) && val6.Length != 0) { PathElement val7 = val6[0]; if (val7.m_Target != val2.m_Target || val7.m_TargetDelta.x != val2.m_TargetDelta.y) { continue; } } if (m_PrefabRefData.HasComponent(val5.m_Target) && val5.m_Priority > num) { num = val5.m_Priority; val = request2; } } if (val != Entity.Null) { int requestCount = garbageTruck.m_RequestCount; garbageTruck.m_RequestCount = requestCount + 1; serviceDispatches[requestCount] = new ServiceDispatch(val); garbageTruck.m_EstimatedGarbage += PreAddCollectionRequests(val, ref garbageTruck); } if (serviceDispatches.Length > garbageTruck.m_RequestCount) { serviceDispatches.RemoveRange(garbageTruck.m_RequestCount, serviceDispatches.Length - garbageTruck.m_RequestCount); } } private int PreAddCollectionRequests(Entity request, ref GarbageTruck garbageTruck) { //IL_0008: 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_001f: 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_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0032: 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_003c: 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_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_0064: 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_006b: 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_004d: 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_0075: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_007c: 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_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) int num = 0; if (m_PathElements.HasBuffer(request)) { DynamicBuffer<PathElement> val = m_PathElements[request]; Entity val2 = Entity.Null; for (int i = 0; i < val.Length; i++) { PathElement val3 = val[i]; if (!m_EdgeLaneData.HasComponent(val3.m_Target)) { val2 = Entity.Null; continue; } Owner val4 = m_OwnerData[val3.m_Target]; if (!(val4.m_Owner == val2)) { val2 = val4.m_Owner; if (HasSidewalk(val4.m_Owner)) { num += AddCollectionRequests(val4.m_Owner, request, ref garbageTruck); } } } } return num; } private bool HasSidewalk(Entity owner) { //IL_0006: 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_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_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) if (m_SubLanes.HasBuffer(owner)) { DynamicBuffer<SubLane> val = m_SubLanes[owner]; for (int i = 0; i < val.Length; i++) { Entity subLane = val[i].m_SubLane; if (m_PedestrianLaneData.HasComponent(subLane)) { return true; } } } return false; } private void RequestTargetIfNeeded(int jobIndex, Entity entity, ref GarbageTruck garbageTruck) { //IL_0007: 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_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_0048: 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_005b: 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_005f: 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_006c: 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_0080: Unknown result type (might be due to invalid IL or missing references) if (!m_GarbageCollectionRequestData.HasComponent(garbageTruck.m_TargetRequest)) { uint num = math.max(512u, 16u); if ((m_SimulationFrameIndex & (num - 1)) == 2) { Entity val = ((ParallelWriter)(ref m_CommandBuffer)).CreateEntity(jobIndex, m_GarbageCollectionRequestArchetype); ((ParallelWriter)(ref m_CommandBuffer)).SetComponent<ServiceRequest>(jobIndex, val, new ServiceRequest(true)); ((ParallelWriter)(ref m_CommandBuffer)).SetComponent<GarbageCollectionRequest>(jobIndex, val, new GarbageCollectionRequest(entity, 1, (GarbageCollectionRequestFlags)(((garbageTruck.m_State & 2) != 0) ? 1 : 0))); ((ParallelWriter)(ref m_CommandBuffer)).SetComponent<RequestGroup>(jobIndex, val, new RequestGroup(32u)); } } } private bool SelectNextDispatch(int jobIndex, Entity vehicleEntity, DynamicBuffer<CarNavigationLane> navigationLanes, DynamicBuffer<ServiceDispatch> serviceDispatches, ref GarbageTruck garbageTruck, ref Car car, ref CarCurrentLane currentLane, ref PathOwner pathOwner, ref Target target) { //IL_0002: 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_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_007b: 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_006a: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_0074: 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_00ad: 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) //IL_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_00bb: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: 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_0116: 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_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_00f7: Unknown result type (might be due to invalid IL or missing references) //IL_00fa: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: 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_02ce: Unknown result type (might be due to invalid IL or missing references) //IL_0127: 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_012d: Unknown result type (might be due to invalid IL or missing references) //IL_0140: 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_0146: Unknown result type (might be due to invalid IL or missing references) //IL_0148: 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_0168: 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_0178: Unknown result type (might be due to invalid IL or missing references) //IL_017a: 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_0182: 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_01b1: 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_01be: Unknown result type (might be due to invalid IL or missing references) //IL_01c0: Unknown result type (might be due to invalid IL or missing references) //IL_01d2: Unknown result type (might be due to invalid IL or missing references) //IL_01d4: Unknown result type (might be due to invalid IL or missing references) //IL_01d9: Unknown result type (might be due to invalid IL or missing references) //IL_01de: Unknown result type (might be due to invalid IL or missing references) //IL_01e3: 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_02ba: Unknown result type (might be due to invalid IL or missing references) //IL_02bb: Unknown result type (might be due to invalid IL or missing references) //IL_02c2: Unknown result type (might be due to invalid IL or missing references) //IL_0221: Unknown result type (might be due to invalid IL or missing references) //IL_0242: Unknown result type (might be due to invalid IL or missing references) //IL_0247: 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_0257: Unknown result type (might be due to invalid IL or missing references) //IL_025c: Unknown result type (might be due to invalid IL or missing references) if ((garbageTruck.m_State & 1) == 0 && garbageTruck.m_RequestCount > 0 && serviceDispatches.Length > 0) { serviceDispatches.RemoveAt(0); garbageTruck.m_RequestCount--; } int num2 = default(int); NativeArray<PathElement> val7 = default(NativeArray<PathElement>); while (garbageTruck.m_RequestCount > 0 && serviceDispatches.Length > 0) { Entity request = serviceDispatches[0].m_Request; Entity val = Entity.Null; if (m_GarbageCollectionRequestData.HasComponent(request)) { val = m_GarbageCollectionRequestData[request].m_Target; } if (m_PrefabRefData.HasComponent(val)) { ref GarbageTruckFlags state = ref garbageTruck.m_State; state = (GarbageTruckFlags)((uint)state & 0xFFFFFFFEu); ref CarFlags flags = ref car.m_Flags; flags = (CarFlags)((uint)flags | 0x20u); Entity val2 = ((ParallelWriter)(ref m_CommandBuffer)).CreateEntity(jobIndex, m_HandleRequestArchetype); ((ParallelWriter)(ref m_CommandBuffer)).SetComponent<HandleRequest>(jobIndex, val2, new HandleRequest(request, vehicleEntity, false, true)); if (m_GarbageCollectionRequestData.HasComponent(garbageTruck.m_TargetRequest)) { val2 = ((ParallelWriter)(ref m_CommandBuffer)).CreateEntity(jobIndex, m_HandleRequestArchetype); ((ParallelWriter)(ref m_CommandBuffer)).SetComponent<HandleRequest>(jobIndex, val2, new HandleRequest(garbageTruck.m_TargetRequest, Entity.Null, true, false)); } if (m_PathElements.HasBuffer(request)) { DynamicBuffer<PathElement> val3 = m_PathElements[request]; if (val3.Length != 0) { DynamicBuffer<PathElement> val4 = m_PathElements[vehicleEntity]; PathUtils.TrimPath(val4, ref pathOwner); float num = garbageTruck.m_PathElementTime * (float)val4.Length + m_PathInformationData[request].m_Duration; if (PathUtils.TryAppendPath(ref currentLane, navigationLanes, val4, val3, m_SlaveLaneData, m_OwnerData, m_SubLanes, ref num2)) { int num3 = val4.Length - num2; int num4 = 0; for (int i = 0; i < num3; i++) { PathElement val5 = val4[i]; if (m_PedestrianLaneData.HasComponent(val5.m_Target)) { Owner val6 = m_OwnerData[val5.m_Target]; num4 += AddCollectionRequests(val6.m_Owner, request, ref garbageTruck); } } if (num2 > 0) { val7..ctor(num2, (Allocator)2, (NativeArrayOptions)1); for (int j = 0; j < num2; j++) { val7[j] = val4[num3 + j]; } val4.RemoveRange(num3, num2); Entity lastOwner = Entity.Null; for (int k = 0; k < val7.Length; k++) { num4 += AddPathElement(val4, val7[k], request, ref lastOwner, ref garbageTruck); } val7.Dispose(); } if (garbageTruck.m_RequestCount == 1) { garbageTruck.m_EstimatedGarbage = num4; } ref CarFlags flags2 = ref car.m_Flags; flags2 = (CarFlags)((uint)flags2 | 2u); garbageTruck.m_PathElementTime = num / (float)math.max(1, val4.Length); target.m_Target = val; VehicleUtils.ClearEndOfPath(ref currentLane, navigationLanes); return true; } } } VehicleUtils.SetTarget(ref pathOwner, ref target, val); return true; } serviceDispatches.RemoveAt(0); garbageTruck.m_EstimatedGarbage -= garbageTruck.m_EstimatedGarbage / garbageTruck.m_RequestCount; garbageTruck.m_RequestCount--; } return false; } private void ReturnToDepot(Owner ownerData, DynamicBuffer<ServiceDispatch> serviceDispatches, ref GarbageTruck garbageTruck, ref Car car, ref PathOwner pathOwnerData, ref Target targetData) { //IL_0034: 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) serviceDispatches.Clear(); garbageTruck.m_RequestCount = 0; garbageTruck.m_EstimatedGarbage = 0; ref GarbageTruckFlags state = ref garbageTruck.m_State; state = (GarbageTruckFlags)((uint)state | 1u); ref CarFlags flags = ref car.m_Flags; flags = (CarFlags)((uint)flags & 0xFFFFFDF7u); VehicleUtils.SetTarget(ref pathOwnerData, ref targetData, ownerData.m_Owner); } private void ResetPath(int jobIndex, Entity vehicleEntity, PathInformation pathInformation, DynamicBuffer<ServiceDispatch> serviceDispatches, ref GarbageTruck garbageTruck, ref Car carData, ref CarCurrentLane currentLane) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: 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_0011: 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_0029: 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_010a: 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_005c: 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_007f: 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_0095: 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_00a4: 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) DynamicBuffer<PathElement> val = m_PathElements[vehicleEntity]; PathUtils.ResetPath(ref currentLane, val, m_SlaveLaneData, m_OwnerData, m_SubLanes); if ((garbageTruck.m_State & 1) == 0 && garbageTruck.m_RequestCount > 0 && serviceDispatches.Length > 0) { Entity request = serviceDispatches[0].m_Request; if (m_GarbageCollectionRequestData.HasComponent(request)) { NativeArray<PathElement> val2 = default(NativeArray<PathElement>); val2..ctor(val.Length, (Allocator)2, (NativeArrayOptions)1); val2.CopyFrom(val.AsNativeArray()); val.Clear(); Entity lastOwner = Entity.Null; int estimatedGarbage = 0; for (int i = 0; i < val2.Length; i++) { estimatedGarbage = AddPathElement(val, val2[i], request, ref lastOwner, ref garbageTruck); } if (garbageTruck.m_RequestCount == 1) { garbageTruck.m_EstimatedGarbage = estimatedGarbage; } val2.Dispose(); } ref CarFlags flags = ref carData.m_Flags; flags = (CarFlags)((uint)flags | 2u); } else { ref CarFlags flags2 = ref carData.m_Flags; flags2 = (CarFlags)((uint)flags2 & 0xFFFFFFFDu); } ref CarFlags flags3 = ref carData.m_Flags; flags3 = (CarFlags)((uint)flags3 | 0x40u); garbageTruck.m_PathElementTime = pathInformation.m_Duration / (float)math.max(1, val.Length); } private int AddPathElement(DynamicBuffer<PathElement> path, PathElement pathElement, Entity request, ref Entity lastOwner, ref GarbageTruck garbageTruck) { //IL_0008: 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_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0033: 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_003e: 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_0046: 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_0020: 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_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0060: 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_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) int result = 0; if (!m_EdgeLaneData.HasComponent(pathElement.m_Target)) { path.Add(pathElement); lastOwner = Entity.Null; return result; } Owner val = m_OwnerData[pathElement.m_Target]; if (val.m_Owner == lastOwner) { path.Add(pathElement); return result; } lastOwner = val.m_Owner; path.Add(pathElement); return result; } private int AddCollectionRequests(Entity edgeEntity, Entity request, ref GarbageTruck garbageTruck) { //IL_0008: 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_001f: 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_0031: 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_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0049: 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_0087: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_008f: 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_0053: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) int num = 0; if (m_ConnectedBuildings.HasBuffer(edgeEntity)) { DynamicBuffer<ConnectedBuilding> val = m_ConnectedBuildings[edgeEntity]; GarbageProducer val2 = default(GarbageProducer); for (int i = 0; i < val.Length; i++) { Entity building = val[i].m_Building; if (m_GarbageProducerData.TryGetComponent(building, ref val2) && ((garbageTruck.m_State & 2) == 0 || IsIndustrial(m_PrefabRefData[building].m_Prefab))) { num += val2.m_Garbage; m_ActionQueue.Enqueue(new GarbageAction { m_Type = GarbageActionType.AddRequest, m_Request = request, m_Target = building }); } } } return num; } private void TryCollectGarbage(int jobIndex, Entity vehicleEntity, GarbageTruckData prefabGarbageTruckData, ref GarbageTruck garbageTruck, ref Car car, ref CarCurrentLane currentLaneData, Entity ignoreBuilding) { //IL_0007: 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_0012: 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) if (garbageTruck.m_Garbage < prefabGarbageTruckData.m_GarbageCapacity) { TryCollectGarbageFromLane(jobIndex, vehicleEntity, prefabGarbageTruckData, ref garbageTruck, ref car, currentLaneData.m_Lane, ignoreBuilding); } } private void TryCollectGarbageFromLane(int jobIndex, Entity vehicleEntity, GarbageTruckData prefabGarbageTruckData, ref GarbageTruck garbageTruck, ref Car car, Entity laneEntity, Entity ignoreBuilding) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0018: 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_002d: 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_0049: Unknown result type (might be due to invalid IL or missing references) //IL_004e: 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_0052: 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_007d: Unknown result type (might be due to invalid IL or missing references) //IL_007f: 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_005e: 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) Owner val = default(Owner); DynamicBuffer<ConnectedBuilding> val2 = default(DynamicBuffer<ConnectedBuilding>); if (m_EdgeLaneData.HasComponent(laneEntity) && m_OwnerData.TryGetComponent(laneEntity, ref val) && m_ConnectedBuildings.TryGetBuffer(val.m_Owner, ref val2)) { bool flag = false; for (int i = 0; i < val2.Length; i++) { Entity building = val2[i].m_Building; if (building != ignoreBuilding) { TryCollectGarbageFromBuilding(jobIndex, vehicleEntity, prefabGarbageTruckData, ref garbageTruck, ref car, building); } if (IsCloseEnough(m_TransformData[vehicleEntity], m_TransformData[building], 30f)) { flag = true; } } if (flag) { ref CarFlags flags = ref car.m_Flags; flags = (CarFlags)((uint)flags | 0x208u); } } else { ref CarFlags flags2 = ref car.m_Flags; flags2 = (CarFlags)((uint)flags2 & 0xFFFFFDF7u); } } private void TryCollectGarbage(int jobIndex, Entity vehicleEntity, GarbageTruckData prefabGarbageTruckData, ref GarbageTruck garbageTruck, ref Car car, ref Target target) { //IL_0007: 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_0012: 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) if (garbageTruck.m_Garbage < prefabGarbageTruckData.m_GarbageCapacity) { TryCollectGarbageFromBuilding(jobIndex, vehicleEntity, prefabGarbageTruckData, ref garbageTruck, ref car, target.m_Target); } } private bool IsCloseEnough(Transform transform1, Transform transform2, float distance) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) return math.distance(transform1.m_Position, transform2.m_Position) <= distance; } private void TryCollectGarbageFromBuilding(int jobIndex, Entity vehicleEntity, GarbageTruckData prefabGarbageTruckData, ref GarbageTruck garbageTruck, ref Car car, Entity buildingEntity) { //IL_0006: 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_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0032: 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_0069: Unknown result type (might be due to invalid IL or missing references) //IL_0070: 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_0079: 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_003c: 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_009f: Unknown result type (might be due to invalid IL or missing references) GarbageProducer val = default(GarbageProducer); if (m_GarbageProducerData.TryGetComponent(buildingEntity, ref val) && val.m_Garbage > m_GarbageParameters.m_CollectionGarbageLimit) { if ((garbageTruck.m_State & 2) == 0 || IsIndustrial(m_PrefabRefData[buildingEntity].m_Prefab)) { m_ActionQueue.Enqueue(new GarbageAction { m_Type = GarbageActionType.Collect, m_Vehicle = vehicleEntity, m_Target = buildingEntity, m_Capacity = prefabGarbageTruckData.m_GarbageCapacity }); if (val.m_Garbage >= m_GarbageParameters.m_RequestGarbageLimit) { QuantityUpdated(jobIndex, buildingEntity); } ref CarFlags flags = ref car.m_Flags; flags = (CarFlags)((uint)flags | 0x208u); } } else { ref CarFlags flags2 = ref car.m_Flags; flags2 = (CarFlags)((uint)flags2 & 0xFFFFFDF7u); } } private void QuantityUpdated(int jobIndex, Entity buildingEntity, bool updateAll = false) { //IL_0006: 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_0021: 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_003f: 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_002d: 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) DynamicBuffer<SubObject> val = default(DynamicBuffer<SubObject>); if (!m_SubObjects.TryGetBuffer(buildingEntity, ref val)) { return; } for (int i = 0; i < val.Length; i++) { Entity subObject = val[i].m_SubObject; bool updateAll2 = false; if (updateAll || m_QuantityData.HasComponent(subObject)) { ((ParallelWriter)(ref m_CommandBuffer)).AddComponent<BatchesUpdated>(jobIndex, subObject, default(BatchesUpdated)); updateAll2 = true; } QuantityUpdated(jobIndex, subObject, updateAll2); } } private bool IsIndustrial(Entity prefab) { //IL_0006: 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_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_0021: 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_0034: 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_003a: 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_0045: Invalid comparison between Unknown and I4 if (m_PrefabSpawnableBuildingData.HasComponent(prefab)) { SpawnableBuildingData val = m_PrefabSpawnableBuildingData[prefab]; if (m_PrefabZoneData.HasComponent(val.m_ZonePrefab)) { return (int)m_PrefabZoneData[val.m_ZonePrefab].m_AreaType == 3; } } return false; } private bool UnloadGarbage(int jobIndex, Entity vehicleEntity, GarbageTruckData prefabGarbageTruckData, Entity facilityEntity, ref GarbageTruck garbageTruck, bool instant) { //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0091: 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_009a: 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_0032: 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_003b: 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) if (garbageTruck.m_Garbage > 0 && m_GarbageFacilityData.HasComponent(facilityEntity)) { m_ActionQueue.Enqueue(new GarbageAction { m_Type = GarbageActionType.Unload, m_Vehicle = vehicleEntity, m_Target = facilityEntity, m_MaxAmount = math.select(Mathf.RoundToInt((float)(prefabGarbageTruckData.m_UnloadRate * 16) / 60f), garbageTruck.m_Garbage, instant) }); return false; } if ((garbageTruck.m_State & 4) != 0) { ref GarbageTruckFlags state = ref garbageTruck.m_State; state = (GarbageTruckFlags)((uint)state & 0xFFFFFFFBu); ((ParallelWriter)(ref m_CommandBuffer)).AddComponent<EffectsUpdated>(jobIndex, vehicleEntity, default(EffectsUpdated)); } return true; } void IJobChunk.Execute(in ArchetypeChunk chunk, int unfilteredChunkIndex, bool useEnabledMask, in v128 chunkEnabledMask) { Execute(in chunk, unfilteredChunkIndex, useEnabledMask, in chunkEnabledMask); } } [BurstCompile] private struct GarbageActionJob : IJob { public ComponentLookup<GarbageTruck> m_GarbageTruckData; public ComponentLookup<GarbageProducer> m_GarbageProducerData; public BufferLookup<Resources> m_EconomyResources; public ComponentLookup<BuildingCondition> m_BuildingConditions; public BufferLookup<Efficiency> m_Efficiencies; [ReadOnly] public ComponentLookup<Owner> m_Owners; [ReadOnly] public ComponentLookup<OutsideConnection> m_OutsideConnections; [ReadOnly] public GarbageParameterData m_GarbageParameters; public float m_GarbageFee; public float m_GarbageEfficiencyPenalty; public NativeQueue<GarbageAction> m_ActionQueue; public NativeQueue<FeeEvent> m_FeeQueue; public IconCommandBuffer m_IconCommandBuffer; public EntityCommandBuffer m_CommandBuffer; public void Execute() { //IL_0060: 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_006a: 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_0077: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_008b: 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_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_026a: 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_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_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_0049: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: 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_00d3: 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_0317: Unknown result type (might be due to invalid IL or missing references) //IL_0319: Unknown result type (might be due to invalid IL or missing references) //IL_031f: 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_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_0140: Unknown result type (might be due to invalid IL or missing references) //IL_0145: Unknown result type (might be due to invalid IL or missing references) //IL_0164: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_0336: Unknown result type (might be due to invalid IL or missing references) //IL_033d: Unknown result type (might be due to invalid IL or missing references) //IL_0343: Unknown result type (might be due to invalid IL or missing references) //IL_02d0: Unknown result type (might be due to invalid IL or missing references) //IL_02d2: Unknown result type (might be due to invalid IL or missing references) //IL_02d8: 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_02b6: Unknown result type (might be due to invalid IL or missing references) //IL_02bb: Unknown result type (might be due to invalid IL or missing references) //IL_02c8: 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_017a: 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_0184: Unknown result type (might be due to invalid IL or missing references) //IL_019a: Unknown result type (might be due to invalid IL or missing references) //IL_019f: 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_00f7: Unknown result type (might be due to invalid IL or missing references) //IL_0102: Unknown result type (might be due to invalid IL or missing references) //IL_0109: Unknown result type (might be due to invalid IL or missing references) //IL_010f: Unknown result type (might be due to invalid IL or missing references) //IL_0309: Unknown result type (might be due to invalid IL or missing references) //IL_030e: Unknown result type (might be due to invalid IL or missing references) //IL_02ee: Unknown result type (might be due to invalid IL or missing references) //IL_02f5: Unknown result type (might be due to invalid IL or missing references) //IL_02fb: 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_0235: Unknown result type (might be due to invalid IL or missing references) //IL_0247: 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) //IL_01d0: Unknown result type (might be due to invalid IL or missing references) //IL_01e4: 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) GarbageAction garbageAction = default(GarbageAction); DynamicBuffer<Efficiency> val7 = default(DynamicBuffer<Efficiency>); while (m_ActionQueue.TryDequeue(ref garbageAction)) { switch (garbageAction.m_Type) { case GarbageActionType.AddRequest: { GarbageProducer val3 = m_GarbageProducerData[garbageAction.m_Target]; val3.m_CollectionRequest = garbageAction.m_Request; m_GarbageProducerData[garbageAction.m_Target] = val3; break; } case GarbageActionType.Collect: { GarbageTruck val4 = m_GarbageTruckData[garbageAction.m_Vehicle]; GarbageProducer val5 = m_GarbageProducerData[garbageAction.m_Target]; int num = math.min(garbageAction.m_Capacity - val4.m_Garbage, val5.m_Garbage); if (num <= 0) { break; } val4.m_Garbage += num; val4.m_EstimatedGarbage = math.max(0, val4.m_EstimatedGarbage - num); val5.m_Garbage -= num; if ((val5.m_Flags & 1) != 0 && val5.m_Garbage <= m_GarbageParameters.m_WarningGarbageLimit) { ((IconCommandBuffer)(ref m_IconCommandBuffer)).Remove(garbageAction.m_Target, m_GarbageParameters.m_GarbageNotificationPrefab, default(Entity), (IconFlags)0); ref GarbageProducerFlags flags = ref val5.m_Flags; flags = (GarbageProducerFlags)((uint)flags & 0xFEu); } m_GarbageTruckData[garbageAction.m_Vehicle] = val4; m_GarbageProducerData[garbageAction.m_Target] = val5; int num2 = Mathf.RoundToInt(m_GarbageFee * (float)num); if (m_BuildingConditions.HasComponent(garbageAction.m_Target)) { BuildingCondition val6 = m_BuildingConditions[garbageAction.m_Target]; val6.m_Condition -= num2; m_BuildingConditions[garbageAction.m_Target] = val6; if (m_Owners.HasComponent(garbageAction.m_Vehicle) && !m_OutsideConnections.HasComponent(m_Owners[garbageAction.m_Vehicle].m_Owner)) { m_FeeQueue.Enqueue(new FeeEvent { m_Amount = num, m_Cost = num2, m_Outside = false, m_Resource = (PlayerResource)5 }); } } if (m_Efficiencies.TryGetBuffer(garbageAction.m_Target, ref val7)) { float garbageEfficiencyFactor = GarbageAccumulationSystem.GetGarbageEfficiencyFactor(val5.m_Garbage, m_GarbageParameters, m_GarbageEfficiencyPenalty); BuildingUtils.SetEfficiencyFactor(val7, (EfficiencyFactor)14, garbageEfficiencyFactor); } break; } case GarbageActionType.Unload: { GarbageTruck val = m_GarbageTruckData[garbageAction.m_Vehicle]; int garbage = val.m_Garbage; garbage = math.min(garbage, garbageAction.m_MaxAmount); if (garbage > 0) { val.m_Garbage -= garbage; if (m_EconomyResources.HasBuffer(garbageAction.m_Target)) { DynamicBuffer<Resources> val2 = m_EconomyResources[garbageAction.m_Target]; EconomyUtils.AddResources((Resource)549755813888L, garbage, val2); } if ((val.m_State & 4) == 0) { ref GarbageTruckFlags state = ref val.m_State; state = (GarbageTruckFlags)((uint)state | 4u); ((EntityCommandBuffer)(ref m_CommandBuffer)).AddComponent<EffectsUpdated>(garbageAction.m_Vehicle, default(EffectsUpdated)); } m_GarbageTruckData[garbageAction.m_Vehicle] = val; } else if ((val.m_State & 4) != 0) { ref GarbageTruckFlags state2 = ref val.m_State; state2 = (GarbageTruckFlags)((uint)state2 & 0xFFFFFFFBu); ((EntityCommandBuffer)(ref m_CommandBuffer)).AddComponent<EffectsUpdated>(garbageAction.m_Vehicle, default(EffectsUpdated)); } break; } } } } } private struct TypeHandle { [ReadOnly] public EntityTypeHandle __Unity_Entities_Entity_TypeHandle; [ReadOnly] public ComponentTypeHandle<Owner> __Game_Common_Owner_RO_ComponentTypeHandle; [ReadOnly] public ComponentTypeHandle<Unspawned> __Game_Objects_Unspawned_RO_ComponentTypeHandle; public ComponentTypeHandle<Moving> __Game_Objects_Moving_RW_ComponentTypeHandle; [ReadOnly] public ComponentTypeHandle<PrefabRef> __Game_Prefabs_PrefabRef_RO_ComponentTypeHandle; [ReadOnly] public ComponentTypeHandle<PathInformation> __Game_Pathfind_PathInformation_RO_ComponentTypeHandle; public ComponentTypeHandle<GarbageTruck> __Game_Vehicles_GarbageTruck_RW_ComponentTypeHandle; public ComponentTypeHandle<Car> __Game_Vehicles_Car_RW_ComponentTypeHandle; public ComponentTypeHandle<CarCurrentLane> __Game_Vehicles_CarCurrentLane_RW_ComponentTypeHandle; public ComponentTypeHandle<Target> __Game_Common_Target_RW_ComponentTypeHandle; public ComponentTypeHandle<PathOwner> __Game_Pathfind_PathOwner_RW_ComponentTypeHandle; public BufferTypeHandle<CarNavigationLane> __Game_Vehicles_CarNavigationLane_RW_BufferTypeHandle; public BufferTypeHandle<ServiceDispatch> __Game_Simulation_ServiceDispatch_RW_BufferTypeHandle; [ReadOnly] public ComponentLookup<Owner> __Game_Common_Owner_RO_ComponentLookup; [ReadOnly] public ComponentLookup<PathInformation> __Game_Pathfind_PathInformation_RO_ComponentLookup; [ReadOnly] public ComponentLookup<Quantity> __Game_Objects_Quantity_RO_ComponentLookup; [ReadOnly] public ComponentLookup<EdgeLane> __Game_Net_EdgeLane_RO_ComponentLookup; [ReadOnly] public ComponentLookup<PedestrianLane> __Game_Net_PedestrianLane_RO_ComponentLookup; [ReadOnly] public ComponentLookup<Curve> __Game_Net_Curve_RO_ComponentLookup; [ReadOnly] public ComponentLookup<SlaveLane> __Game_Net_SlaveLane_RO_ComponentLookup; [ReadOnly] public ComponentLookup<CarData> __Game_Prefabs_CarData_RO_ComponentLookup; [ReadOnly] public ComponentLookup<GarbageTruckData> __Game_Prefabs_GarbageTruckData_RO_ComponentLookup; [ReadOnly] public ComponentLookup<PrefabRef> __Game_Prefabs_PrefabRef_RO_ComponentLookup; [ReadOnly] public ComponentLookup<SpawnableBuildingData> __Game_Prefabs_SpawnableBuildingData_RO_ComponentLookup; [ReadOnly] public ComponentLookup<ZoneData> __Game_Prefabs_ZoneData_RO_ComponentLookup; [ReadOnly] public ComponentLookup<GarbageCollectionRequest> __Game_Simulation_GarbageCollectionRequest_RO_ComponentLookup; [ReadOnly] public ComponentLookup<GarbageProducer> __Game_Buildings_GarbageProducer_RO_ComponentLookup; [ReadOnly] public ComponentLookup<GarbageFacility> __Game_Buildings_GarbageFacility_RO_ComponentLookup; [ReadOnly] public BufferLookup<ConnectedBuilding> __Game_Buildings_ConnectedBuilding_RO_BufferLookup; [ReadOnly] public BufferLookup<SubObject> __Game_Objects_SubObject_RO_BufferLookup; [ReadOnly] public BufferLookup<SubLane> __Game_Net_SubLane_RO_BufferLookup; public BufferLookup<PathElement> __Game_Pathfind_PathElement_RW_BufferLookup; public ComponentLookup<GarbageTruck> __Game_Vehicles_GarbageTruck_RW_ComponentLookup; public ComponentLookup<GarbageProducer> __Game_Buildings_GarbageProducer_RW_ComponentLookup; public BufferLookup<Resources> __Game_Economy_Resources_RW_BufferLookup; public ComponentLookup<BuildingCondition> __Game_Buildings_BuildingCondition_RW_ComponentLookup; public BufferLookup<Efficiency> __Game_Buildings_Efficiency_RW_BufferLookup; [ReadOnly] public ComponentLookup<OutsideConnection> __Game_Objects_OutsideConnection_RO_ComponentLookup; [ReadOnly] public ComponentLookup<Moving> __Game_Objects_Moving_RO_ComponentLookup; [ReadOnly] public ComponentLookup<Transform> __Game_Objects_Transform_RO_ComponentLookup; [ReadOnly] public ComponentLookup<CarLane> __Game_Net_CarLane_RO_ComponentLookup; [MethodImpl(MethodImplOptions.AggressiveInlining)] public void __AssignHandles(ref SystemState state) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: 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_001c: 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_0029: 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_0036: 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_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_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_006a: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Unknown result type (might be due to invalid IL or missing references) //IL_0084: 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_0091: 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_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: 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_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: 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_00ca: 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) //IL_00df: 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_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00f1: 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_0106: Unknown result type (might be due to invalid IL or missing references) //IL_010b: Unknown result type (might be due to invalid IL or missing references) //IL_0113: Unknown result type (might be due to invalid IL or missing references) //IL_0118: Unknown result type (might be due to invalid IL or missing references) //IL_0120: 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) //IL_012d: Unknown result type (might be due to invalid IL or missing references) //IL_0132: Unknown result type (might be due to invalid IL or missing references) //IL_013a: Unknown result type (might be due to invalid IL or missing references) //IL_013f: Unknown result type (might be due to invalid IL or missing references) //IL_0147: 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_0154: Unknown result type (might be due to invalid IL or missing references) //IL_0159: 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_0166: 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_0173: Unknown result type (might be due to invalid IL or missing references) //IL_017b: 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_0188: Unknown result type (might be due to invalid IL or missing references) //IL_018d: Unknown result type (might be due to invalid IL or missing references) //IL_0195: Unknown result type (might be due to invalid IL or missing references) //IL_019a: 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_01a7: 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_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_01c9: Unknown result type (might be due to invalid IL or missing references) //IL_01ce: Unknown result type (might be due to invalid IL or missing references) //IL_01d6: 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_01e3: 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_01f0: Unknown result type (might be due to invalid IL or missing references) //IL_01f5: Unknown result type (might be due to invalid IL or missing references) //IL_01fd: Unknown result type (might be due to invalid IL or missing references) //IL_0202: Unknown result type (might be due to invalid IL or missing references) //IL_020a: 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) __Unity_Entities_Entity_TypeHandle = ((SystemState)(ref state)).GetEntityTypeHandle(); __Game_Net_CarLane_RO_ComponentLookup = ((SystemState)(ref state)).GetComponentLookup<CarLane>(true); __Game_Common_Owner_RO_ComponentTypeHandle = ((SystemState)(ref state)).GetComponentTypeHandle<Owner>(true); __Game_Objects_Unspawned_RO_ComponentTypeHandle = ((SystemState)(ref state)).GetComponentTypeHandle<Unspawned>(true); __Game_Objects_Moving_RW_ComponentTypeHandle = ((SystemState)(ref state)).GetComponentTypeHandle<Moving>(false); __Game_Prefabs_PrefabRef_RO_ComponentTypeHandle = ((SystemState)(ref state)).GetComponentTypeHandle<PrefabRef>(true); __Game_Pathfind_PathInformation_RO_ComponentTypeHandle = ((SystemState)(ref state)).GetComponentTypeHandle<PathInformation>(true); __Game_Vehicles_GarbageTruck_RW_ComponentTypeHandle = ((SystemState)(ref state)).GetComponentTypeHandle<GarbageTruck>(false); __Game_Vehicles_Car_RW_ComponentTypeHandle = ((SystemState)(ref state)).GetComponentTypeHandle<Car>(false); __Game_Vehicles_CarCurrentLane_RW_ComponentTypeHandle = ((SystemState)(ref state)).GetComponentTypeHandle<CarCurrentLane>(false); __Game_Common_Target_RW_ComponentTypeHandle = ((SystemState)(ref state)).GetComponentTypeHandle<Target>(false); __Game_Pathfind_PathOwner_RW_ComponentTypeHandle = ((SystemState)(ref state)).GetComponentTypeHandle<PathOwner>(false); __Game_Vehicles_CarNavigationLane_RW_BufferTypeHandle = ((SystemState)(ref state)).GetBufferTypeHandle<CarNavigationLane>(false); __Game_Simulation_ServiceDispatch_RW_BufferTypeHandle = ((SystemState)(ref state)).GetBufferTypeHandle<ServiceDispatch>(false); __Game_Common_Owner_RO_ComponentLookup = ((SystemState)(ref state)).GetComponentLookup<Owner>(true); __Game_Pathfind_PathInformation_RO_ComponentLookup = ((SystemState)(ref state)).GetComponentLookup<PathInformation>(true); __Game_Objects_Quantity_RO_ComponentLookup = ((SystemState)(ref state)).GetComponentLookup<Quantity>(true); __Game_Net_EdgeLane_RO_ComponentLookup = ((SystemState)(ref state)).GetComponentLookup<EdgeLane>(true); __Game_Net_PedestrianLane_RO_ComponentLookup = ((SystemState)(ref state)).GetComponentLookup<PedestrianLane>(true); __Game_Net_Curve_RO_ComponentLookup = ((SystemState)(ref state)).GetComponentLookup<Curve>(true); __Game_Net_SlaveLane_RO_ComponentLookup = ((SystemState)(ref state)).GetComponentLookup<SlaveLane>(true); __Game_Prefabs_CarData_RO_ComponentLookup = ((SystemState)(ref state)).GetComponentLookup<CarData>(true); __Game_Prefabs_GarbageTruckData_RO_ComponentLookup = ((SystemState)(ref state)).GetComponentLookup<GarbageTruckData>(true); __Game_Prefabs_PrefabRef_RO_ComponentLookup = ((SystemState)(ref state)).GetComponentLookup<PrefabRef>(true); __Game_Prefabs_SpawnableBuildingData_RO_ComponentLookup = ((SystemState)(ref state)).GetComponentLookup<SpawnableBuildingData>(true); __Game_Prefabs_ZoneData_RO_ComponentLookup = ((SystemState)(ref state)).GetComponentLookup<ZoneData>(true); __Game_Simulation_GarbageCollectionRequest_RO_ComponentLookup = ((SystemState)(ref state)).GetComponentLookup<GarbageCollectionRequest>(true); __Game_Buildings_GarbageProducer_RO_ComponentLookup = ((SystemState)(ref state)).GetComponentLookup<GarbageProducer>(true); __Game_Buildings_GarbageFacility_RO_ComponentLookup = ((SystemState)(ref state)).GetComponentLookup<GarbageFacility>(true); __Game_Buildings_ConnectedBuilding_RO_BufferLookup = ((SystemState)(ref state)).GetBufferLookup<ConnectedBuilding>(true); __Game_Objects_SubObject_RO_BufferLookup = ((SystemState)(ref state)).GetBufferLookup<SubObject>(true); __Game_Objects_Moving_RO_ComponentLookup = ((SystemState)(ref state)).GetComponentLookup<Moving>(true); __Game_Net_SubLane_RO_BufferLookup = ((SystemState)(ref state)).GetBufferLookup<SubLane>(true); __Game_Pathfind_PathElement_RW_BufferLookup = ((SystemState)(ref state)).GetBufferLookup<PathElement>(false); __Game_Vehicles_GarbageTruck_RW_ComponentLookup = ((SystemState)(ref state)).GetComponentLookup<GarbageTruck>(false); __Game_Buildings_GarbageProducer_RW_ComponentLookup = ((SystemState)(ref state)).GetComponentLookup<GarbageProducer>(false); __Game_Economy_Resources_RW_BufferLookup = ((SystemState)(ref state)).GetBufferLookup<Resources>(false); __Game_Buildings_BuildingCondition_RW_ComponentLookup = ((SystemState)(ref state)).GetComponentLookup<BuildingCondition>(false); __Game_Buildings_Efficiency_RW_BufferLookup = ((SystemState)(ref state)).GetBufferLookup<Efficiency>(false); __Game_Objects_OutsideConnection_RO_ComponentLookup = ((SystemState)(ref state)).GetComponentLookup<OutsideConnection>(true); __Game_Objects_Transform_RO_ComponentLookup = ((SystemState)(ref state)).GetComponentLookup<Transform>(true); } } private EndFrameBarrier m_EndFrameBarrier; private PathfindSetupSystem m_PathfindSetupSystem; private IconCommandSystem m_IconCommandSystem; private ServiceFeeSystem m_ServiceFeeSystem; private SimulationSystem m_SimulationSystem; private EntityQuery m_VehicleQuery; private EntityArchetype m_GarbageCollectionRequestArchetype; private EntityArchetype m_HandleRequestArchetype; private TypeHandle __TypeHandle; private EntityQuery __query_647374862_0; private EntityQuery __query_647374862_1; private EntityQuery __query_647374862_2; private EntityQuery m_TimeDataQuery; private TimeSystem m_TimeSystem; public override int GetUpdateInterval(SystemUpdatePhase phase) { return 16; } public override int GetUpdateOffset(SystemUpdatePhase phase) { return 2; } [Preserve] protected override void OnCreate() { //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_008f: 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_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_00a7: 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_00b3: 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_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: 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_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: 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) //IL_00ee: Unknown result type (might be due to invalid IL or missing references) //IL_00f3: Unknown result type (might be due to invalid IL or missing references) //IL_00fa: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: Unknown result type (might be due to invalid IL or missing references) //IL_010a: Unknown result type (might be due to inval