public IEnumerable <PlayedWordLetter> BeforeWordTiles(Func <int, int, char> boardTileGetter) { int y = minY - 1; bool atEdge = y < 0; char nextChar; while (!atEdge && (nextChar = boardTileGetter(x, y)) != ' ') { // Don't include multipliers on letters before/after what the user played yield return(PlayedWordLetter.Create(nextChar)); y--; atEdge = y < 0; } }
public IEnumerable <PlayedWordLetter> AfterWordTiles(Func <int, int, char> boardTileGetter) { int y = maxY + 1; bool atEdge = y >= GameBase.BOARD_WIDTH; char nextChar; while (!atEdge && (nextChar = boardTileGetter(x, y)) != ' ') { // Don't include multipliers on letters before/after what the user played yield return(PlayedWordLetter.Create(nextChar)); y++; atEdge = y >= GameBase.BOARD_WIDTH; } }
public IEnumerable <PlayedWordLetter> WordTiles(Func <int, int, char> userTileGetter, Func <int, int, char> boardTileGetter) { for (int y = minY; y <= maxY; y++) { char tile = boardTileGetter(x, y); if (tile == ' ') { // The board has no tile here, so the user must be playing // in this space. Include the multiplier from the board yield return(PlayedWordLetter.CreateWithBoardMultiplier(userTileGetter(x, y), x, y)); } else { // The board has a tile here already, so multipliers aren't used yield return(PlayedWordLetter.Create(tile)); } } }