private List <int[]> GetSurroundingAvailableCoords(LevelTemplate levelTemplate, int[] coords) { List <int[]> surroundingAvailableCoords = new List <int[]>(); int[][] surroundingCoords = GetSurroundingCoords(coords); foreach (int[] surroundingCoord in surroundingCoords) { if (levelTemplate.IsAvailable(surroundingCoord)) { surroundingAvailableCoords.Add(surroundingCoord); } } return(surroundingAvailableCoords); }
private List <int[]> GetNextMainCoords(LevelTemplate levelTemplate, int[] mainHeadCoords) { List <int[]> availableCoords = new List <int[]>(); // the potential coordinate has to have at least 3 available squares next to it // or else it can get stuck in a loop int[][] surroundingCoords = GetSurroundingCoords(mainHeadCoords); foreach (int[] coords in surroundingCoords) { if (levelTemplate.IsAvailable(coords) && GetSurroundingTypeCoords(levelTemplate, coords, RoomTemplate.RoomType.MAIN).Count < 2) { availableCoords.Add(coords); } } return(availableCoords); }