X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;ds=sidebyside;f=Position.pm;h=17c8512d65f57f6a4c0c9600296b4429fadedcfe;hb=ff5c25b6d3bf5a83c0acd7e4e98a9ea85317456a;hp=c3dbccaedde8b026a9585410c64134798e650d04;hpb=92c3ae694d679a17fe546179c06b54ac8578eb9a;p=remoteglot diff --git a/Position.pm b/Position.pm index c3dbcca..17c8512 100644 --- a/Position.pm +++ b/Position.pm @@ -132,35 +132,6 @@ sub fen { return $fen; } -# Returns a compact bit string describing the same data as fen(), -# except for the half-move and full-move clock. -sub bitpacked_fen { - my $pos = shift; - my $board = $pos->{'board'}->bitpacked_fen(); - - my $bits = ""; - if ($pos->{'toplay'} eq 'W') { - $bits .= "0"; - } else { - $bits .= "1"; - } - - $bits .= $pos->{'white_castle_k'}; - $bits .= $pos->{'white_castle_q'}; - $bits .= $pos->{'black_castle_k'}; - $bits .= $pos->{'black_castle_q'}; - - my $col = $pos->{'ep_file_num'}; - if ($col == -1) { - $bits .= "0"; - } else { - $bits .= "1"; - $bits .= (qw(000 001 010 011 100 101 110 111))[$col]; - } - - return $board . pack('b*', $bits); -} - sub to_json_hash { my $pos = shift; my $json = { %$pos, fen => $pos->fen() }; @@ -172,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); } @@ -247,6 +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 (defined($pretty_move)) { $np->{'last_move'} = $pretty_move; } else {