ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/kgsueme/kgsueme/game.pl
(Generate patch)

Comparing kgsueme/kgsueme/game.pl (file contents):
Revision 1.38 by pcg, Tue Jun 3 15:08:41 2003 UTC vs.
Revision 1.49 by pcg, Tue Jun 10 09:06:39 2003 UTC

39 if ($_[0] > $low) { 39 if ($_[0] > $low) {
40 util::format_time $_[0] - $low; 40 util::format_time $_[0] - $low;
41 } else { 41 } else {
42 sprintf "%s (%d)", 42 sprintf "%s (%d)",
43 util::format_time int (($_[0] - 1) % $interval + 1), 43 util::format_time int (($_[0] - 1) % $interval + 1),
44 $_[0] / $interval; 44 ($_[0] - 1) / $interval;
45 } 45 }
46 }; 46 };
47 47
48 } elsif ($timesys == TIMESYS_CANADIAN) { 48 } elsif ($timesys == TIMESYS_CANADIAN) {
49 $self->{set} = sub { $self->{time} = $_[0]; $self->{moves} = $_[1] }; 49 $self->{set} = sub { $self->{time} = $_[0]; $self->{moves} = $_[1] };
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
647sub update_board { 647sub 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
654 warn "update_board called $move\n";#d#
655
653 my $running = $move == @{$self->{path}}; 656 my $running = $move == @{$self->{path}};
654 657
655 $self->{board_label}->set_text ("Move $move"); 658 $self->{board_label}->set_text ("Move " . ($move - 1));
656 659
657 $self->{board} = new KGS::Game::Board $self->{size}; 660 $self->{board} = new KGS::Game::Board $self->{size};
658 $self->{board}->interpret_path ([@{$self->{path}}[0 .. $move - 1]]); 661 $self->{board}->interpret_path ([@{$self->{path}}[0 .. $move - 1]]);
659 662
660 for my $colour (WHITE, BLACK) { 663 for my $colour (WHITE, BLACK) {
661 $self->{userpanel}[$colour]->set_state ( 664 $self->{userpanel}[$colour]->set_state (
662 $self->{board}{captures}[$colour], 665 $self->{board}{captures}[$colour],
663 $self->{board}{timer}[$colour], 666 $self->{board}{timer}[$colour],
664 ($running && $self->{lastmove_colour} == !$colour) 667 ($running && $self->{lastmove_colour} == !$colour)
665 ? $self->{lastmove_time} : 0 668 ? $self->{lastmove_time} : 0
666 ); 669 );
667 } 670 }
668 671
669 $self->redraw ($self->repaint_board); 672 $self->redraw ($self->repaint_board);
673
674 # delete $self->{update_board_cb};
675 #}
670} 676}
671 677
672sub event_update_tree { 678sub event_update_tree {
673 my ($self) = @_; 679 my ($self) = @_;
674 680
675 $self->{path} = $self->get_path; 681 $self->{path} = $self->get_path;
676 682
677 if ($self->{moveadj}) { 683 if ($self->{moveadj}) {
678 my $upper = $self->{moveadj}->upper; 684 my $upper = $self->{moveadj}->upper;
679 my $pos = $self->{moveadj}->get_value; 685 my $pos = $self->{moveadj}->get_value;
686 my $move = scalar @{$self->{path}};
680 687
681 $self->{moveadj}->upper (scalar @{$self->{path}}); 688 $self->{moveadj}->upper ($move);
682 689
690 warn "UPDATE_TREE $pos,$upper";#d#
683 $self->{moveadj}->changed; 691 $self->{moveadj}->changed;
684 if ($pos == $upper) { 692 if ($pos == $upper) {
685 $self->{moveadj}->set_value (scalar @{$self->{path}}); 693 $self->{moveadj}->value ($move);
686 } else {
687 $self->{moveadj}->value_changed; 694 $self->{moveadj}->value_changed;
688 } 695 }
689 } 696 }
690} 697}
691 698
698 $text .= "\n<header>Move <move>$node->{move}</move>, Node <node>$node->{id}</node></header>" 705 $text .= "\n<header>Move <move>$node->{move}</move>, Node <node>$node->{id}</node></header>"
699 if $newnode; 706 if $newnode;
700 707
701 for (split /\n/, $comment) { 708 for (split /\n/, $comment) {
702 $text .= "\n"; 709 $text .= "\n";
703 if ($_ =~ s/^([0-9a-zA-Z]+ \[[0-9dkp\?\-]+\])://) { 710 if (s/^([0-9a-zA-Z]+ \[[0-9dkp\?\-]+\])://) {
704 $text .= "<user>" . (util::toxml $1) . "</user>:"; 711 $text .= "<user>" . (util::toxml $1) . "</user>:";
705 } 712 }
713
714 # coords only for 19x19 so far
715 $_ = util::toxml $_;
716 s{
717 (
718 \b
719 (?:[bw])?
720 [, ]{0,2}
721 [a-hj-t] # valid for upto 19x19
722 \s?
723 [1-9]?[0-9]
724 \b
725 )
726 }{
727 "<coord>$1</coord>";
728 }sgexi;
729
706 $text .= $_; 730 $text .= $_;
707 } 731 }
708 732
709 $self->{text}->append_text ($text); 733 $self->{text}->append_text ($text);
710} 734}
762 $text .= "\nHandicap: " . $self->{handicap}; 786 $text .= "\nHandicap: " . $self->{handicap};
763 $text .= "\nKomi: " . $self->{komi}; 787 $text .= "\nKomi: " . $self->{komi};
764 $text .= "\nSize: " . $self->size_string; 788 $text .= "\nSize: " . $self->size_string;
765 } 789 }
766 790
791 if ($self->is_scored) {
792 $text .= "\nResult: " . $self->score_string;
793 }
794
767 $self->{text}->append_text ("<infoblock>$text</infoblock>"); 795 $self->{text}->append_text ("<infoblock>$text</infoblock>");
768} 796}
769 797
770sub event_update_rules { 798sub event_update_rules {
771 my ($self, $rules) = @_; 799 my ($self, $rules) = @_;
778 $text .= "\nRuleset: " . $ruleset{$rules->{ruleset}}; 806 $text .= "\nRuleset: " . $ruleset{$rules->{ruleset}};
779 807
780 $text .= "\nTime: "; 808 $text .= "\nTime: ";
781 809
782 if ($rules->{timesys} == TIMESYS_NONE) { 810 if ($rules->{timesys} == TIMESYS_NONE) {
783 $text .= "infinite"; 811 $text .= "UNLIMITED";
784 } elsif ($rules->{timesys} == TIMESYS_ABSOLUTE) { 812 } elsif ($rules->{timesys} == TIMESYS_ABSOLUTE) {
785 $text .= util::format_time $rules->{time}; 813 $text .= util::format_time $rules->{time};
814 $text .= " ABS";
786 } elsif ($rules->{timesys} == TIMESYS_BYO_YOMI) { 815 } elsif ($rules->{timesys} == TIMESYS_BYO_YOMI) {
787 $text .= util::format_time $rules->{time} - $rules->{interval} * $rules->{count}; 816 $text .= util::format_time $rules->{time} - $rules->{interval} * $rules->{count};
788 $text .= sprintf " + %s (%d)", util::format_time $rules->{interval}, $rules->{count}; 817 $text .= sprintf " + %s (%d) BY", util::format_time $rules->{interval}, $rules->{count};
789 } elsif ($rules->{timesys} == TIMESYS_CANADIAN) { 818 } elsif ($rules->{timesys} == TIMESYS_CANADIAN) {
790 $text .= util::format_time $rules->{time}; 819 $text .= util::format_time $rules->{time};
791 $text .= sprintf " + %s/%d", util::format_time $rules->{interval}, $rules->{count}; 820 $text .= sprintf " + %s/%d CAN", util::format_time $rules->{interval}, $rules->{count};
792 } 821 }
793 822
794 $self->{text}->append_text ("<infoblock>$text</infoblock>"); 823 $self->{text}->append_text ("<infoblock>$text</infoblock>");
795} 824}
796 825
797sub inject_resign_game { 826sub inject_resign_game {
798 my ($self, $msg) = @_; 827 my ($self, $msg) = @_;
799 828
800 $self->{text}->append_text ("\n<infoblock><header>Resign</header><user>" 829 $self->{text}->append_text ("\n<infoblock><header>Resign</header>"
830 . "\n<user>"
801 . (util::toxml $self->{user}[$msg->{player}]->as_string) 831 . (util::toxml $self->{user}[$msg->{player}]->as_string)
802 . "</user> resigned.</infoblock>"); 832 . "</user> resigned.</infoblock>");
803} 833}
804 834
805sub inject_final_result { 835sub inject_final_result {
806 my ($self, $msg) = @_; 836 my ($self, $msg) = @_;
807 837
808 $self->{text}->append_text ("\n<header>Game Over</header>" 838 $self->{text}->append_text ("<infoblock>\n<header>Game Over</header>"
809 . "\nWhite Score " . (util::toxml $msg->{whitescore}->as_string) 839 . "\nWhite Score " . (util::toxml $msg->{whitescore}->as_string)
810 . "\nBlack Score " . (util::toxml $msg->{blackscore}->as_string) 840 . "\nBlack Score " . (util::toxml $msg->{blackscore}->as_string)
841 . "</infoblock>"
811 ); 842 );
812} 843}
813 844
814sub destroy { 845sub destroy {
815 my ($self) = @_; 846 my ($self) = @_;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines