… | |
… | |
423 | ::state $self->{gamelist}, "room::gamelist", $self->{name}, clist_column_widths => [20, 120, 120, 120]; |
423 | ::state $self->{gamelist}, "room::gamelist", $self->{name}, clist_column_widths => [20, 120, 120, 120]; |
424 | |
424 | |
425 | $self->{gamelist}->signal_connect(select_row => sub { |
425 | $self->{gamelist}->signal_connect(select_row => sub { |
426 | my $game = $self->{gamelist}->get_row_data($_[1]) |
426 | my $game = $self->{gamelist}->get_row_data($_[1]) |
427 | or return; |
427 | or return; |
428 | $self->{game}{$game->{channel}} ||= new game %$game, conn => $self->{conn}; |
428 | $self->{game}{$game->{channel}} ||= new game %$game, conn => $self->{conn}, room => $self; |
429 | $self->{game}{$game->{channel}}->join; |
429 | $self->{game}{$game->{channel}}->join; |
430 | $self->{gamelist}->unselect_all; |
430 | $self->{gamelist}->unselect_all; |
431 | }); |
431 | }); |
432 | |
432 | |
433 | $vpane->add(my $vbox = new Gtk::VBox); |
433 | $vpane->add(my $vbox = new Gtk::VBox); |
… | |
… | |
465 | my ($self) = @_; |
465 | my ($self) = @_; |
466 | $self->SUPER::part; |
466 | $self->SUPER::part; |
467 | |
467 | |
468 | delete $::config->{rooms}{$self->{channel}}; |
468 | delete $::config->{rooms}{$self->{channel}}; |
469 | $self->{window}->hide_all; |
469 | $self->{window}->hide_all; |
470 | $self->event_update_users; |
|
|
471 | $self->event_update_games; |
|
|
472 | } |
470 | } |
473 | |
471 | |
474 | sub inject_msg_room { |
472 | sub inject_msg_room { |
475 | my ($self, $msg) = @_; |
473 | my ($self, $msg) = @_; |
476 | |
474 | |
… | |
… | |
937 | my ($ox, $oy, $s) = @{$self->{offsets}}; |
935 | my ($ox, $oy, $s) = @{$self->{offsets}}; |
938 | |
936 | |
939 | $self->{pixbuf}->render_to_drawable ($self->{canvas}->window, $self->{canvas}->style->white_gc, |
937 | $self->{pixbuf}->render_to_drawable ($self->{canvas}->window, $self->{canvas}->style->white_gc, |
940 | $x, $y, $x + $ox, $y + $oy, $w, $h); |
938 | $x, $y, $x + $ox, $y + $oy, $w, $h); |
941 | $self->{canvas}->window->draw_rectangle ($self->{canvas}->style->black_gc, 0, |
939 | $self->{canvas}->window->draw_rectangle ($self->{canvas}->style->black_gc, 0, |
942 | $x + $ox, $y + $oy, $w, $h) if $::DEBUG_EXPOSE; |
940 | $x + $ox - 1, $y + $oy - 1, $w + 2, $h + 2) if $::DEBUG_EXPOSE; |
943 | |
941 | |
944 | #$self->{canvas}->window->draw_pixmap ( |
942 | #$self->{canvas}->window->draw_pixmap ( |
945 | # $self->{canvas}->style->white_gc, |
943 | # $self->{canvas}->style->white_gc, |
946 | # $self->{pixmap}, |
944 | # $self->{pixmap}, |
947 | # $x - $ox, $y - $oy, $x, $y, $w, $h, |
945 | # $x - $ox, $y - $oy, $x, $y, $w, $h, |
… | |
… | |
977 | if ($self->{moveadj}->value >= $move - 1 || !$self->{moveadj}->value) { |
975 | if ($self->{moveadj}->value >= $move - 1 || !$self->{moveadj}->value) { |
978 | $self->{moveadj}->set_value ($move); |
976 | $self->{moveadj}->set_value ($move); |
979 | } |
977 | } |
980 | } |
978 | } |
981 | |
979 | |
|
|
980 | sub event_part { |
|
|
981 | my ($self) = @_; |
|
|
982 | $self->SUPER::event_part; |
|
|
983 | $self->{window}->destroy; # hmm.. why does this keep the object alive? puzzling.. ahh.. callback ;) |
|
|
984 | delete $self->{room}{game}{$self->{channel}}; |
|
|
985 | } |
|
|
986 | |
982 | sub event_move { |
987 | sub event_move { |
983 | ::play_sound "move"; |
988 | my ($self, $pass) = @_; |
|
|
989 | ::play_sound $pass ? "pass" : "move"; |
|
|
990 | } |
|
|
991 | |
|
|
992 | sub DESTROY {#d# |
|
|
993 | warn "DESTROY(@_)\n";#d# |
984 | } |
994 | } |
985 | |
995 | |
986 | 1; |
996 | 1; |
987 | |
997 | |
988 | |
998 | |