for my $pos ($pos_waiting, $pos_calculating) {
next if (!defined($pos));
if ($pos->fen() eq $pos_for_movelist->fen()) {
for my $pos ($pos_waiting, $pos_calculating) {
next if (!defined($pos));
if ($pos->fen() eq $pos_for_movelist->fen()) {
if ($pgn->result eq '1-0' || $pgn->result eq '1/2-1/2' || $pgn->result eq '0-1') {
$pos->{'result'} = $pgn->result;
}
if ($pgn->result eq '1-0' || $pgn->result eq '1/2-1/2' || $pgn->result eq '0-1') {
$pos->{'result'} = $pgn->result;
}
if (exists($pos->{'prettyprint_cache'}{$cachekey})) {
return @{$pos->{'prettyprint_cache'}{$cachekey}};
} else {
if (exists($pos->{'prettyprint_cache'}{$cachekey})) {
return @{$pos->{'prettyprint_cache'}{$cachekey}};
} else {
sub complete_using_tbprobe {
my ($pos, $info, $mpv) = @_;
sub complete_using_tbprobe {
my ($pos, $info, $mpv) = @_;
# Run through the PV until we are at a 6-man position.
# TODO: We could in theory only have 5-man data.
my @pv = @{$info->{'pv' . $mpv}};
# Run through the PV until we are at a 6-man position.
# TODO: We could in theory only have 5-man data.
my @pv = @{$info->{'pv' . $mpv}};
$json->{'tbhits'} = $info->{'tbhits'};
$json->{'seldepth'} = $info->{'seldepth'};
$json->{'tablebase'} = $info->{'tablebase'};
$json->{'tbhits'} = $info->{'tbhits'};
$json->{'seldepth'} = $info->{'seldepth'};
$json->{'tablebase'} = $info->{'tablebase'};
-
- $json->{'pv_uci'} = $info->{'pv'}; # Still needs to be there for the JS to calculate arrows; only for the primary PV, though!
- $json->{'pv_pretty'} = [ prettyprint_pv($pos_calculating, @{$info->{'pv'}}) ];
+ $json->{'pv'} = [ prettyprint_pv($pos_calculating, @{$info->{'pv'}}) ];
my $pv = $info->{'pv' . $mpv};
my $pretty_move = join('', prettyprint_pv($pos_calculating, $pv->[0]));
my @pretty_pv = prettyprint_pv($pos_calculating, @$pv);
my $pv = $info->{'pv' . $mpv};
my $pretty_move = join('', prettyprint_pv($pos_calculating, $pv->[0]));
my @pretty_pv = prettyprint_pv($pos_calculating, @$pv);
depth => $info->{'depth' . $mpv},
score => score_digest($info, $pos_calculating, $mpv),
depth => $info->{'depth' . $mpv},
score => score_digest($info, $pos_calculating, $mpv),
$json->{'refutation_lines'} = \%refutation_lines;
# Piece together historic score information, to the degree we have it.
$json->{'refutation_lines'} = \%refutation_lines;
# Piece together historic score information, to the degree we have it.
my %score_history = ();
my $q = $dbh->prepare('SELECT * FROM scores WHERE id=?');
my $pos = Position->start_pos('white', 'black');
my $halfmove_num = 0;
my %score_history = ();
my $q = $dbh->prepare('SELECT * FROM scores WHERE id=?');
my $pos = Position->start_pos('white', 'black');
my $halfmove_num = 0;
my $id = id_for_pos($pos, $halfmove_num);
my $ref = $dbh->selectrow_hashref($q, undef, $id);
if (defined($ref)) {
my $id = id_for_pos($pos, $halfmove_num);
my $ref = $dbh->selectrow_hashref($q, undef, $id);
if (defined($ref)) {
defined($remoteglotconf::json_history_dir)) {
my $id = id_for_pos($pos_calculating);
my $filename = $remoteglotconf::json_history_dir . "/" . $id . ".json";
defined($remoteglotconf::json_history_dir)) {
my $id = id_for_pos($pos_calculating);
my $filename = $remoteglotconf::json_history_dir . "/" . $id . ".json";
(my $fen = $pos->fen()) =~ tr,/ ,-_,;
return "move$halfmove_num-$fen";
}
(my $fen = $pos->fen()) =~ tr,/ ,-_,;
return "move$halfmove_num-$fen";
}
# TODO(sesse): Maybe we can get the number of moves somehow else for FICS games.
# The history is needed for id_for_pos.
# TODO(sesse): Maybe we can get the number of moves somehow else for FICS games.
# The history is needed for id_for_pos.