Ejemplo n.º 1
0
        internal static void LoadRoadsFromFile()
        {
            Debug.Log("Loading roads from file...");

            XmlRoads _xmlRoads = XmlRoadHandler.LoadRoads();

            foreach (XmlRoad road in _xmlRoads.roads)
            {
                RoadContainer        _container = new RoadContainer();
                List <OSM.OSMWayTag> _tags      = new List <OSM.OSMWayTag>();

                _container.inGameNamePostfix = road.postfix;
                _container.inGameNamePrefix  = road.prefix;
                _container.linkedOption      = road.linkedOption;
                _container.roadType          = Enum.Parse(typeof(RoadContainer.Type), road.roadType) as RoadContainer.Type? ?? RoadContainer.Type.Unknown;
                _container.searchLimit       = Enum.Parse(typeof(RoadContainer.Limit), road.searchLimit) as RoadContainer.Limit? ?? RoadContainer.Limit.None;

                foreach (XmlOSMTag tag in road.tags)
                {
                    _tags.Add(new OSM.OSMWayTag()
                    {
                        k = tag.key, v = tag.value
                    });
                }

                _container.tags = _tags;

                Debug.Log("Added " + road.prefix + " " + road.postfix);

                roads.Add(_container);
            }
        }
Ejemplo n.º 2
0
        public void BicycleRoadTest()
        {
            var testRoads = new RoadContainer()
            {
                inGameNamePrefix = "Test Bicycle Road",
                roadType         = RoadContainer.Type.Road,
                searchLimit      = RoadContainer.Limit.Bicycle,
                tags             =
                {
                    new Mapper.OSM.OSMWayTag()
                    {
                        k = "test", v = "value"
                    }
                }
            };

            var testRoadExtensions = new List <KeyValuePair <string, RoadContainer.Limit> >()
            {
                new KeyValuePair <string, RoadContainer.Limit>("Test Bus", RoadContainer.Limit.Bus),
                new KeyValuePair <string, RoadContainer.Limit>("Test Bicycle", RoadContainer.Limit.Bicycle),
                new KeyValuePair <string, RoadContainer.Limit>("Test All Elevations", RoadContainer.Limit.ElevationsOnly),
                new KeyValuePair <string, RoadContainer.Limit>("Test Elevated Only", RoadContainer.Limit.Elevated),
                new KeyValuePair <string, RoadContainer.Limit>("Test Flat Only", RoadContainer.Limit.Ground)
            };

            var finalList = RoadManager.AddRoadExtensions(testRoads, testRoadExtensions);

            Assert.IsTrue(finalList.Count == 1);
            Assert.IsTrue(finalList[0].inGameNamePrefix == "Test Bicycle Road Test Bicycle");
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Adds an extension to the name of the base road
        /// based on the roadExtensions list
        /// </summary>
        /// <param name="baseRoad">The initial road to add extension names to</param>
        /// <param name="roadExtensions">A list of strings containing possible road name extensions</param>
        /// <returns>A list of new roads plus all extensions in the name</returns>
        public static List <RoadContainer> AddRoadExtensions(RoadContainer baseRoad, List <KeyValuePair <string, RoadContainer.Limit> > roadExtensions)
        {
            List <RoadContainer> returnRoads = new List <RoadContainer>();

            foreach (KeyValuePair <string, RoadContainer.Limit> roadExtension in roadExtensions)
            {
                if (baseRoad.searchLimit == RoadContainer.Limit.None || (baseRoad.searchLimit & roadExtension.Value) != RoadContainer.Limit.None)
                {
                    RoadContainer modifiedRoad = new RoadContainer {
                        inGameNamePrefix = baseRoad.inGameNamePrefix + " " + roadExtension.Key, roadType = baseRoad.roadType, inGameNamePostfix = baseRoad.inGameNamePostfix, searchLimit = baseRoad.searchLimit, tags = baseRoad.tags
                    };
                    returnRoads.Add(modifiedRoad);
                }
            }

            return(returnRoads);
        }