private void UnloadPassengers(ushort vehicleID, ref Vehicle data, ushort currentStop, ushort nextStop) { if ((int)currentStop == 0) { return; } VehicleManager instance1 = Singleton <VehicleManager> .instance; NetManager instance2 = Singleton <NetManager> .instance; TransportManager instance3 = Singleton <TransportManager> .instance; Vector3 position = instance2.m_nodes.m_buffer[(int)currentStop].m_position; Vector3 targetPos = Vector3.zero; if ((int)nextStop != 0) { targetPos = instance2.m_nodes.m_buffer[(int)nextStop].m_position; } int serviceCounter = 0; int num1 = 0; ushort vehicleID1 = vehicleID; ushort bufferStatus = PassengerTrainAIMod.GetBufferStatus(vehicleID1, ref instance1.m_vehicles.m_buffer[(int)vehicleID1]); while ((int)vehicleID != 0) { if ((int)data.m_transportLine != 0) { BusAI.TransportArriveAtTarget(vehicleID, ref instance1.m_vehicles.m_buffer[(int)vehicleID], position, targetPos, ref serviceCounter, ref instance3.m_lines.m_buffer[(int)data.m_transportLine].m_passengers, (int)nextStop == 0); } else { BusAI.TransportArriveAtTarget(vehicleID, ref instance1.m_vehicles.m_buffer[(int)vehicleID], position, targetPos, ref serviceCounter, ref instance3.m_passengers[(int)this.m_transportInfo.m_transportType], (int)nextStop == 0); } vehicleID = instance1.m_vehicles.m_buffer[(int)vehicleID].m_trailingVehicle; if (++num1 > 16384) { CODebugBase <LogChannel> .Error(LogChannel.Core, "Invalid list detected!\n" + System.Environment.StackTrace); break; } } Singleton <StatisticsManager> .instance.Acquire <StatisticArray>(StatisticType.PassengerCount).Acquire <StatisticInt32>((int)this.m_transportInfo.m_transportType, 8).Add(serviceCounter); serviceCounter += (int)instance2.m_nodes.m_buffer[(int)currentStop].m_tempCounter; instance2.m_nodes.m_buffer[(int)currentStop].m_tempCounter = (ushort)Mathf.Min(serviceCounter, (int)ushort.MaxValue); ushort num2 = (ushort)((uint)bufferStatus - (uint)PassengerTrainAIMod.GetBufferStatus(vehicleID1, ref instance1.m_vehicles.m_buffer[(int)vehicleID1])); VehicleManagerMod.m_cachedVehicleData[(int)vehicleID1].LastStopGonePassengers = (int)num2; VehicleManagerMod.m_cachedVehicleData[(int)vehicleID1].CurrentStop = currentStop; NetManagerMod.m_cachedNodeData[(int)currentStop].PassengersOut += (int)num2; }
private void UnloadPassengers(ushort vehicleID, ref Vehicle data, ushort currentStop, ushort nextStop) { if (currentStop == 0) { return; } VehicleManager instance = Singleton <VehicleManager> .instance; NetManager instance2 = Singleton <NetManager> .instance; TransportManager instance3 = Singleton <TransportManager> .instance; Vector3 position = instance2.m_nodes.m_buffer [(int)currentStop].m_position; Vector3 targetPos = Vector3.zero; if (nextStop != 0) { targetPos = instance2.m_nodes.m_buffer [(int)nextStop].m_position; } int num = 0; int num2 = 0; while (vehicleID != 0) { if (data.m_transportLine != 0) { BusAI.TransportArriveAtTarget(vehicleID, ref instance.m_vehicles.m_buffer [(int)vehicleID], position, targetPos, ref num, ref instance3.m_lines.m_buffer [(int)data.m_transportLine].m_passengers, nextStop == 0); } else { BusAI.TransportArriveAtTarget(vehicleID, ref instance.m_vehicles.m_buffer [(int)vehicleID], position, targetPos, ref num, ref instance3.m_passengers [(int)this.m_transportInfo.m_transportType], nextStop == 0); } vehicleID = instance.m_vehicles.m_buffer [(int)vehicleID].m_trailingVehicle; if (++num2 > 65536) { CODebugBase <LogChannel> .Error(LogChannel.Core, "Invalid list detected!\n" + Environment.StackTrace); break; } } StatisticBase statisticBase = Singleton <StatisticsManager> .instance.Acquire <StatisticArray> (StatisticType.PassengerCount); statisticBase.Acquire <StatisticInt32> ((int)this.m_transportInfo.m_transportType, 8).Add(num); num += (int)instance2.m_nodes.m_buffer [(int)currentStop].m_tempCounter; instance2.m_nodes.m_buffer [(int)currentStop].m_tempCounter = (ushort)Mathf.Min(num, 65535); }
private void UnloadPassengers(ushort vehicleID, ref Vehicle data, ushort currentStop, ushort nextStop) { if ((int)currentStop == 0) { return; } VehicleManager instance1 = Singleton <VehicleManager> .instance; NetManager instance2 = Singleton <NetManager> .instance; TransportManager instance3 = Singleton <TransportManager> .instance; Vector3 position = instance2.m_nodes.m_buffer[(int)currentStop].m_position; Vector3 targetPos = Vector3.zero; if ((int)nextStop != 0) { targetPos = instance2.m_nodes.m_buffer[(int)nextStop].m_position; } int serviceCounter = 0; int num = 0; //begin mod (+): calculate passenger count before unloading passengers ushort vehicleID1 = vehicleID; GetBufferStatus(vehicleID1, ref instance1.m_vehicles.m_buffer[(int)vehicleID1], out string localeKey, out int bufferStatusBefore, out int max); //end mod while ((int)vehicleID != 0) { if ((int)data.m_transportLine != 0) { BusAI.TransportArriveAtTarget(vehicleID, ref instance1.m_vehicles.m_buffer[(int)vehicleID], position, targetPos, ref serviceCounter, ref instance3.m_lines.m_buffer[(int)data.m_transportLine].m_passengers, (int)nextStop == 0); } else { BusAI.TransportArriveAtTarget(vehicleID, ref instance1.m_vehicles.m_buffer[(int)vehicleID], position, targetPos, ref serviceCounter, ref instance3.m_passengers[(int)this.m_transportInfo.m_transportType], (int)nextStop == 0); } vehicleID = instance1.m_vehicles.m_buffer[(int)vehicleID].m_trailingVehicle; if (++num > VehicleManagerMod.MaxVehicleCount) { CODebugBase <LogChannel> .Error(LogChannel.Core, "Invalid list detected!\n" + System.Environment.StackTrace); break; } } Singleton <StatisticsManager> .instance.Acquire <StatisticArray>(StatisticType.PassengerCount) .Acquire <StatisticInt32>((int)this.m_transportInfo.m_transportType, 10) .Add(serviceCounter); serviceCounter += (int)instance2.m_nodes.m_buffer[(int)currentStop].m_tempCounter; instance2.m_nodes.m_buffer[(int)currentStop].m_tempCounter = (ushort)Mathf.Min(serviceCounter, (int)ushort.MaxValue); //begin mod (+): calculate passenger count after unloading passengers GetBufferStatus(vehicleID1, ref instance1.m_vehicles.m_buffer[(int)vehicleID1], out localeKey, out int bufferStatusAfter, out max); int diff = bufferStatusBefore - bufferStatusAfter; VehicleManagerMod.m_cachedVehicleData[(int)vehicleID1].LastStopGonePassengers = diff; VehicleManagerMod.m_cachedVehicleData[(int)vehicleID1].CurrentStop = currentStop; NetManagerMod.m_cachedNodeData[(int)currentStop].PassengersOut += diff; //end mod }