/// <summary>
        /// gets the Union type from the number of roads
        /// </summary>
        /// <param name="numberOfRoads">The number of roads</param>
        /// <returns>The union type for the number of roads</returns>
        public static RoadNetworkNode.UNION_TYPE SetRoadUnionTypeFromRoadCount(int numberOfRoads)
        {
            RoadNetworkNode.UNION_TYPE Union = RoadNetworkNode.UNION_TYPE.NONE;
            switch (numberOfRoads)
            {
            case 1:
                Union = RoadNetworkNode.UNION_TYPE.END;
                break;

            case 2:
                Union = RoadNetworkNode.UNION_TYPE.CORNER;
                break;

            case 3:
                Union = RoadNetworkNode.UNION_TYPE.JUNCTION;
                break;

            case 4:
                Union = RoadNetworkNode.UNION_TYPE.CROSSROADS;
                break;

            case 5:
                Union = RoadNetworkNode.UNION_TYPE.FIVEROADS;
                break;

            case 6:
                Union = RoadNetworkNode.UNION_TYPE.SIXROADS;
                break;
            }

            return(Union);
        }
Example #2
0
        /// <summary>
        /// Compress the road array - remove any null roads
        /// </summary>
        public void CompressRoads()
        {
            for (int i = 0; i < Roads.Count - 1; i++)
            {
                if (Roads[i] == null)
                {
                    if (Roads[i + 1] != null)
                    {
                        Roads[i]     = Roads[i + 1];
                        Roads[i + 1] = null;
                        Modified     = true;
                    }
                }
            }

            int numberOfRoads = 0;

            for (int i = 0; i < Roads.Count; i++)
            {
                if (Roads[i] != null)
                {
                    numberOfRoads++;
                }
            }

            int roadsFromUnion = UnionHelper.GetRoadCount(Union);

            if (roadsFromUnion == numberOfRoads)
            {
                return;
            }

            Union = UnionHelper.SetRoadUnionTypeFromRoadCount(numberOfRoads);
            UpdateLinksnumber(numberOfRoads);
        }
        /// <summary>
        /// Get the number of roads for this Union type
        /// </summary>
        /// <returns>The number of roads</returns>
        public static int GetRoadCount(RoadNetworkNode.UNION_TYPE ut)
        {
            int numberOfRoads = 0;

            if (ut == RoadNetworkNode.UNION_TYPE.END)
            {
                numberOfRoads = 1;
            }

            if (ut == RoadNetworkNode.UNION_TYPE.CORNER)
            {
                numberOfRoads = 2;
            }

            if (ut == RoadNetworkNode.UNION_TYPE.JUNCTION)
            {
                numberOfRoads = 3;
            }

            if (ut == RoadNetworkNode.UNION_TYPE.CROSSROADS)
            {
                numberOfRoads = 4;
            }

            if (ut == RoadNetworkNode.UNION_TYPE.FIVEROADS)
            {
                numberOfRoads = 5;
            }

            if (ut == RoadNetworkNode.UNION_TYPE.SIXROADS)
            {
                numberOfRoads = 6;
            }

            return(numberOfRoads);
        }