X-Git-Url: https://git.sesse.net/?p=remoteglot;a=blobdiff_plain;f=Position.pm;h=807b0035876e3a261dae1f2e0097c371d7160953;hp=b847d101162a51a23d6bd7b5ff758a9a66a98930;hb=d40118a8adcb0da790ab1087296287e7eeab7c2c;hpb=25b4c5b0537cb335c09c7b1bf4e765c5aa6cf412 diff --git a/Position.pm b/Position.pm index b847d10..807b003 100644 --- a/Position.pm +++ b/Position.pm @@ -28,6 +28,8 @@ sub new { $pos->{'player_b'} = $x[18]; $pos->{'player_w'} =~ s/^W?[FCIG]M//; $pos->{'player_b'} =~ s/^W?[FCIG]M//; + $pos->{'white_clock'} = $x[24]; + $pos->{'black_clock'} = $x[25]; $pos->{'move_num'} = $x[26]; if ($x[27] =~ /([a-h][1-8])-([a-h][1-8])/) { $pos->{'last_move_uci'} = $1 . $2; @@ -73,27 +75,12 @@ sub fen { my $ep = "-"; if ($pos->{'ep_file_num'} != -1) { my $col = $pos->{'ep_file_num'}; - my $nep = (qw(a b c d e f g h))[$col]; + $ep = (qw(a b c d e f g h))[$col]; if ($pos->{'toplay'} eq 'B') { - $nep .= "3"; + $ep .= "3"; } else { - $nep .= "6"; - } - - # - # Showing the en passant square when actually no capture can be made - # seems to confuse at least Rybka. Thus, check if there's actually - # a pawn of the opposite side that can do the en passant move, and if - # not, just lie -- it doesn't matter anyway. I'm unsure what's the - # "right" thing as per the standard, though. - # - if ($pos->{'toplay'} eq 'B') { - $ep = $nep if ($col > 0 && $pos->{'board'}[4][$col-1] eq 'p'); - $ep = $nep if ($col < 7 && $pos->{'board'}[4][$col+1] eq 'p'); - } else { - $ep = $nep if ($col > 0 && $pos->{'board'}[3][$col-1] eq 'P'); - $ep = $nep if ($col < 7 && $pos->{'board'}[3][$col+1] eq 'P'); + $ep .= "6"; } } $fen .= " "; @@ -112,7 +99,14 @@ sub fen { sub to_json_hash { my $pos = shift; - my $json = { %$pos, board => undef, prettyprint_cache => undef, fen => $pos->fen() }; + my $json = { %$pos, fen => $pos->fen() }; + delete $json->{'board'}; + delete $json->{'prettyprint_cache'}; + delete $json->{'black_castle_k'}; + delete $json->{'black_castle_q'}; + delete $json->{'white_castle_k'}; + delete $json->{'white_castle_q'}; + delete $json->{'time_since_100move_rule_reset'}; if ($json->{'player_w'} =~ /^base64:(.*)$/) { $json->{'player_w'} = MIME::Base64::decode_base64($1); }