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>()); }
private MapModel LoadFromPrefab(MapDataConverter converter) { return(converter.GetMapModel()); }