Пример #1
0
        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));
        }
Пример #2
0
        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);
            }