diff --git a/src/components/Board/index.tsx b/src/components/Board/index.tsx index 4acff13..b7276df 100644 --- a/src/components/Board/index.tsx +++ b/src/components/Board/index.tsx @@ -59,8 +59,7 @@ class BoardView extends React.Component { let temp = { ...this.props.game }; // update history - if (!compare(this.props.history.board, temp.board)) - store.dispatch(updateHistory({ ...temp })); + store.dispatch(updateHistory({ ...temp })); // perform swipe Board.swipe(temp, direction); diff --git a/src/game/board.ts b/src/game/board.ts index 1079f63..f730cd3 100644 --- a/src/game/board.ts +++ b/src/game/board.ts @@ -25,12 +25,13 @@ export default class Board { static swipe = (board: Board, direction: Direction): void => { let temp = cascade(board.board, direction); + let moved: boolean = !compare(board.board, temp.board); - if (!compare(board.board, temp.board)) - Board.newTile(board); - board.board = temp.board; board.score += temp.score; + + if (moved) + Board.newTile(board); } static validate = (board: Board): boolean => { @@ -72,7 +73,7 @@ export default class Board { private static isValidIndex = (board: Board, pair: Array): boolean => pair[0] >= 0 && pair[1] >= 0 && pair[0] < board.dim && pair[1] < board.dim; - private static newTile = (board: Board): void => { + private static newTile = (board: Board): void => { let empty: Array = Board.getAvailable(board); if (empty.length === 0) return;