static bool Prefix(out uint __state, VehicleInfo.VehicleType ___m_vehicleType, ushort nodeID, ref NetNode data) { __state = 0; if (nodeID == 0 || !___m_vehicleType.IsSharedStopTransport()) { return(true); } ushort segment = Singleton <NetManager> .instance.m_lanes.m_buffer[data.m_lane].m_segment; ushort lineID = Singleton <NetManager> .instance.m_nodes.m_buffer[nodeID].m_transportLine; TransportLine line = Singleton <TransportManager> .instance.m_lines.m_buffer[lineID]; __state = data.m_lane; NetLane.Flags flags = (NetLane.Flags)Singleton <NetManager> .instance.m_lanes.m_buffer[data.m_lane].m_flags; if (!Singleton <SharedStopsTool> .instance.sharedStopSegments.Any(s => s.m_segment == segment)) { return(true); } NetSegment segData = Singleton <NetManager> .instance.m_segments.m_buffer[segment]; Log.Debug($"RemoveLaneConn on segment {segment}, {segData}"); Singleton <SharedStopsTool> .instance.RemoveSharedStop(segment, lineID, data.m_lane); return(true); }
static bool Prefix(NetLane.Flags ___m_stopFlag, VehicleInfo.VehicleType ___m_vehicleType, ushort nodeID, ref NetNode data, uint laneID, byte offset) { if (nodeID == 0 || !___m_vehicleType.IsSharedStopTransport()) { return(true); } ushort segment = Singleton <NetManager> .instance.m_lanes.m_buffer[laneID].m_segment; ushort lineID = Singleton <NetManager> .instance.m_nodes.m_buffer[nodeID].m_transportLine; if (Singleton <NetManager> .instance.m_segments.m_buffer[segment].Info.m_netAI is RoadBridgeAI roadBridgeAI) { NetLane.Flags flags = (NetLane.Flags)Singleton <NetManager> .instance.m_lanes.m_buffer[laneID].m_flags; flags |= ___m_stopFlag; Singleton <NetManager> .instance.m_lanes.m_buffer[laneID].m_flags = (ushort)flags; roadBridgeAI.UpdateSegmentStopFlags(segment, ref Singleton <NetManager> .instance.m_segments.m_buffer[segment]); } Singleton <SharedStopsTool> .instance.AddSharedStop(segment, lineID, laneID); return(true); }