Skip to content

Commit dead39a

Browse files
Merge pull request #252 from CSSLab/codex/king-check-aura
Fix board check state detection
2 parents 59e4959 + 57338a6 commit dead39a

1 file changed

Lines changed: 23 additions & 4 deletions

File tree

src/types/node.ts

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Color } from 'chess.ts'
1+
import { Chess, Color } from 'chess.ts'
22
import { StockfishEvaluation, MaiaEvaluation } from '.'
33
import { MOVE_CLASSIFICATION_THRESHOLDS } from 'src/constants/analysis'
44
import { calculateMoveColor } from 'src/hooks/useAnalysisController/utils'
@@ -48,7 +48,7 @@ export class GameNode {
4848
this._excellentMove = false
4949
this._bestMove = false
5050
this._turn = this.parseTurn(fen)
51-
this._check = fen.includes('+')
51+
this._check = this.parseCheck(fen)
5252
this._moveNumber = this.parseMoveNumber(fen, this._turn)
5353
this._time = time
5454
this._color = null
@@ -108,12 +108,31 @@ export class GameNode {
108108

109109
private parseTurn(fen: string): Color {
110110
const parts = fen.split(' ')
111-
return parts[1] as Color
111+
if (parts[1] === 'w' || parts[1] === 'b') {
112+
return parts[1]
113+
}
114+
115+
return 'w'
112116
}
113117

114118
private parseMoveNumber(fen: string, turn: string): number {
115119
const parts = fen.split(' ')
116-
return parseInt(parts[5]) - (turn === 'w' ? 1 : 0)
120+
const fullMoveNumber = parseInt(parts[5], 10)
121+
122+
if (Number.isNaN(fullMoveNumber)) {
123+
return 1
124+
}
125+
126+
return fullMoveNumber - (turn === 'w' ? 1 : 0)
127+
}
128+
129+
private parseCheck(fen: string): boolean {
130+
try {
131+
const chess = new Chess(fen)
132+
return chess.inCheck()
133+
} catch {
134+
return false
135+
}
117136
}
118137

119138
private performMoveClassification(

0 commit comments

Comments
 (0)