public static string GetBuildingDetails(ushort buildingId, out ItemClass.Service serviceFound, out ItemClass.SubService subserviceFound, out string prefix, out NamingType namingType, ushort lineId = 0) { BuildingManager bm = Singleton <BuildingManager> .instance; Building b = bm.m_buildings.m_buffer[buildingId]; while (b.m_parentBuilding > 0) { LogUtils.DoLog("getBuildingName(): building id {0} - parent = {1}", buildingId, b.m_parentBuilding); buildingId = b.m_parentBuilding; b = bm.m_buildings.m_buffer[buildingId]; } InstanceID iid = default; iid.Building = buildingId; serviceFound = b.Info?.GetService() ?? default; subserviceFound = b.Info?.GetSubService() ?? default; TransportSystemDefinition tsd = TransportSystemDefinition.From(b.Info.GetAI()); if (tsd is null) { var data = TLMBaseConfigXML.CurrentContextConfig.GetAutoNameData(serviceFound); prefix = data?.NamingPrefix?.Trim(); namingType = NamingTypeExtensions.From(serviceFound, subserviceFound); } else { prefix = tsd.GetConfig().NamingPrefix?.TrimStart(); LogUtils.DoLog($"getBuildingName(): serviceFound {serviceFound} - subserviceFound = {subserviceFound} - tsd = {tsd} - prefix = {prefix}"); namingType = NamingTypeExtensions.From(tsd); } return(bm.GetBuildingName(buildingId, iid)); }
public static string GetStationName(ushort stopId, ushort lineId, ItemClass.SubService ss, out ItemClass.Service serviceFound, out ItemClass.SubService subserviceFound, out string prefix, out ushort buildingID, out NamingType resultNamingType, bool excludeCargo = false, bool useRestrictionForAreas = false, bool useRoadMainNameOnAddress = false) { if (lineId == 0) { buildingID = stopId; return(GetBuildingNameForStation(lineId, out serviceFound, out subserviceFound, out prefix, stopId, out resultNamingType)); } string savedName = GetStopName(stopId); var tsd = TransportSystemDefinition.From(lineId); if (savedName != null) { serviceFound = ItemClass.Service.PublicTransport; subserviceFound = Singleton <TransportManager> .instance.m_lines.m_buffer[lineId].Info.m_class.m_subService; prefix = tsd.GetConfig().NamingPrefix?.TrimStart(); buildingID = 0; resultNamingType = NamingTypeExtensions.From(tsd); return(savedName); } NetManager nm = Singleton <NetManager> .instance; NetNode nn = nm.m_nodes.m_buffer[stopId]; Vector3 location = nn.m_position; if (tsd.VehicleType == VehicleInfo.VehicleType.Car || tsd.VehicleType == VehicleInfo.VehicleType.Tram || tsd.VehicleType == VehicleInfo.VehicleType.Trolleybus) { List <ushort> nearStops = StopSearchUtils.FindNearStops(location, nn.Info.GetService(), true, 50f, out _, out _); foreach (ushort otherStop in nearStops) { if (otherStop != stopId) { savedName = GetStopName(otherStop); ; if (savedName != null) { ushort targetLineId = NetManager.instance.m_nodes.m_buffer[otherStop].m_transportLine; var tsd2 = TransportSystemDefinition.From(targetLineId); serviceFound = ItemClass.Service.PublicTransport; subserviceFound = Singleton <TransportManager> .instance.m_lines.m_buffer[targetLineId].Info.m_class.m_subService; prefix = tsd2.GetConfig().NamingPrefix?.TrimStart(); buildingID = 0; resultNamingType = NamingTypeExtensions.From(tsd2); return(savedName); } } } } buildingID = GetStationBuilding(stopId, ss, excludeCargo); if (buildingID > 0) { return(GetBuildingNameForStation(lineId, out serviceFound, out subserviceFound, out prefix, buildingID, out resultNamingType)); } prefix = ""; byte parkId = DistrictManager.instance.GetPark(location); if (parkId > 0) { var idx = DistrictManager.instance.m_parks.m_buffer[parkId].GetNamingClass(); var idxConfig = idx.GetConfig(); if (!useRestrictionForAreas || idxConfig.UseInAutoName) { prefix = idxConfig.NamingPrefix?.TrimStart(); serviceFound = 0; subserviceFound = 0; resultNamingType = idx.ToNamingType(); return(DistrictManager.instance.GetParkName(parkId)); } } int number = 0; if ((useRoadMainNameOnAddress ? TransportLinesManagerMod.Controller.ConnectorADR.GetStreetSuffix(location, location, out string streetName) : TransportLinesManagerMod.Controller.ConnectorADR.GetAddressStreetAndNumber(location, location, out number, out streetName)) && !streetName.IsNullOrWhiteSpace() && (!useRestrictionForAreas || TLMSpecialNamingClass.Address.GetConfig().UseInAutoName)) { prefix = TLMSpecialNamingClass.Address.GetConfig().NamingPrefix?.TrimStart(); serviceFound = ItemClass.Service.Road; subserviceFound = ItemClass.SubService.PublicTransportBus; resultNamingType = NamingType.ADDRESS; return(useRoadMainNameOnAddress ? streetName : streetName + ", " + number); }