Skip to content

Commit adb4dbd

Browse files
authored
Merge pull request #11 from 956MB/fix/illegal-move
fix/illegal-move
2 parents 96cc2da + 675e145 commit adb4dbd

File tree

2 files changed

+29
-6
lines changed

2 files changed

+29
-6
lines changed

.gitignore

+10
Original file line numberDiff line numberDiff line change
@@ -50,3 +50,13 @@ modules.order
5050
Module.symvers
5151
Mkfile.old
5252
dkms.conf
53+
54+
.DS_Store
55+
dist/*
56+
.vscode
57+
.nvim
58+
.clang-format
59+
.clangd
60+
.editorconfig
61+
.env
62+
.ufbt

views/flipchess_scene_1.c

+19-6
Original file line numberDiff line numberDiff line change
@@ -228,13 +228,26 @@ uint8_t flipchess_turn(FlipChessScene1Model* model) {
228228
// break;
229229

230230
if(model->turnState == 0 && model->squareSelected != 255) {
231-
model->squareFrom = model->squareSelected;
232-
model->turnState = 1;
231+
// Color check before allowing piece selection
232+
char piece = model->game.board[model->squareSelected];
233+
if(piece != '.' &&
234+
SCL_pieceIsWhite(piece) == SCL_boardWhitesTurn(model->game.board)) {
235+
model->squareFrom = model->squareSelected;
236+
model->turnState = 1;
237+
}
233238
} else if(model->turnState == 1 && model->squareSelected != 255) {
234-
model->squareTo = model->squareSelected;
235-
model->turnState = 2;
236-
model->squareSelectedLast = model->squareSelected;
237-
//model->squareSelected = 255;
239+
// Validate before executing
240+
if(SCL_boardMoveIsLegal(model->game.board,
241+
model->squareFrom,
242+
model->squareSelected)) {
243+
model->squareTo = model->squareSelected;
244+
model->turnState = 2;
245+
model->squareSelectedLast = model->squareSelected;
246+
} else {
247+
// Invalid move, reset state
248+
model->turnState = 0;
249+
SCL_squareSetClear(model->moveHighlight);
250+
}
238251
}
239252

240253
if(model->turnState == 1 && model->squareFrom != 255) {

0 commit comments

Comments
 (0)