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.25 by pcg, Sun Jun 1 11:02:41 2003 UTC vs.
Revision 1.26 by pcg, Sun Jun 1 13:09:47 2003 UTC

121 121
122sub new { 122sub new {
123 my $class = shift; 123 my $class = shift;
124 my $self = $class->SUPER::new(@_); 124 my $self = $class->SUPER::new(@_);
125 125
126 $self->{widget} = new Gtk2::VBox; 126 $self->{widget} = new Gtk2::HBox;
127 127
128 $self->{widget}->add (my $vbox = new Gtk2::VBox);
129
128 $self->{widget}->add ($self->{name} = new Gtk2::Label $self->{name}); 130 $vbox->add ($self->{name} = new Gtk2::Label $self->{name});
129 $self->{widget}->add ($self->{info} = new Gtk2::Label ""); 131 $vbox->add ($self->{info} = new Gtk2::Label "");
130 $self->{widget}->add (($self->{clock} = new game::goclock)->widget); 132 $vbox->add (($self->{clock} = new game::goclock)->widget);
131 133
132 $self; 134 $self;
133} 135}
134 136
135sub set_rules { 137sub set_rules {
136 my ($self, $rules) = @_; 138 my ($self, $rules) = @_;
137 139
140 if ($self->{name}->get_text ne $rules->{player}[$self->{colour}]) {
138 $self->{name}->set_text ($rules->{player}[$self->{colour}]); 141 $self->{name}->set_text ($rules->{player}[$self->{colour}]);
142
143 # the big picture...
144 appwin::userpic ($rules->{player}[$self->{colour}], sub {
145 $self->{widget}->add (gtk::image_from_data $_[0]) if $_[0];
146 $self->{widget}->show_all;
147 # undef => show sth. funny
148 });
149 }
150
139 $self->{clock}->set_rules (@{$rules->{rules}}{qw(timesys time interval count)}); 151 $self->{clock}->set_rules (@{$rules->{rules}}{qw(timesys time interval count)});
140} 152}
141 153
142sub set_state { 154sub set_state {
143 my ($self, $captures, $timer, $running) = @_; 155 my ($self, $captures, $timer, $running) = @_;
218 $sw->add(($self->{userlist} = new userlist)->widget); 230 $sw->add(($self->{userlist} = new userlist)->widget);
219 231
220 $self->{vpane}->add(my $vbox = new Gtk2::VBox); 232 $self->{vpane}->add(my $vbox = new Gtk2::VBox);
221 233
222 $vbox->pack_start((my $hbox = new Gtk2::HBox 1), 0, 1, 0); 234 $vbox->pack_start((my $hbox = new Gtk2::HBox 1), 0, 1, 0);
223 $hbox->add (($self->{user0} = new game::userpanel colour => WHITE)->widget); 235 $hbox->add (($self->{userpanel}[WHITE] = new game::userpanel colour => WHITE)->widget);
224 $hbox->add (($self->{user1} = new game::userpanel colour => BLACK)->widget); 236 $hbox->add (($self->{userpanel}[BLACK] = new game::userpanel colour => BLACK)->widget);
225 237
226 $vbox->pack_start((my $sw = new Gtk2::ScrolledWindow), 1, 1, 0); 238 $vbox->pack_start((my $sw = new Gtk2::ScrolledWindow), 1, 1, 0);
227 $sw->set_policy("never", "always"); 239 $sw->set_policy("never", "always");
228 240
229 $sw->add(($self->{text} = new gtk::text)->widget); 241 $sw->add(($self->{text} = new gtk::text)->widget);
592 $self->{board_label}->set_text ("Move $move"); 604 $self->{board_label}->set_text ("Move $move");
593 605
594 $self->{board} = new KGS::Game::Board $self->{size}; 606 $self->{board} = new KGS::Game::Board $self->{size};
595 $self->{board}->interpret_path ([@{$self->{path}}[0 .. $move - 1]]); 607 $self->{board}->interpret_path ([@{$self->{path}}[0 .. $move - 1]]);
596 608
597 $self->{user0}->set_state ($self->{board}{captures}[0], 609 $self->{userpanel}[WHITE]->set_state ($self->{board}{captures}[WHITE],
598 $self->{board}{timer}[0], 610 $self->{board}{timer}[WHITE],
599 $running && $self->{board}{last} == WHITE);
600 $self->{user1}->set_state ($self->{board}{captures}[1],
601 $self->{board}{timer}[1],
602 $running && $self->{board}{last} == BLACK); 611 $running && $self->{board}{last} == BLACK);
612 $self->{userpanel}[BLACK]->set_state ($self->{board}{captures}[BLACK],
613 $self->{board}{timer}[BLACK],
614 $running && $self->{board}{last} == WHITE);
603 615
604 $self->redraw ($self->repaint_board); 616 $self->redraw ($self->repaint_board);
605 617
606 $self->{text}->set_text(KGS::Listener::Debug::dumpval([$self->{board}{time},$self->{board}{captures}]). $self->{board}{comment}); 618 $self->{text}->set_text ($self->{board}{comment});
607} 619}
608 620
609sub event_update_tree { 621sub event_update_tree {
610 my ($self) = @_; 622 my ($self) = @_;
611 623
612 $self->{path} = $self->get_path; 624 $self->{path} = $self->get_path;
613 $self->{user0}->set_rules ($self->{path}[0]); 625 $self->{userpanel}[WHITE]->set_rules ($self->{path}[0]); # should be onload only
614 $self->{user1}->set_rules ($self->{path}[0]); 626 $self->{userpanel}[BLACK]->set_rules ($self->{path}[0]); # should be onload only
615 627
616 $self->{moveadj}->value_changed if $self->{moveadj}; 628 $self->{moveadj}->value_changed if $self->{moveadj};
617} 629}
618 630
619sub event_part { 631sub event_part {
632 warn "UPDATE GAME";#d# 644 warn "UPDATE GAME";#d#
633} 645}
634 646
635sub destroy { 647sub destroy {
636 my ($self) = @_; 648 my ($self) = @_;
649 (delete $self->{userpanel}[WHITE])->destroy if $self->{userpanel}[WHITE];
650 (delete $self->{userpanel}[BLACK])->destroy if $self->{userpanel}[BLACK];
637 $self->SUPER::destroy; 651 $self->SUPER::destroy;
638 delete $appwin::gamelist->{game}{$self->{channel}}; 652 delete $appwin::gamelist->{game}{$self->{channel}};
639} 653}
640 654
6411; 6551;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines