Shorten the FICS messages a bit.
authorSteinar H. Gunderson <sesse@debian.org>
Sun, 1 Jul 2007 23:51:57 +0000 (01:51 +0200)
committerSteinar H. Gunderson <sesse@debian.org>
Sun, 1 Jul 2007 23:51:57 +0000 (01:51 +0200)
remoteglot.pl

index 5409d7b..a58168b 100755 (executable)
@@ -63,7 +63,7 @@ uciprint("setoption name UCI_AnalyseMode value true");
 uciprint("setoption name NalimovPath value c:\\nalimov");
 uciprint("setoption name NalimovUsage value Rarely");
 uciprint("setoption name Hash value 1024");
-uciprint("setoption name MultiPV value 3");
+uciprint("setoption name MultiPV value 3");
 # uciprint("setoption name Contempt value 1000");
 # uciprint("setoption name Outlook value Ultra Optimistic");
 uciprint("ucinewgame");
@@ -490,6 +490,19 @@ sub output_screen {
        }
 
        return unless (exists($ficsinfo{'board'}));
+               
+       #
+       # Some programs _always_ report MultiPV, even with only one PV.
+       # In this case, we simply use that data as if MultiPV was never
+       # specified.
+       #
+       if (exists($uciinfo{'pv1'}) && !exists($uciinfo{'pv2'})) {
+               for my $key qw(pv score_cp score_mate nodes nps depth seldepth tbhits) {
+                       if (exists($uciinfo{$key . '1'}) && !exists($uciinfo{$key})) {
+                               $uciinfo{$key} = $uciinfo{$key . '1'};
+                       }
+               }
+       }
 
        if (exists($uciinfo{'pv1'}) && exists($uciinfo{'pv2'})) {
                # multi-PV
@@ -510,19 +523,6 @@ sub output_screen {
                        ++$mpv;
                }
        } else {
-               #
-               # Some programs _always_ report MultiPV, even with only one PV.
-               # In this case, we simply use that data as if MultiPV was never
-               # specified.
-               #
-               if (exists($uciinfo{'pv1'})) {
-                       for my $key qw(pv score_cp score_mate nodes nps depth seldepth tbhits) {
-                               if (exists($uciinfo{$key . '1'}) && !exists($uciinfo{$key})) {
-                                       $uciinfo{$key} = $uciinfo{$key . '1'};
-                               }
-                       }
-               }
-
                # single-PV
                my $score = long_score(\%uciinfo, \%ficsinfo, '');
                $text .= "  $score\n" if defined($score);
@@ -548,15 +548,54 @@ sub output_screen {
                $last_text = $text;
        }
 
+       # Now construct the tell text, if any
+       return if (!defined($telltarget));
+
+       my $tell_text = '';
+
+       if (exists($uciid{'name'})) {
+               $tell_text .= "Analysis by $uciid{'name'} -- see http://analysis.sesse.net/ for more information\n";
+       } else {
+               $tell_text .= "Computer analysis -- http://analysis.sesse.net/ for more information\n";
+       }
+
+       if (exists($uciinfo{'pv1'}) && exists($uciinfo{'pv2'})) {
+               # multi-PV
+               my $mpv = 1;
+               while (exists($uciinfo{'pv' . $mpv})) {
+                       $tell_text .= sprintf "  PV%2u", $mpv;
+                       my $score = short_score(\%uciinfo, \%ficsinfo, $mpv);
+                       $tell_text .= "  ($score)" if (defined($score));
+
+                       if (exists($uciinfo{'depth' . $mpv})) {
+                               $tell_text .= sprintf " (%2u ply)", $uciinfo{'depth' . $mpv};
+                       }
+
+                       $tell_text .= ": ";
+                       $tell_text .= join(', ', prettyprint_pv($ficsinfo{'board'}, @{$uciinfo{'pv' . $mpv}}));
+                       $tell_text .= "\n";
+                       ++$mpv;
+               }
+       } else {
+               # single-PV
+               my $score = long_score(\%uciinfo, \%ficsinfo, '');
+               $tell_text .= "  $score\n" if defined($score);
+               $tell_text .= "  PV: " . join(', ', prettyprint_pv($ficsinfo{'board'}, @{$uciinfo{'pv'}}));
+               if (exists($uciinfo{'depth'})) {
+                       $tell_text .= sprintf " (depth %u ply)", $uciinfo{'depth'};
+               }
+               $tell_text .=  "\n";
+       }
+
        # see if a new tell is called for -- it is if the delay has expired _and_
        # this is not simply a repetition of the last one
-       if ($last_told_text ne $text && defined($telltarget)) {
+       if ($last_told_text ne $tell_text) {
                my $now = time;
                for my $iv (@tell_intervals) {
                        last if ($now - $last_move < $iv);
                        next if ($last_tell - $last_move >= $iv);
 
-                       for my $line (split /\n/, $text) {
+                       for my $line (split /\n/, $tell_text) {
                                $t->print("tell $telltarget [$target] $line");
                        }