Esempio n. 1
0
 private void Start()
 {
     NavMap = GameObject.Find("NavMap").GetComponent <NavMapGen>();
     graph  = NavMap.Graph;
     UpdateCurrentTile();
 }
Esempio n. 2
0
    public void PathRoads()
    {
        AllRoadNodes = new List <RoadNode>();
        navMap       = GameObject.Find("NavMap").GetComponent <NavMapGen>();
        graph        = navMap.Graph;
        var cities = BoardManager.CityList.Select(x => x.GetComponent <CitadelTileMaster>());

        foreach (var c in cities)
        {
            var closeCities = cities.Where(x => x != c && c.TileRef.Coord.DistanceTo(x.TileRef.Coord) < MaxDistance);
            foreach (var n in closeCities)
            {
                var path = FindPathTo(c.TileRef.Coord, n.TileRef.Coord);
                for (int i = 0; i < path.Length; i++)
                {
                    var tile = BoardManager.FindTile(path[i].Coord);
                    if (!tile.hasRoad)
                    {
                        var road  = GameObject.Instantiate(RoadPrefab, tile.transform, false) as GameObject;
                        var rNode = road.GetComponent <RoadNode>();
                        rNode.Neighbours = new List <RoadNode>();
                        rNode.TileRef    = tile;

                        if (i > 0)
                        {
                            var lastRoad = FindRoadFromNode(path[i - 1]);
                            if (!lastRoad.Neighbours.Contains(rNode))
                            {
                                lastRoad.Neighbours.Add(rNode);
                            }
                            if (!rNode.Neighbours.Contains(lastRoad))
                            {
                                rNode.Neighbours.Add(lastRoad);
                            }
                        }

                        AllRoadNodes.Add(rNode);
                        tile.hasRoad = true;
                    }
                    else
                    {
                        var rNode = FindRoadFromNode(path[i]);
                        if (i > 0)
                        {
                            var lastRoad = FindRoadFromNode(path[i - 1]);
                            if (!lastRoad.Neighbours.Contains(rNode))
                            {
                                lastRoad.Neighbours.Add(rNode);
                            }
                            if (!rNode.Neighbours.Contains(lastRoad))
                            {
                                rNode.Neighbours.Add(lastRoad);
                            }
                        }
                    }
                }
            }
        }

        foreach (var r in AllRoadNodes)
        {
            r.ShowFragments();
        }

        this.GetComponent <MapGen>().AdvancePhase();
    }