… | |
… | |
204 | }); |
204 | }); |
205 | |
205 | |
206 | $self->{window}->add($self->{hpane} = new Gtk2::HPaned); |
206 | $self->{window}->add($self->{hpane} = new Gtk2::HPaned); |
207 | gtk::state $self->{hpane}, "game::hpane", undef, position => 500; |
207 | gtk::state $self->{hpane}, "game::hpane", undef, position => 500; |
208 | |
208 | |
|
|
209 | $self->{hpane}->pack1(($self->{left} = new Gtk2::VBox), 1, 1); |
|
|
210 | |
|
|
211 | $self->{boardbox} = new Gtk2::VBox; |
|
|
212 | |
209 | $self->{hpane}->pack1((my $vbox = new Gtk2::VBox), 1, 1); |
213 | $self->{hpane}->pack1((my $vbox = new Gtk2::VBox), 1, 1); |
210 | |
214 | |
|
|
215 | # challenge |
|
|
216 | |
|
|
217 | $self->{challenge} = new challenge channel => $self->{channel}; |
|
|
218 | |
|
|
219 | # board box (aspect/canvas) |
|
|
220 | |
211 | $vbox->pack_start((my $frame = new Gtk2::Frame), 0, 1, 0); |
221 | $self->{boardbox}->pack_start((my $frame = new Gtk2::Frame), 0, 1, 0); |
212 | |
222 | |
213 | { |
223 | { |
214 | $frame->add(my $vbox = new Gtk2::VBox); |
224 | $frame->add(my $vbox = new Gtk2::VBox); |
215 | $vbox->add($self->{title} = new Gtk2::Label $title); |
225 | $vbox->add($self->{title} = new Gtk2::Label $title); |
216 | |
226 | |
… | |
… | |
220 | $scale->set_draw_value (0); |
230 | $scale->set_draw_value (0); |
221 | $scale->set_digits (0); |
231 | $scale->set_digits (0); |
222 | |
232 | |
223 | $self->{moveadj}->signal_connect (value_changed => sub { $self->update_board }); |
233 | $self->{moveadj}->signal_connect (value_changed => sub { $self->update_board }); |
224 | } |
234 | } |
225 | |
235 | |
226 | $vbox->pack_start((my $aspect_frame = new Gtk2::AspectFrame "", 0.5, 0.5, 1, 0), 1, 1, 0); |
236 | $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); |
237 | $aspect_frame->set (border_width => 0, shadow_type => 'none', label_xalign => 0.5); |
228 | $self->{board_label} = $aspect_frame->get_label_widget; |
238 | $self->{board_label} = $aspect_frame->get_label_widget; |
229 | |
239 | |
230 | $aspect_frame->add($self->{canvas} = new Gtk2::DrawingArea); |
240 | $aspect_frame->add($self->{canvas} = new Gtk2::DrawingArea); |
231 | $self->{canvas}->double_buffered (0) if $::config->{conserve_memory}; |
241 | $self->{canvas}->double_buffered (0) if $::config->{conserve_memory}; |
… | |
… | |
257 | my $text = $self->{entry}->get_text; |
267 | my $text = $self->{entry}->get_text; |
258 | $self->say($text) if $text =~ /\S/; |
268 | $self->say($text) if $text =~ /\S/; |
259 | $self->{entry}->set_text(""); |
269 | $self->{entry}->set_text(""); |
260 | }); |
270 | }); |
261 | |
271 | |
|
|
272 | $self->event_update_game; |
262 | $self; |
273 | $self; |
263 | } |
274 | } |
264 | |
275 | |
265 | sub event_update_users { |
276 | sub event_update_users { |
266 | my ($self, $add, $update, $remove) = @_; |
277 | my ($self, $add, $update, $remove) = @_; |
… | |
… | |
692 | } |
703 | } |
693 | |
704 | |
694 | $self->{text}->append_text ($text); |
705 | $self->{text}->append_text ($text); |
695 | } |
706 | } |
696 | |
707 | |
|
|
708 | sub event_join { |
|
|
709 | my ($self) = @_; |
|
|
710 | $self->SUPER::event_join; |
|
|
711 | } |
|
|
712 | |
697 | sub event_part { |
713 | sub event_part { |
698 | my ($self) = @_; |
714 | my ($self) = @_; |
699 | $self->SUPER::event_part; |
715 | $self->SUPER::event_part; |
700 | } |
716 | } |
701 | |
717 | |
… | |
… | |
705 | } |
721 | } |
706 | |
722 | |
707 | sub event_update_game { |
723 | sub event_update_game { |
708 | my ($self) = @_; |
724 | my ($self) = @_; |
709 | $self->SUPER::event_update_game; |
725 | $self->SUPER::event_update_game; |
710 | warn "UPDATE GAME";#d# |
726 | warn "GAME UPDATE ".join (":", %$self); |
|
|
727 | warn "SAVED ".$self->is_saved; |
|
|
728 | warn "SCORED ".$self->is_scored; |
|
|
729 | warn "ADJ ".$self->is_adjourned; |
|
|
730 | warn "VALID ".$self->is_valid; |
|
|
731 | warn "MOVES ".$self->moves; |
|
|
732 | warn "TYPE ".$self->type; |
|
|
733 | |
|
|
734 | $self->{left}->remove ($_) for $self->{left}->get_children; |
|
|
735 | if ($self->is_valid) { |
|
|
736 | $self->{left}->add ($self->{boardbox}); |
|
|
737 | (delete $self->{challenge})->destroy if $self->{challenge}; |
|
|
738 | } else { |
|
|
739 | $self->{left}->add ($self->{challenge}); |
|
|
740 | } |
|
|
741 | $self->{left}->show_all; |
711 | } |
742 | } |
712 | |
743 | |
713 | sub destroy { |
744 | sub destroy { |
714 | my ($self) = @_; |
745 | my ($self) = @_; |
715 | (delete $self->{userpanel}[WHITE])->destroy if $self->{userpanel}[WHITE]; |
746 | (delete $self->{userpanel}[WHITE])->destroy if $self->{userpanel}[WHITE]; |