From 9fc4030d9b55674b73c341c815292055fcb6f05c Mon Sep 17 00:00:00 2001 From: "Steinar H. Gunderson" Date: Fri, 16 Jul 2021 16:34:24 +0200 Subject: [PATCH] Send information about lower depths to the JSON. --- remoteglot.pl | 37 ++++++++++++++++++++++++++++++------- 1 file changed, 30 insertions(+), 7 deletions(-) diff --git a/remoteglot.pl b/remoteglot.pl index b9055a6..56554a6 100755 --- a/remoteglot.pl +++ b/remoteglot.pl @@ -480,6 +480,8 @@ sub parse_infos { } } + my $prev_depth = $info->{'depth1'} // $info->{'depth'}; + while (scalar @x > 0) { if ($x[0] eq 'multipv') { # Dealt with above @@ -534,6 +536,14 @@ sub parse_infos { die "Unknown info '" . join(',', @x) . "'"; } + + my $now_depth = $info->{'depth1'} // $info->{'depth'}; + if (defined($prev_depth) && POSIX::floor($now_depth / 10) > POSIX::floor($prev_depth / 10)) { + my $d = POSIX::floor($now_depth / 10) * 10; # In case we skipped some. + my $cp = $info->{'score_cp1'} // $info->{'score_cp'}; + my $mate = $info->{'score_mate1'} // $info->{'score_mate'}; + push @{$info->{'lowdepth'}}, [ $d, $cp, $mate ]; + } } sub parse_ids { @@ -944,6 +954,13 @@ sub output_json { $json->{'tablebase'} = $info->{'tablebase'}; $json->{'pv'} = [ prettyprint_pv($pos_calculating, @{$info->{'pv'}}) ]; + $json->{'lowdepth'} = {}; + if (exists($info->{'lowdepth'})) { + for my $ld (@{$info->{'lowdepth'}}) { + $json->{'lowdepth'}{$ld->[0]} = score_digest_inner($ld->[1], $ld->[2], undef, 0, $pos_calculating); + } + } + my %refutation_lines = (); my @refutation_lines = (); if (defined($engine2)) { @@ -1172,14 +1189,21 @@ sub short_score { # (with side-to-play information) score_sort_key. sub score_digest { my ($info, $pos, $mpv) = @_; + return score_digest_inner( + $info->{'score_cp' . $mpv}, + $info->{'score_mate' . $mpv}, + $info->{'splicepos' . $mpv}, + $info->{'tablebase'}, + $pos); +} - if (defined($info->{'score_mate' . $mpv})) { - my $mate = $info->{'score_mate' . $mpv}; +sub score_digest_inner { + my ($score, $mate, $sp, $tablebase, $pos) = @_; + if (defined($mate)) { if ($pos->{'toplay'} eq 'B') { $mate = -$mate; } - if (exists($info->{'splicepos' . $mpv})) { - my $sp = $info->{'splicepos' . $mpv}; + if (defined($sp)) { if ($mate > 0) { return ['T', $sp]; } else { @@ -1197,12 +1221,11 @@ sub score_digest { } } } else { - if (exists($info->{'score_cp' . $mpv})) { - my $score = $info->{'score_cp' . $mpv}; + if (defined($score)) { if ($pos->{'toplay'} eq 'B') { $score = -$score; } - if ($score == 0 && $info->{'tablebase'}) { + if ($score == 0 && $tablebase) { return ['d', undef]; } else { return ['cp', int($score)]; -- 2.39.2