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.70 by pcg, Tue Jul 22 21:44:00 2003 UTC vs.
Revision 1.74 by pcg, Wed Jul 30 00:32:42 2003 UTC

186package game; 186package game;
187 187
188use KGS::Constants; 188use KGS::Constants;
189use KGS::Game::Board; 189use KGS::Game::Board;
190 190
191use Gtk2::GoBoard;
192
191use base KGS::Listener::Game; 193use base KGS::Listener::Game;
192use base KGS::Game; 194use base KGS::Game;
193 195
194use base gtk::widget; 196use base gtk::widget;
195 197
263 265
264 $vbox->pack_start((my $hbox = new Gtk2::HBox 1), 0, 1, 0); 266 $vbox->pack_start((my $hbox = new Gtk2::HBox 1), 0, 1, 0);
265 $hbox->add (($self->{userpanel}[WHITE] = new game::userpanel colour => WHITE)->widget); 267 $hbox->add (($self->{userpanel}[WHITE] = new game::userpanel colour => WHITE)->widget);
266 $hbox->add (($self->{userpanel}[BLACK] = new game::userpanel colour => BLACK)->widget); 268 $hbox->add (($self->{userpanel}[BLACK] = new game::userpanel colour => BLACK)->widget);
267 269
268 $vbox->pack_start(($self->{text} = new gtk::text)->widget, 1, 1, 0); 270 $vbox->pack_start(($self->{chat} = new chat), 1, 1, 0);
269 271
270 $vbox->pack_start(($self->{entry} = new Gtk2::Entry), 0, 1, 0);
271 $self->{entry}->signal_connect(activate => sub { 272 $self->{chat}->signal_connect(command => sub {
272 my $text = $self->{entry}->get_text; 273 my ($chat, $cmd, $arg) = @_;
273 $self->say($text) if $text =~ /\S/; 274 if ($cmd eq "rsave") {
274 $self->{entry}->set_text(""); 275 Storable::nstore { tree => $self->{tree}, curnode => $self->{curnode}, move => $self->{move} }, $arg;#d#
276 } else {
277 $self->{app}->do_command ($chat, $cmd, $arg, userlist => $self->{userlist}, game => $self);
278 }
275 }); 279 });
276 280
277 $self->event_update_game; 281 $self->event_update_game;
278 $self; 282 $self;
279} 283}
289 $important{$self->{user1}{name}}++; 293 $important{$self->{user1}{name}}++;
290 $important{$self->{user2}{name}}++; 294 $important{$self->{user2}{name}}++;
291 $important{$self->{user3}{name}}++; 295 $important{$self->{user3}{name}}++;
292 296
293 if (my @users = grep $important{$_->{name}}, @$add) { 297 if (my @users = grep $important{$_->{name}}, @$add) {
294 $self->{text}->append_text ("\n<header>Joins:</header>"); 298 $self->{chat}->append_text ("\n<header>Joins:</header>");
295 $self->{text}->append_text (" <user>" . $_->as_string . "</user>") for @users; 299 $self->{chat}->append_text (" <user>" . $_->as_string . "</user>") for @users;
296 } 300 }
297 if (my @users = grep $important{$_->{name}}, @$remove) { 301 if (my @users = grep $important{$_->{name}}, @$remove) {
298 $self->{text}->append_text ("\n<header>Parts:</header>"); 302 $self->{chat}->append_text ("\n<header>Parts:</header>");
299 $self->{text}->append_text (" <user>" . $_->as_string . "</user>") for @users; 303 $self->{chat}->append_text (" <user>" . $_->as_string . "</user>") for @users;
300 } 304 }
301 305
302} 306}
303 307
304sub join { 308sub join {
394 }sgexi; 398 }sgexi;
395 399
396 $text .= $_; 400 $text .= $_;
397 } 401 }
398 402
399 $self->{text}->append_text ($text); 403 $self->{chat}->append_text ($text);
400} 404}
401 405
402sub event_join { 406sub event_join {
403 my ($self) = @_; 407 my ($self) = @_;
404 $self->SUPER::event_join; 408 $self->SUPER::event_join;
416} 420}
417 421
418sub event_update_game { 422sub event_update_game {
419 my ($self) = @_; 423 my ($self) = @_;
420 $self->SUPER::event_update_game; 424 $self->SUPER::event_update_game;
425
426 return unless $self->{window};
421 427
422 my $title = defined $self->{channel} 428 my $title = defined $self->{channel}
423 ? $self->owner->as_string . " " . $self->opponent_string 429 ? $self->owner->as_string . " " . $self->opponent_string
424 : "Game Window"; 430 : "Game Window";
425 $self->{window}->set_title("KGS Game $title"); 431 $self->{window}->set_title("KGS Game $title");
476 $text .= "</infoblock>"; 482 $text .= "</infoblock>";
477 483
478 $self->{gatext} = \@ga; 484 $self->{gatext} = \@ga;
479 }; 485 };
480 486
481 $self->{text}->append_text ($text); 487 $self->{chat}->append_text ($text);
482} 488}
483 489
484sub event_update_rules { 490sub event_update_rules {
485 my ($self, $rules) = @_; 491 my ($self, $rules) = @_;
486 492
506 } elsif ($rules->{timesys} == TIMESYS_CANADIAN) { 512 } elsif ($rules->{timesys} == TIMESYS_CANADIAN) {
507 $text .= util::format_time $rules->{time}; 513 $text .= util::format_time $rules->{time};
508 $text .= sprintf " + %s/%d CAN", util::format_time $rules->{interval}, $rules->{count}; 514 $text .= sprintf " + %s/%d CAN", util::format_time $rules->{interval}, $rules->{count};
509 } 515 }
510 516
511 $self->{text}->append_text ("<infoblock>$text</infoblock>"); 517 $self->{chat}->append_text ("<infoblock>$text</infoblock>");
512} 518}
513 519
514sub inject_resign_game { 520sub inject_resign_game {
515 my ($self, $msg) = @_; 521 my ($self, $msg) = @_;
516 522
517 sound::play 3, "resign"; 523 sound::play 3, "resign";
518 524
519 $self->{text}->append_text ("\n<infoblock><header>Resign</header>" 525 $self->{chat}->append_text ("\n<infoblock><header>Resign</header>"
520 . "\n<user>" 526 . "\n<user>"
521 . (util::toxml $self->{user}[$msg->{player}]->as_string) 527 . (util::toxml $self->{user}[$msg->{player}]->as_string)
522 . "</user> resigned.</infoblock>"); 528 . "</user> resigned.</infoblock>");
523} 529}
524 530
525sub inject_final_result { 531sub inject_final_result {
526 my ($self, $msg) = @_; 532 my ($self, $msg) = @_;
527 533
528 $self->{text}->append_text ("<infoblock>\n<header>Game Over</header>" 534 $self->{chat}->append_text ("<infoblock>\n<header>Game Over</header>"
529 . "\nWhite Score " . (util::toxml $msg->{whitescore}->as_string) 535 . "\nWhite Score " . (util::toxml $msg->{whitescore}->as_string)
530 . "\nBlack Score " . (util::toxml $msg->{blackscore}->as_string) 536 . "\nBlack Score " . (util::toxml $msg->{blackscore}->as_string)
531 . "</infoblock>" 537 . "</infoblock>"
532 ); 538 );
533} 539}
534 540
535sub event_challenge { 541sub event_challenge {
536 my ($self, $challenge) = @_; 542 my ($self, $challenge) = @_;
537 543
538 use KGS::Listener::Debug; 544 use KGS::Listener::Debug;
539 $self->{text}->append_text ("\n".KGS::Listener::Debug::dumpval($challenge)); 545 $self->{chat}->append_text ("\n".KGS::Listener::Debug::dumpval($challenge));
540} 546}
541 547
542sub destroy { 548sub destroy {
543 my ($self) = @_; 549 my ($self) = @_;
544 550

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines