]> git.sesse.net Git - remoteglot/blobdiff - remoteglot.pl
Fix an issue where prettyprint_move would write out moves Chess.js did not want to...
[remoteglot] / remoteglot.pl
index 5a5d4c556ad4d6607111f12a8012ed79cf37eccc..a0c1bf12987b526964e03a6a1cb62c1b4d0c4a4c 100755 (executable)
@@ -289,13 +289,19 @@ sub handle_pgn {
                        my $pos = Position->start_pos($pgn->white, $pgn->black);
                        my $moves = $pgn->moves;
                        my @uci_moves = ();
+                       my @repretty_moves = ();
                        for my $move (@$moves) {
-                               my $uci_move;
-                               ($pos, $uci_move) = $pos->make_pretty_move($move);
+                               my ($npos, $uci_move) = $pos->make_pretty_move($move);
                                push @uci_moves, $uci_move;
+
+                               # Re-prettyprint the move.
+                               my ($from_col, $from_row, $to_col, $to_row, $promo) = parse_uci_move($uci_move);
+                               my ($pretty, undef) = $pos->{'board'}->prettyprint_move($from_row, $from_col, $to_row, $to_col, $promo);
+                               push @repretty_moves, $pretty;
+                               $pos = $npos;
                        }
                        $pos->{'result'} = $pgn->result;
-                       $pos->{'pretty_history'} = $moves;
+                       $pos->{'pretty_history'} = \@repretty_moves;
 
                        extract_clock($pgn, $pos);
 
@@ -482,10 +488,9 @@ sub parse_ids {
        my ($engine, @x) = @_;
 
        while (scalar @x > 0) {
-               if ($x[0] =~ /^(name|author)$/) {
-                       my $key = shift @x;
+               if ($x[0] eq 'name') {
                        my $value = join(' ', @x);
-                       $engine->{'id'}{$key} = $value;
+                       $engine->{'id'}{'author'} = $value;
                        last;
                }
 
@@ -738,10 +743,23 @@ sub output_json {
 
        my $json = {};
        $json->{'position'} = $pos_calculating->to_json_hash();
-       $json->{'id'} = $engine->{'id'};
+       $json->{'engine'} = $engine->{'id'};
+       if (defined($remoteglotconf::engine_url)) {
+               $json->{'engine'}{'url'} = $remoteglotconf::engine_url;
+       }
+       if (defined($remoteglotconf::engine_details)) {
+               $json->{'engine'}{'details'} = $remoteglotconf::engine_details;
+       }
+       if (defined($remoteglotconf::move_source)) {
+               $json->{'move_source'} = $remoteglotconf::move_source;
+       }
+       if (defined($remoteglotconf::move_source_url)) {
+               $json->{'move_source_url'} = $remoteglotconf::move_source_url;
+       }
        $json->{'score'} = long_score($info, $pos_calculating, '');
        $json->{'short_score'} = short_score($info, $pos_calculating, '');
        $json->{'plot_score'} = plot_score($info, $pos_calculating, '');
+       $json->{'using_lomonosov'} = defined($remoteglotconf::tb_serial_key);
 
        $json->{'nodes'} = $info->{'nodes'};
        $json->{'nps'} = $info->{'nps'};
@@ -875,7 +893,7 @@ sub output_json {
                my $new_depth = $json->{'depth'} // 0;
                my $new_nodes = $json->{'nodes'} // 0;
                if (!defined($old_engine) ||
-                   $old_engine ne $json->{'id'}{'name'} ||
+                   $old_engine ne $json->{'engine'}{'name'} ||
                    $new_depth > $old_depth ||
                    ($new_depth == $old_depth && $new_nodes >= $old_nodes)) {
                        atomic_set_contents($filename, $encoded);
@@ -884,7 +902,7 @@ sub output_json {
                                $dbh->do('DELETE FROM scores WHERE id=?', undef, $id);
                                $dbh->do('INSERT INTO scores (id, plot_score, short_score, engine, depth, nodes) VALUES (?,?,?,?,?,?)', undef,
                                        $id, $json->{'plot_score'}, $json->{'short_score'},
-                                       $json->{'id'}{'name'}, $new_depth, $new_nodes);
+                                       $json->{'engine'}{'name'}, $new_depth, $new_nodes);
                                $dbh->commit;
                        }
                }