diff --git a/src/shared/piece/piece.ts b/src/shared/piece/piece.ts index 0e70f59..579030e 100644 --- a/src/shared/piece/piece.ts +++ b/src/shared/piece/piece.ts @@ -8,7 +8,18 @@ export class Piece { private patterns: Move_Pattern[] ){} - public getMovesFrom(Board: Board, piece: Piece_Ref): Move[] { - throw new Error("Unimplemented"); + public getMovesFrom(board: Board, piece: Piece_Ref): Move[] { + // Uses a set to remove duplicates + let total_moves: Set = new Set(); + + for (let move_pattern of this.patterns) { + let new_moves = move_pattern.getMatches(board, piece); + // Adds each new move into total moves + // total_moves is a set this will remove duplicates for free + new_moves.forEach(total_moves.add, total_moves); + } + + // Converts set back to array for easier use later + return Array.from(total_moves); } }