@@ -77,12 +77,11 @@ export function getValidMoves(gameState: GameState): number[] {
7777 ? - 1
7878 : getPlayerTrack ( gameState . currentPlayer ) . indexOf ( piece . square ) ;
7979 const newTrackPos = currentTrackPos + gameState . diceRoll ! ;
80+ const trackLength = getPlayerTrack ( gameState . currentPlayer ) . length ;
8081
81- if ( newTrackPos >= getPlayerTrack ( gameState . currentPlayer ) . length ) {
82- if ( newTrackPos === getPlayerTrack ( gameState . currentPlayer ) . length ) {
83- validMoves . push ( index ) ;
84- }
85- } else {
82+ if ( newTrackPos === trackLength ) {
83+ validMoves . push ( index ) ;
84+ } else if ( newTrackPos < trackLength ) {
8685 const newActualPos = getActualPosition (
8786 gameState . currentPlayer ,
8887 newTrackPos ,
@@ -124,15 +123,16 @@ export function makeMove(
124123 ? - 1
125124 : getPlayerTrack ( gameState . currentPlayer ) . indexOf ( piece . square ) ;
126125 const newTrackPos = currentTrackPos + gameState . diceRoll ;
126+ const trackLength = getPlayerTrack ( gameState . currentPlayer ) . length ;
127127
128128 if ( piece . square >= 0 ) {
129129 newState . board [ piece . square ] = null ;
130130 }
131131
132- if ( newTrackPos >= getPlayerTrack ( gameState . currentPlayer ) . length ) {
132+ if ( newTrackPos === trackLength ) {
133133 currentPieces [ pieceIndex ] = { ...piece , square : 20 } ;
134134 moveType = "finish" ;
135- } else {
135+ } else if ( newTrackPos < trackLength ) {
136136 const newActualPos = getActualPosition (
137137 gameState . currentPlayer ,
138138 newTrackPos ,
@@ -180,7 +180,7 @@ export function makeMove(
180180 }
181181
182182 const landedOnRosette =
183- newTrackPos < getPlayerTrack ( gameState . currentPlayer ) . length &&
183+ newTrackPos < trackLength &&
184184 isRosette ( getActualPosition ( gameState . currentPlayer , newTrackPos ) ) ;
185185
186186 if ( ! landedOnRosette && newState . gameStatus !== "finished" ) {
0 commit comments