… | |
… | |
298 | |
298 | |
299 | $self->msg(list_rooms => group => $_) for 0..5; # fetch all room names (should not!) |
299 | $self->msg(list_rooms => group => $_) for 0..5; # fetch all room names (should not!) |
300 | $self->{window}->show_all; |
300 | $self->{window}->show_all; |
301 | } |
301 | } |
302 | |
302 | |
303 | sub event_update { |
303 | sub event_update_rooms { |
304 | my ($self) = @_; |
304 | my ($self) = @_; |
305 | |
305 | |
306 | $self->{event_update} ||= Gtk->timeout_add(200, sub { |
306 | $self->{event_update} ||= Gtk->timeout_add(200, sub { |
307 | my $l = $self->{roomlist}; |
307 | my $l = $self->{roomlist}; |
308 | |
308 | |
… | |
… | |
385 | ::state $self->{userlist}, "room::userlist", $self->{name}, clist_column_widths => [120, 30]; |
385 | ::state $self->{userlist}, "room::userlist", $self->{name}, clist_column_widths => [120, 30]; |
386 | |
386 | |
387 | $self; |
387 | $self; |
388 | } |
388 | } |
389 | |
389 | |
390 | sub event_update { |
390 | sub event_update_users { |
391 | my ($self) = @_; |
391 | my ($self) = @_; |
392 | |
392 | |
393 | $self->{event_update} ||= Gtk->timeout_add(200, sub { |
393 | $self->{event_update} ||= Gtk->timeout_add(200, sub { |
394 | my $l = $self->{userlist}; |
394 | my $l = $self->{userlist}; |
395 | |
395 | |
… | |
… | |
475 | ############################################################################# |
475 | ############################################################################# |
476 | |
476 | |
477 | package game; |
477 | package game; |
478 | |
478 | |
479 | use KGS::Constants; |
479 | use KGS::Constants; |
|
|
480 | use KGS::Game::Board; |
480 | |
481 | |
481 | use base KGS::Listener::Game; |
482 | use base KGS::Listener::Game; |
482 | use base KGS::Game; |
483 | use base KGS::Game; |
483 | |
484 | |
484 | sub new { |
485 | sub new { |
… | |
… | |
494 | $self->{window}->signal_connect(delete_event => sub { $self->part; 1 }); |
495 | $self->{window}->signal_connect(delete_event => sub { $self->part; 1 }); |
495 | |
496 | |
496 | $self->{window}->add(my $hpane = new Gtk::HPaned); |
497 | $self->{window}->add(my $hpane = new Gtk::HPaned); |
497 | ::state $hpane, "game::hpane", undef, hpane_position => 500; |
498 | ::state $hpane, "game::hpane", undef, hpane_position => 500; |
498 | |
499 | |
499 | $::config{aa} = 1; |
500 | $::config{aa} = 0; |
500 | $self->{canvas} = $::config{aa} ? new_aa Gnome::Canvas : new Gnome::Canvas; |
501 | $self->{canvas} = $::config{aa} ? new_aa Gnome::Canvas : new Gnome::Canvas; |
501 | $hpane->add($self->{canvas}); |
502 | $hpane->add($self->{canvas}); |
502 | |
503 | |
503 | { |
504 | { |
504 | my $line_colour = $::config{line_colour} || "darkbrown"; |
505 | my $line_colour = $::config{line_colour} || "darkbrown"; |
… | |
… | |
635 | }); |
636 | }); |
636 | |
637 | |
637 | $self; |
638 | $self; |
638 | } |
639 | } |
639 | |
640 | |
640 | sub event_update { |
641 | sub event_update_users { |
641 | my ($self) = @_; |
642 | my ($self) = @_; |
642 | |
643 | |
643 | $self->{event_update} ||= Gtk->timeout_add(200, sub { |
644 | room::event_update_users $self; |
644 | my $l = $self->{userlist}; |
|
|
645 | |
|
|
646 | $l->freeze; |
|
|
647 | my $pos = $l->get_vadjustment->get_value; |
|
|
648 | $l->clear; |
|
|
649 | |
|
|
650 | my $row = 0; |
|
|
651 | for (values %{$self->{users}}) { |
|
|
652 | $l->append($_->{name}); |
|
|
653 | $l->set_row_data($row++, $_); |
|
|
654 | } |
|
|
655 | $l->sort; |
|
|
656 | $l->get_vadjustment->set_value($pos); |
|
|
657 | $l->thaw; |
|
|
658 | |
|
|
659 | delete $self->{event_update}; |
|
|
660 | 0; |
|
|
661 | }); |
|
|
662 | } |
645 | } |
663 | |
646 | |
664 | sub join { |
647 | sub join { |
665 | my ($self) = @_; |
648 | my ($self) = @_; |
666 | $self->SUPER::join; |
649 | $self->SUPER::join; |
… | |
… | |
679 | sub event_update_tree { |
662 | sub event_update_tree { |
680 | my ($self) = @_; |
663 | my ($self) = @_; |
681 | |
664 | |
682 | my $board = new KGS::Game::Board $self->{size}; |
665 | my $board = new KGS::Game::Board $self->{size}; |
683 | $board->interpret_path ($self->get_path); |
666 | $board->interpret_path ($self->get_path); |
684 | |
|
|
685 | # if (not defined $self->{board_pm}) { |
|
|
686 | # $self->{board_pm} = new Gtk::Gdk::Pixmap ($self->{board}->window, 100, 100, -1); |
|
|
687 | # $self->{board_pm}->draw_rectangle($self->{board}->style->white_gc, 1, 0, 0, 100, 100); |
|
|
688 | # } |
|
|
689 | # my $red = $self->{board}->window->get_colormap->color_alloc( { red => 65000, green => 0, blue => 0 } ); |
|
|
690 | # my $red_gc = new Gtk::Gdk::GC ( $self->{board}->window ); |
|
|
691 | # $red_gc->set_foreground( $red ); |
|
|
692 | # |
|
|
693 | # my $px = $self->{board_pm}; |
|
|
694 | |
667 | |
695 | for my $x (0 .. $self->{size} - 1) { |
668 | for my $x (0 .. $self->{size} - 1) { |
696 | for my $y (0 .. $self->{size} - 1) { |
669 | for my $y (0 .. $self->{size} - 1) { |
697 | my $v = $board->{board}[$x][$y]; |
670 | my $v = $board->{board}[$x][$y]; |
698 | |
671 | |
… | |
… | |
702 | $v & MARK_W |
675 | $v & MARK_W |
703 | ? $self->{board_gfx}->{stones}->[$x][$y][1]->show |
676 | ? $self->{board_gfx}->{stones}->[$x][$y][1]->show |
704 | : $self->{board_gfx}->{stones}->[$x][$y][1]->hide; |
677 | : $self->{board_gfx}->{stones}->[$x][$y][1]->hide; |
705 | } |
678 | } |
706 | } |
679 | } |
|
|
680 | |
|
|
681 | $self->{text}->backward_delete($self->{text}->get_length); |
|
|
682 | $self->{text}->insert(undef, undef, undef, $board->{comment}.PApp::Util::dumpval([$board->{time},$board->{captures}])); |
707 | } |
683 | } |
708 | |
684 | |
709 | 1; |
685 | 1; |
710 | |
686 | |
711 | |
687 | |