delete $json->{'white_castle_k'};
delete $json->{'white_castle_q'};
delete $json->{'time_since_100move_rule_reset'};
+ delete $json->{'chess960'} if (!$json->{'chess960'});
if ($json->{'player_w'} =~ /^base64:(.*)$/) {
$json->{'player_w'} = MIME::Base64::decode_base64($1);
}
}
$np->{'player_w'} = $pos->{'player_w'};
$np->{'player_b'} = $pos->{'player_b'};
+ $np->{'chess960'} = $pos->{'chess960'};
if (exists($pos->{'start_fen'})) {
$np->{'start_fen'} = $pos->{'start_fen'};
}
- if (exists($pos->{'chess960'})) {
- $np->{'chess960'} = $pos->{'chess960'};
- }
if (defined($pretty_move)) {
$np->{'last_move'} = $pretty_move;
} else {
return ($pos, $uci_move);
}
-sub is_chess960 {
- my ($pos) = shift;
- return (defined($pos->{'chess960'}) && $pos->{'chess960'});
-}
-
sub _pos_to_square {
my ($row, $col) = @_;
return sprintf("%c%d", ord('a') + $col, 8 - $row);
if (exists($tags->{'Variant'}) &&
$tags->{'Variant'} =~ /960|fischer/i) {
$pos->{'chess960'} = 1;
+ } else {
+ $pos->{'chess960'} = 0;
}
my $moves = $pgn->moves;
my @uci_moves = ();
# It's wrong to just give the FEN (the move history is useful,
# and per the UCI spec, we should really have sent "ucinewgame"),
# but it's easier, and it works around a Stockfish repetition issue.
- if ($engine->{'chess960'} != $pos->is_chess960()) {
- uciprint($engine, "setoption UCI_Chess960 " . ($pos->is_chess960() ? 'true' : 'false'));
- $engine->{'chess960'} = $pos->is_chess960();
+ if ($engine->{'chess960'} != $pos->{'chess960'}) {
+ uciprint($engine, "setoption UCI_Chess960 " . ($pos->{'chess960'} ? 'true' : 'false'));
+ $engine->{'chess960'} = $pos->{'chess960'};
}
uciprint($engine, "position fen " . $pos->fen());
uciprint($engine, "go infinite");
$engine2->{'stopping'} = 1;
uciprint($engine2, "stop");
}
- if ($engine2->{'chess960'} != $pos->is_chess960()) {
- uciprint($engine2, "setoption UCI_Chess960 " . ($pos->is_chess960() ? 'true' : 'false'));
- $engine2->{'chess960'} = $pos->is_chess960();
+ if ($engine2->{'chess960'} != $pos->{'chess960'}) {
+ uciprint($engine2, "setoption UCI_Chess960 " . ($pos->{'chess960'} ? 'true' : 'false'));
+ $engine2->{'chess960'} = $pos->{'chess960'};
}
uciprint($engine2, "position fen " . $pos->fen());
uciprint($engine2, "go infinite");