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.113 by root, Tue Jun 1 10:11:14 2004 UTC vs.
Revision 1.114 by root, Tue Jun 1 12:46:54 2004 UTC

466 # show board 466 # show board
467 if ($self->is_inprogress) { 467 if ($self->is_inprogress) {
468 if (!$self->{board}) { 468 if (!$self->{board}) {
469 $self->{left}->add ($self->{board} = new Gtk2::GoBoard size => $self->{size}); 469 $self->{left}->add ($self->{board} = new Gtk2::GoBoard size => $self->{size});
470 $self->{board}->signal_connect (button_release => sub { 470 $self->{board}->signal_connect (button_release => sub {
471 return unless $self->{cur_board};
471 if ($_[1] == 1) { 472 if ($_[1] == 1) {
472 $self->{board_click}->($_[2], $_[3]) if $self->{board_click}; 473 $self->{board_click}->($_[2], $_[3]) if $self->{board_click};
473 } 474 }
474 }); 475 });
475 $self->{board}->show_all; 476 $self->{board}->show_all;
494 $self->{teacher_inlay}->append_text ("\n<header>Teacher:</header> <user>" 495 $self->{teacher_inlay}->append_text ("\n<header>Teacher:</header> <user>"
495 . (util::toxml $self->{teacher}) . "</user>"); 496 . (util::toxml $self->{teacher}) . "</user>");
496 } elsif ($self->{teacher_inlay}) { 497 } elsif ($self->{teacher_inlay}) {
497 (delete $self->{teacher_inlay})->clear; 498 (delete $self->{teacher_inlay})->clear;
498 } 499 }
500
501 $self->update_cursor;
499} 502}
500 503
501sub event_update_rules { 504sub event_update_rules {
502 my ($self, $rules) = @_; 505 my ($self, $rules) = @_;
503 506
545} 548}
546 549
547sub update_cursor { 550sub update_cursor {
548 my ($self) = @_; 551 my ($self) = @_;
549 552
553 return unless $self->{cur_board};
554
550 my $running = $self->{showmove} == @{$self->{path}} && $self->is_active; 555 my $running = $self->{showmove} == @{$self->{path}} && $self->is_active;
551 556
552 delete $self->{board_click}; 557 delete $self->{board_click};
553 558
559 $self->{colour} = COLOUR_BLACK;#d#
560 $self->{whosemove} = COLOUR_BLACK;#d#
554 if ($self->{teacher} eq $self->{app}{conn}) { 561 if ($self->{teacher} eq $self->{app}{conn}) {
555 #TODO# # teaching mode not implemented 562 #TODO# # teaching mode not implemented
556 $self->{button_pass}->set (label => "Pass", visible => 1, sensitive => 1); 563 $self->{button_pass}->set (label => "Pass", visible => 1, sensitive => 1);
557 $self->{button_undo}->hide; 564 $self->{button_undo}->hide;
558 $self->{button_resign}->hide; 565 $self->{button_resign}->hide;
587 594
588 } elsif ($self->{colour} == $self->{whosemove}) { 595 } elsif ($self->{colour} == $self->{whosemove}) {
589 # normal move 596 # normal move
590 $self->{button_pass}->set (label => "Pass", visible => 1, sensitive => 1); 597 $self->{button_pass}->set (label => "Pass", visible => 1, sensitive => 1);
591 $self->{board}->set (cursor => sub { 598 $self->{board}->set (cursor => sub {
592 # if is_valid_move oder so#TODO# 599 $self->{cur_board}
593 $_[0] & (MARK_B | MARK_W) 600 && $self->{cur_board}->is_valid_move ($self->{colour}, $_[1], $_[2],
594 ? $_[0] 601 $self->{rules}{ruleset} == RULESET_NEW_ZEALAND)
595 : $_[0] | MARK_GRAYED | ($self->{colour} == COLOUR_WHITE ? MARK_W : MARK_B); 602 ? $_[0] | MARK_GRAYED | ($self->{colour} == COLOUR_WHITE ? MARK_W : MARK_B)
603 : $_[0];
596 }); 604 });
597 $self->{board_click} = sub { 605 $self->{board_click} = sub {
606 return unless
607 $self->{cur_board}->is_valid_move ($self->{colour}, $_[1], $_[2],
608 $self->{rules}{ruleset} == RULESET_NEW_ZEALAND);
598 $self->send (game_move => channel => $self->{channel}, x => $_[0], y => $_[1]); 609 $self->send (game_move => channel => $self->{channel}, x => $_[0], y => $_[1]);
599 $self->{board}->set (cursor => undef); 610 $self->{board}->set (cursor => undef);
600 delete $self->{board_click}; 611 delete $self->{board_click};
601 $self->{button_pass}->sensitive (0); 612 $self->{button_pass}->sensitive (0);
602 }; 613 };
613 } 624 }
614} 625}
615 626
616sub update_board { 627sub update_board {
617 my ($self) = @_; 628 my ($self) = @_;
629
618 return unless $self->{path}; 630 return unless $self->{path};
619
620 $self->{board_label}->set_text ("Move " . ($self->{showmove} - 1));
621
622 $self->{cur_board} = new KGS::Game::Board $self->{size};
623 $self->{cur_board}->interpret_path ([@{$self->{path}}[0 .. $self->{showmove} - 1]]);
624
625 $self->{userpanel}[$_]->set_captures ($self->{cur_board}{captures}[$_])
626 for COLOUR_WHITE, COLOUR_BLACK;
627 631
628 if ($self->{rules}{ruleset} == RULESET_JAPANESE) { 632 if ($self->{rules}{ruleset} == RULESET_JAPANESE) {
629 if ($self->{curnode}{move} == 0) { 633 if ($self->{curnode}{move} == 0) {
630 $self->{whosemove} = $self->{handicap} ? COLOUR_WHITE : COLOUR_BLACK; 634 $self->{whosemove} = $self->{handicap} ? COLOUR_WHITE : COLOUR_BLACK;
631 } else { 635 } else {
640 } else { 644 } else {
641 $self->{whosemove} = 1 - $self->{cur_board}{last}; 645 $self->{whosemove} = 1 - $self->{cur_board}{last};
642 } 646 }
643 } 647 }
644 648
649 $self->{board_label}->set_text ("Move " . ($self->{showmove} - 1));
650
651 $self->{cur_board} = new KGS::Game::Board $self->{size};
652 $self->{cur_board}->interpret_path ([@{$self->{path}}[0 .. $self->{showmove} - 1]]);
653
654 $self->update_cursor;
655
656 $self->{userpanel}[$_]->set_captures ($self->{cur_board}{captures}[$_])
657 for COLOUR_WHITE, COLOUR_BLACK;
658
645 my $start_time = $self->{rules}{time}; 659 my $start_time = $self->{rules}{time};
646 660
647 if ($self->{showmove} == @{$self->{path}}) { 661 if ($self->{showmove} == @{$self->{path}}) {
648 $self->{timers} = [ 662 $self->{timers} = [
649 [$self->{lastmove_time}, @{$self->{cur_board}{timer}[0]}], 663 [$self->{lastmove_time}, @{$self->{cur_board}{timer}[0]}],
668 . "Black: $self->{cur_board}{score}[COLOUR_BLACK]" 682 . "Black: $self->{cur_board}{score}[COLOUR_BLACK]"
669 . "</score>"); 683 . "</score>");
670 } elsif ($self->{score_inlay}) { 684 } elsif ($self->{score_inlay}) {
671 (delete $self->{score_inlay})->clear; 685 (delete $self->{score_inlay})->clear;
672 } 686 }
673
674 $self->update_cursor;
675} 687}
676 688
677sub event_update_tree { 689sub event_update_tree {
678 my ($self) = @_; 690 my ($self) = @_;
679 691

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines