feat: highlight legal moves on chess board interaction

This commit is contained in:
2026-04-01 09:56:05 +02:00
parent a9a4cdf590
commit 1811f74aa7
@@ -12,6 +12,7 @@ import scalafx.stage.Stage
import de.nowchess.api.board.{Board, Color, Piece, PieceType, Square, File, Rank}
import de.nowchess.api.move.PromotionPiece
import de.nowchess.chess.engine.GameEngine
import de.nowchess.chess.logic.GameRules
/** ScalaFX chess board view that displays the game state.
* Uses chess sprites and color palette.
@@ -128,6 +129,11 @@ class ChessBoardView(val stage: Stage, private val engine: GameEngine) extends B
if piece.color == currentTurn then
selectedSquare = Some(clickedSquare)
highlightSquare(rank, file, PieceSprites.SquareColors.Selected)
val legalDests = GameRules.legalMoves(currentBoard, engine.history, currentTurn)
.collect { case (`clickedSquare`, to) => to }
legalDests.foreach { sq =>
highlightSquare(sq.rank.ordinal, sq.file.ordinal, PieceSprites.SquareColors.ValidMove)
}
}
case Some(fromSquare) =>