diff -r 4dcfb4c58b6d -r d726e4b46c33 src/chess/rook.c --- a/src/chess/rook.c Thu Apr 17 12:16:14 2014 +0200 +++ b/src/chess/rook.c Wed May 28 15:47:57 2014 +0200 @@ -58,95 +58,3 @@ return 0; } - -static int rook_getloc_fixedrow(GameState *gamestate, Move *move) { - uint8_t file = POS_UNSPECIFIED; - for (uint8_t f = 0 ; f < 8 ; f++) { - if (gamestate->board[move->fromrow][f] == move->piece) { - if (file == POS_UNSPECIFIED) { - file = f; - } else { - return AMBIGUOUS_MOVE; - } - } - } - if (file == POS_UNSPECIFIED) { - return INVALID_POSITION; - } else { - move->fromfile = file; - return VALID_MOVE_SYNTAX; - } -} - -static int rook_getloc_fixedfile(GameState *gamestate, Move *move) { - uint8_t row = POS_UNSPECIFIED; - for (uint8_t r = 0 ; r < 8 ; r++) { - if (gamestate->board[r][move->fromfile] == move->piece) { - if (row == POS_UNSPECIFIED) { - row = r; - } else { - return AMBIGUOUS_MOVE; - } - } - } - if (row == POS_UNSPECIFIED) { - return INVALID_POSITION; - } else { - move->fromrow = row; - return VALID_MOVE_SYNTAX; - } -} - -int rook_getlocation(GameState *gamestate, Move *move) { - - if (move->fromfile != POS_UNSPECIFIED) { - if (move->fromfile == move->tofile) { - return rook_getloc_fixedfile(gamestate, move); - } else { - if (gamestate->board[move->torow][move->fromfile] == move->piece) { - move->fromrow = move->torow; - return VALID_MOVE_SYNTAX; - } else { - return INVALID_POSITION; - } - } - } - - if (move->fromrow != POS_UNSPECIFIED) { - if (move->fromrow == move->torow) { - return rook_getloc_fixedrow(gamestate, move); - } else { - if (gamestate->board[move->fromrow][move->tofile] == move->piece) { - move->fromfile = move->tofile; - return VALID_MOVE_SYNTAX; - } else { - return INVALID_POSITION; - } - } - } - - Move chkrowmove = *move, chkfilemove = *move; - - chkrowmove.fromrow = move->torow; - int chkrow = rook_getloc_fixedrow(gamestate, &chkrowmove); - - chkfilemove.fromfile = move->tofile; - int chkfile = rook_getloc_fixedfile(gamestate, &chkfilemove); - - if ((chkrow == VALID_MOVE_SYNTAX && chkfile == VALID_MOVE_SYNTAX) || - chkrow == AMBIGUOUS_MOVE || chkfile == AMBIGUOUS_MOVE) { - return AMBIGUOUS_MOVE; - } - - if (chkrow == VALID_MOVE_SYNTAX) { - *move = chkrowmove; - return VALID_MOVE_SYNTAX; - } - - if (chkfile == VALID_MOVE_SYNTAX) { - *move = chkfilemove; - return VALID_MOVE_SYNTAX; - } - - return INVALID_POSITION; -}