Beispiel #1
0
        List <Vector2Int> SearchStationLink(MapDataConverter cvt, Vector2Int pos, Vector2Int me, BitArray dir)
        {
            var isRoad = cvt.Road.GetTile <RoadTileBase>(new Vector3Int(pos.x, pos.y, 0)) != null;
            var node   = cvt.Node.GetTile <MapTileBase>(new Vector3Int(pos.x, pos.y, 0));
            var isNode = node != null;

            if (isNode && pos != me)
            {
                return(new List <Vector2Int> ()
                {
                    pos
                });
            }

            bool CheckDir(int num)
            {
                return(dir.Length > num && dir.Get(num));
            }

            if (isRoad)
            {
                var list = new List <Vector2Int>();
                if (CheckDir(0))
                {
                    list.AddRange(SearchStationLink(cvt, pos + new Vector2Int(-1, 0), me, new BitArray(new [] { true, false, false, false })));
                }
                if (CheckDir(1))
                {
                    list.AddRange(SearchStationLink(cvt, pos + new Vector2Int(1, 0), me, new BitArray(new[] { false, true, false, false })));
                }
                if (CheckDir(2))
                {
                    list.AddRange(SearchStationLink(cvt, pos + new Vector2Int(0, -1), me, new BitArray(new[] { false, false, true, false })));
                }
                if (CheckDir(3))
                {
                    list.AddRange(SearchStationLink(cvt, pos + new Vector2Int(0, 1), me, new BitArray(new[] { false, false, false, true })));
                }
                return(list);
            }
            return(new List <Vector2Int>());
        }
Beispiel #2
0
 private MapModel LoadFromPrefab(MapDataConverter converter)
 {
     return(converter.GetMapModel());
 }