From: Steinar H. Gunderson Date: Sat, 6 Jan 2018 15:45:30 +0000 (+0100) Subject: Make the Chess960 storage/test a bit more efficient. X-Git-Url: https://git.sesse.net/?p=remoteglot;a=commitdiff_plain;h=467e50a8cfaf38bd84053401ce4cc652f543ca74 Make the Chess960 storage/test a bit more efficient. --- diff --git a/Position.pm b/Position.pm index 8a42a6f..17c8512 100644 --- a/Position.pm +++ b/Position.pm @@ -143,6 +143,7 @@ sub to_json_hash { 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); } @@ -218,12 +219,10 @@ sub make_move { } $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 { @@ -245,11 +244,6 @@ sub make_pretty_move { 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); diff --git a/remoteglot.pl b/remoteglot.pl index 66fb2ff..dec440b 100755 --- a/remoteglot.pl +++ b/remoteglot.pl @@ -299,6 +299,8 @@ sub handle_pgn { if (exists($tags->{'Variant'}) && $tags->{'Variant'} =~ /960|fischer/i) { $pos->{'chess960'} = 1; + } else { + $pos->{'chess960'} = 0; } my $moves = $pgn->moves; my @uci_moves = (); @@ -390,9 +392,9 @@ sub handle_position { # 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"); @@ -403,9 +405,9 @@ sub handle_position { $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");