diff --git a/src/components/Grid/hooks/useActions.ts b/src/components/Grid/hooks/useActions.ts index 758c4c2..7255803 100644 --- a/src/components/Grid/hooks/useActions.ts +++ b/src/components/Grid/hooks/useActions.ts @@ -44,8 +44,8 @@ export const useActions = (grid: GridType, setGrid: React.Dispatch ({ - ...prev, + setGameState((prevGameState) => ({ + ...prevGameState, endType: 'loose', })); return revealAllGrid(grid, true); @@ -57,12 +57,12 @@ export const useActions = (grid: GridType, setGrid: React.Dispatch ({ - ...prev, + if (hasWin(prev, bombsCount || gameState.bombs, gameState.placedFlags)) { + setGameState((prevGameState) => ({ + ...prevGameState, endType: 'win', })); - return revealAllGrid(grid, true); + return revealAllGrid(prev, true); } return prev; @@ -115,7 +115,7 @@ export const useActions = (grid: GridType, setGrid: React.Dispatch ({ ...prev, endType: 'win', @@ -134,7 +134,7 @@ export const useActions = (grid: GridType, setGrid: React.Dispatch { +const hasWin = (grid: GridType, bombs: number, placedFlags: number) => { let bombsFlagged = 0; grid.map((row) => { @@ -145,7 +145,7 @@ const hasWin = (grid: GridType, bombs: number) => { }); }); - if (bombsFlagged === bombs) { + if (bombsFlagged === bombs && placedFlags === bombs) { return true; }