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.30 by pcg, Sun Jun 1 20:12:13 2003 UTC vs.
Revision 1.32 by pcg, Mon Jun 2 14:05:10 2003 UTC

142 142
143 $vbox->add ($self->{name} = new Gtk2::Label $self->{name}); 143 $vbox->add ($self->{name} = new Gtk2::Label $self->{name});
144 $vbox->add ($self->{info} = new Gtk2::Label ""); 144 $vbox->add ($self->{info} = new Gtk2::Label "");
145 $vbox->add (($self->{clock} = new game::goclock)->widget); 145 $vbox->add (($self->{clock} = new game::goclock)->widget);
146 146
147 $vbox->add ($self->{imagebox} = new Gtk2::VBox);
148
147 $self; 149 $self;
148} 150}
149 151
150sub set_rules { 152sub set_rules {
151 my ($self, $rules) = @_; 153 my ($self, $rules) = @_;
152 154
153 if ($self->{name}->get_text ne $rules->{player}[$self->{colour}]) { 155 if ($self->{name}->get_text ne $rules->{player}[$self->{colour}]) {
154 $self->{name}->set_text ($rules->{player}[$self->{colour}]); 156 $self->{name}->set_text ($rules->{player}[$self->{colour}]);
155 157
158 $self->{imagebox}->remove ($_) for $self->{imagebox}->get_children;
159 $self->{imagebox}->add (gtk::image_from_data undef);
160
156 # the big picture... 161 # the big picture...
157 appwin::userpic ($rules->{player}[$self->{colour}], sub { 162 appwin::userpic ($rules->{player}[$self->{colour}], sub {
163 if ($_[0]) {
164 $self->{imagebox}->remove ($_) for $self->{imagebox}->get_children;
158 $self->{widget}->add (gtk::image_from_data $_[0]) if $_[0]; 165 $self->{imagebox}->add (gtk::image_from_data $_[0]);
159 $self->{widget}->show_all; 166 $self->{imagebox}->show_all;
160 # undef => show sth. funny 167 }
161 }); 168 });
162 } 169 }
163 170
164 $self->{clock}->set_rules (@{$rules->{rules}}{qw(timesys time interval count)}); 171 $self->{clock}->set_rules (@{$rules->{rules}}{qw(timesys time interval count)});
165} 172}
204 }); 211 });
205 212
206 $self->{window}->add($self->{hpane} = new Gtk2::HPaned); 213 $self->{window}->add($self->{hpane} = new Gtk2::HPaned);
207 gtk::state $self->{hpane}, "game::hpane", undef, position => 500; 214 gtk::state $self->{hpane}, "game::hpane", undef, position => 500;
208 215
216 $self->{hpane}->pack1(($self->{left} = new Gtk2::VBox), 1, 1);
217
218 $self->{boardbox} = new Gtk2::VBox;
219
209 $self->{hpane}->pack1((my $vbox = new Gtk2::VBox), 1, 1); 220 $self->{hpane}->pack1((my $vbox = new Gtk2::VBox), 1, 1);
210 221
222 # challenge
223
224 $self->{challenge} = new challenge channel => $self->{channel};
225
226 # board box (aspect/canvas)
227
211 $vbox->pack_start((my $frame = new Gtk2::Frame), 0, 1, 0); 228 $self->{boardbox}->pack_start((my $frame = new Gtk2::Frame), 0, 1, 0);
212 229
213 { 230 {
214 $frame->add(my $vbox = new Gtk2::VBox); 231 $frame->add(my $vbox = new Gtk2::VBox);
215 $vbox->add($self->{title} = new Gtk2::Label $title); 232 $vbox->add($self->{title} = new Gtk2::Label $title);
216 233
220 $scale->set_draw_value (0); 237 $scale->set_draw_value (0);
221 $scale->set_digits (0); 238 $scale->set_digits (0);
222 239
223 $self->{moveadj}->signal_connect (value_changed => sub { $self->update_board }); 240 $self->{moveadj}->signal_connect (value_changed => sub { $self->update_board });
224 } 241 }
225 242
226 $vbox->pack_start((my $aspect_frame = new Gtk2::AspectFrame "", 0.5, 0.5, 1, 0), 1, 1, 0); 243 $self->{boardbox}->pack_start((my $aspect_frame = new Gtk2::AspectFrame "", 0.5, 0.5, 1, 0), 1, 1, 0);
227 $aspect_frame->set (border_width => 0, shadow_type => 'none', label_xalign => 0.5); 244 $aspect_frame->set (border_width => 0, shadow_type => 'none', label_xalign => 0.5);
228 $self->{board_label} = $aspect_frame->get_label_widget; 245 $self->{board_label} = $aspect_frame->get_label_widget;
229 246
230 $aspect_frame->add($self->{canvas} = new Gtk2::DrawingArea); 247 $aspect_frame->add($self->{canvas} = new Gtk2::DrawingArea);
231 $self->{canvas}->double_buffered (0) if $::config->{conserve_memory}; 248 $self->{canvas}->double_buffered (0) if $::config->{conserve_memory};
257 my $text = $self->{entry}->get_text; 274 my $text = $self->{entry}->get_text;
258 $self->say($text) if $text =~ /\S/; 275 $self->say($text) if $text =~ /\S/;
259 $self->{entry}->set_text(""); 276 $self->{entry}->set_text("");
260 }); 277 });
261 278
279 $self->event_update_game;
262 $self; 280 $self;
263} 281}
264 282
265sub event_update_users { 283sub event_update_users {
266 my ($self, $add, $update, $remove) = @_; 284 my ($self, $add, $update, $remove) = @_;
692 } 710 }
693 711
694 $self->{text}->append_text ($text); 712 $self->{text}->append_text ($text);
695} 713}
696 714
715sub event_join {
716 my ($self) = @_;
717 $self->SUPER::event_join;
718}
719
697sub event_part { 720sub event_part {
698 my ($self) = @_; 721 my ($self) = @_;
699 $self->SUPER::event_part; 722 $self->SUPER::event_part;
700} 723}
701 724
705} 728}
706 729
707sub event_update_game { 730sub event_update_game {
708 my ($self) = @_; 731 my ($self) = @_;
709 $self->SUPER::event_update_game; 732 $self->SUPER::event_update_game;
710 warn "UPDATE GAME";#d# 733 warn "GAME UPDATE ".join (":", %$self);
734 warn "SAVED ".$self->is_saved;
735 warn "SCORED ".$self->is_scored;
736 warn "ADJ ".$self->is_adjourned;
737 warn "VALID ".$self->is_valid;
738 warn "MOVES ".$self->moves;
739 warn "TYPE ".$self->type;
740
741 $self->{left}->remove ($_) for $self->{left}->get_children;
742 if ($self->is_valid) {
743 $self->{left}->add ($self->{boardbox});
744 (delete $self->{challenge})->destroy if $self->{challenge};
745 } else {
746 $self->{left}->add ($self->{challenge}->widget);
747 }
748 $self->{left}->show_all;
711} 749}
712 750
713sub destroy { 751sub destroy {
714 my ($self) = @_; 752 my ($self) = @_;
715 (delete $self->{userpanel}[WHITE])->destroy if $self->{userpanel}[WHITE]; 753 (delete $self->{userpanel}[WHITE])->destroy if $self->{userpanel}[WHITE];

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines