File tree 2 files changed +29
-6
lines changed
2 files changed +29
-6
lines changed Original file line number Diff line number Diff line change @@ -50,3 +50,13 @@ modules.order
50
50
Module.symvers
51
51
Mkfile.old
52
52
dkms.conf
53
+
54
+ .DS_Store
55
+ dist /*
56
+ .vscode
57
+ .nvim
58
+ .clang-format
59
+ .clangd
60
+ .editorconfig
61
+ .env
62
+ .ufbt
Original file line number Diff line number Diff line change @@ -228,13 +228,26 @@ uint8_t flipchess_turn(FlipChessScene1Model* model) {
228
228
// break;
229
229
230
230
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
+ }
233
238
} 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
+ }
238
251
}
239
252
240
253
if (model -> turnState == 1 && model -> squareFrom != 255 ) {
You can’t perform that action at this time.
0 commit comments