Beispiel #1
0
        public void CurveType(
            NodePosition startPosition1, RoadType startType1,
            NodePosition endPosition1, RoadType endType1,
            NodePosition startPosition2, RoadType startType2,
            NodePosition endPosition2, RoadType endType2,
            RoadTextureType expectedCurveType)
        {
            var start1 = new MapObject(NodePositions[startPosition1], 0, startType1, default);
            var end1   = new MapObject(NodePositions[endPosition1], 0, endType1, default);
            var start2 = new MapObject(NodePositions[startPosition2], 0, startType2, default);
            var end2   = new MapObject(NodePositions[endPosition2], 0, endType2, default);

            var template = new RoadTemplate("SideWalk3");

            var topology = new RoadTopology();

            topology.AddSegment(template, start1, end1);
            topology.AddSegment(template, start2, end2);

            topology.AlignOrientation();

            var curveNode       = topology.Nodes.Single(n => n.Edges.Count == 2);
            var actualCurveType = CurvedRoadSegment.ChooseCurveType(topology.Edges[0], topology.Edges[1], curveNode.Position);

            Assert.Equal(expectedCurveType, actualCurveType);
        }
        public static RoadTopology FromMapObjects(MapObject[] mapObjects)
        {
            var roadTopology = new RoadTopology();
            var templates    = new Dictionary <string, RoadTemplate>();

            for (var i = 0; i < mapObjects.Length; i++)
            {
                var mapObject = mapObjects[i];

                switch (mapObject.RoadType & RoadType.PrimaryType)
                {
                case RoadType.Start:
                case RoadType.End:
                    var roadEnd = mapObjects[++i];

                    // Some maps have roads with invalid start- or endpoints.
                    // We'll skip processing them altogether.
                    if (mapObject.TypeName == "" || roadEnd.TypeName == "")
                    {
                        continue;
                    }

                    if (!templates.TryGetValue(mapObject.TypeName, out var template))
                    {
                        template = new RoadTemplate(mapObject.TypeName);
                        templates.Add(mapObject.TypeName, template);
                    }

                    roadTopology.AddSegment(template, mapObject, roadEnd);
                    break;
                }
            }

            return(roadTopology);
        }
Beispiel #3
0
    public void ShowSubRoadBlockCombinationEffect(GameObject parentRoad)
    {
        RoadTemplate tempRoad = roadList[0].GetComponent <RoadTemplate>();

        if (null != tempRoad)
        {
            tempRoad.SetSubRoadCombinationEffect();
        }
        roadList.RemoveAt(0);
    }
Beispiel #4
0
    public void ShowSubRoadBlockBreakupEffect(GameObject parentRoad)
    {
        RoadTemplate tempRoad = parentRoad.GetComponent <RoadTemplate>();

        if (null != tempRoad)
        {
            tempRoad.SetSubRoadBreakupEffect();
            roadList.Add(parentRoad);
        }
    }
Beispiel #5
0
        public void DarkOldDirtFourGravel()
        {
            var gravel = new RoadTemplate("GravelRoad");
            var dirt   = new RoadTemplate("DirtRoad");
            var four   = new RoadTemplate("FourLane");
            var old    = new RoadTemplate("TwoLaneOld");
            var dark   = new RoadTemplate("TwoLaneDark");

            var templates = new[]
            {
                dark,
                old,
                four,
                dirt,
                gravel,
            };

            var roadTemplateList = new RoadTemplateList(templates);

            roadTemplateList.HandleRoadJoin(dark, old);

            var expectedOrder = new[]
            {
                gravel,
                dirt,
                four,
                old,
                dark,
            };

            Assert.Equal(expectedOrder, roadTemplateList);

            roadTemplateList.HandleRoadJoin(old, dirt);

            Assert.Equal(expectedOrder, roadTemplateList);

            roadTemplateList.HandleRoadJoin(dirt, four);

            expectedOrder = new[]
            {
                gravel,
                four,
                dirt,
                old,
                dark,
            };

            roadTemplateList.HandleRoadJoin(four, gravel);

            Assert.Equal(expectedOrder, roadTemplateList);

            roadTemplateList.HandleRoadJoin(gravel, dark);

            Assert.Equal(expectedOrder, roadTemplateList);
        }
Beispiel #6
0
        public RoadTopologyEdge(
            RoadTemplate template,
            RoadTopologyNode start,
            RoadType startType,
            RoadTopologyNode end,
            RoadType endType)
        {
            Template = template;

            Start     = start;
            StartType = startType;

            End     = end;
            EndType = endType;
        }
Beispiel #7
0
 public RoadNetwork(RoadTemplate template)
 {
     Template = template;
 }