AIsOfCatan.Board.GetAllIntersections C# (CSharp) Method

GetAllIntersections() public method

public GetAllIntersections ( ) : AIsOfCatan.API.Intersection[]
return AIsOfCatan.API.Intersection[]
        public Intersection[] GetAllIntersections()
        {
            if(allIntersections == null){
                List<Intersection> result = new List<Intersection>(22);
                for (int r = 0; r < 7; r++)
                {
                    for (int c = 0; c < Board.GetRowLength(r); c++)
                    {
                        Intersection south = null;
                        Intersection southeast = null;

                        if (r % 2 == 0)
                        {
                            if(r + 1 < 7 && c + 1 < Board.GetRowLength(r + 1))
                                south = new Intersection(GetTerrainIndex(r, c), GetTerrainIndex(r + 1, c), GetTerrainIndex(r + 1, c + 1));
                            if (r + 1 < 7 && c + 1 < Board.GetRowLength(r))
                                southeast = new Intersection(GetTerrainIndex(r, c), GetTerrainIndex(r, c + 1), GetTerrainIndex(r + 1, c + 1));
                        }
                        else
                        {
                            if (r + 1 < 7 && c - 1 >= 0 && c < 6)
                                south = new Intersection(GetTerrainIndex(r, c), GetTerrainIndex(r + 1, c - 1), GetTerrainIndex(r + 1, c));
                            if (r + 1 < 7 && c < 6)
                                southeast = new Intersection(GetTerrainIndex(r, c), GetTerrainIndex(r, c + 1), GetTerrainIndex(r + 1, c));
                        }

                        if (south != null && (GetTile(south.FirstTile).Terrain != Terrain.Water || GetTile(south.SecondTile).Terrain != Terrain.Water))
                            result.Add(south);
                        if (southeast != null && (GetTile(southeast.FirstTile).Terrain != Terrain.Water || GetTile(southeast.SecondTile).Terrain != Terrain.Water))
                            result.Add(southeast);
                    }
                }
                allIntersections = result.ToArray();

            }
            return allIntersections.ToArray();
        }