src/chess/rules.c

changeset 226
341080f6bf34
parent 220
04da225a5677
equal deleted inserted replaced
225:6e39f53127e9 226:341080f6bf34
566 void gamestate_at_move(const GameState *gamestate, 566 void gamestate_at_move(const GameState *gamestate,
567 unsigned move_number, GameState *replay) { 567 unsigned move_number, GameState *replay) {
568 gamestate_init(replay); 568 gamestate_init(replay);
569 memcpy(&replay->info, &gamestate->info, sizeof(GameInfo)); 569 memcpy(&replay->info, &gamestate->info, sizeof(GameInfo));
570 replay->review = true; 570 replay->review = true;
571 // TODO: respect move_start offset 571
572 if (gamestate->move_start > 0) {
573 replay->move_start = gamestate->move_start;
574 replay->fifty_cntr_start = gamestate->fifty_cntr_start;
575 free(replay->fen_start);
576 replay->fen_start = strdup(gamestate->fen_start);
577 }
578
572 if (move_number > gamestate->movecount) { 579 if (move_number > gamestate->movecount) {
573 move_number = gamestate->movecount; 580 move_number = gamestate->movecount;
574 } 581 }
575 for (unsigned i = 0 ; i < move_number ; i++) { 582 for (unsigned i = 0 ; i < move_number ; i++) {
576 apply_move(replay, &(gamestate->moves[i])); 583 apply_move(replay, &(gamestate->moves[i]));

mercurial