… | |
… | |
52 | if (!$self->{moves}) { |
52 | if (!$self->{moves}) { |
53 | util::format_time $_[0] - $low; |
53 | util::format_time $_[0] - $low; |
54 | } else { |
54 | } else { |
55 | my $time = int (($_[0] - 1) % $interval + 1); |
55 | my $time = int (($_[0] - 1) % $interval + 1); |
56 | |
56 | |
57 | sprintf "%s/%d {%d}", |
57 | sprintf "%s/%d [%d]", |
58 | util::format_time $time, |
58 | util::format_time $time, |
59 | $self->{moves}, |
59 | $self->{moves}, |
60 | $time / ($self->{moves} || 1); |
60 | $time / ($self->{moves} || 1); |
61 | |
61 | |
62 | } |
62 | } |
… | |
… | |
230 | |
230 | |
231 | { |
231 | { |
232 | $frame->add(my $vbox = new Gtk2::VBox); |
232 | $frame->add(my $vbox = new Gtk2::VBox); |
233 | $vbox->add($self->{title} = new Gtk2::Label $title); |
233 | $vbox->add($self->{title} = new Gtk2::Label $title); |
234 | |
234 | |
235 | $self->{moveadj} = new Gtk2::Adjustment 0, 0, 0, 1, 1, 0; |
235 | $self->{moveadj} = new Gtk2::Adjustment 1, 1, 1, 1, 1, 0; |
236 | |
236 | |
237 | $vbox->add(my $scale = new Gtk2::HScale $self->{moveadj}); |
237 | $vbox->add(my $scale = new Gtk2::HScale $self->{moveadj}); |
238 | $scale->set_draw_value (0); |
238 | $scale->set_draw_value (0); |
239 | $scale->set_digits (0); |
239 | $scale->set_digits (0); |
240 | |
240 | |
… | |
… | |
646 | |
646 | |
647 | sub update_board { |
647 | sub update_board { |
648 | my ($self) = @_; |
648 | my ($self) = @_; |
649 | return unless $self->{path}; |
649 | return unless $self->{path}; |
650 | |
650 | |
|
|
651 | #$self->{update_board_cb} ||= add Glib::Idle sub { |
651 | my $move = int $self->{moveadj}->get_value; |
652 | my $move = int $self->{moveadj}->get_value; |
652 | |
653 | |
653 | warn "update_board called $move\n";#d# |
654 | warn "update_board called $move\n";#d# |
654 | |
655 | |
655 | my $running = $move == @{$self->{path}}; |
656 | my $running = $move == @{$self->{path}}; |
656 | |
657 | |
657 | $self->{board_label}->set_text ("Move $move"); |
658 | $self->{board_label}->set_text ("Move " . ($move - 1)); |
658 | |
659 | |
659 | $self->{board} = new KGS::Game::Board $self->{size}; |
660 | $self->{board} = new KGS::Game::Board $self->{size}; |
660 | $self->{board}->interpret_path ([@{$self->{path}}[0 .. $move - 1]]); |
661 | $self->{board}->interpret_path ([@{$self->{path}}[0 .. $move - 1]]); |
661 | |
662 | |
662 | for my $colour (WHITE, BLACK) { |
663 | for my $colour (WHITE, BLACK) { |
663 | $self->{userpanel}[$colour]->set_state ( |
664 | $self->{userpanel}[$colour]->set_state ( |
664 | $self->{board}{captures}[$colour], |
665 | $self->{board}{captures}[$colour], |
665 | $self->{board}{timer}[$colour], |
666 | $self->{board}{timer}[$colour], |
666 | ($running && $self->{lastmove_colour} == $colour) |
667 | ($running && $self->{lastmove_colour} == !$colour) |
667 | ? $self->{lastmove_time} : 0 |
668 | ? $self->{lastmove_time} : 0 |
668 | ); |
669 | ); |
669 | } |
670 | } |
670 | |
671 | |
671 | $self->redraw ($self->repaint_board); |
672 | $self->redraw ($self->repaint_board); |
|
|
673 | |
|
|
674 | # delete $self->{update_board_cb}; |
|
|
675 | #} |
672 | } |
676 | } |
673 | |
677 | |
674 | sub event_update_tree { |
678 | sub event_update_tree { |
675 | my ($self) = @_; |
679 | my ($self) = @_; |
676 | |
680 | |