… | |
… | |
263 | $sw->add(($self->{userlist} = new userlist)->widget); |
263 | $sw->add(($self->{userlist} = new userlist)->widget); |
264 | |
264 | |
265 | $self->{vpane}->add(my $vbox = new Gtk2::VBox); |
265 | $self->{vpane}->add(my $vbox = new Gtk2::VBox); |
266 | |
266 | |
267 | $vbox->pack_start((my $hbox = new Gtk2::HBox 1), 0, 1, 0); |
267 | $vbox->pack_start((my $hbox = new Gtk2::HBox 1), 0, 1, 0); |
268 | $hbox->add (($self->{userpanel}[WHITE] = new game::userpanel colour => WHITE)->widget); |
268 | $hbox->add (($self->{userpanel}[COLOUR_WHITE] = new game::userpanel colour => COLOUR_WHITE)->widget); |
269 | $hbox->add (($self->{userpanel}[BLACK] = new game::userpanel colour => BLACK)->widget); |
269 | $hbox->add (($self->{userpanel}[COLOUR_BLACK] = new game::userpanel colour => COLOUR_BLACK)->widget); |
270 | |
270 | |
271 | $vbox->pack_start(($self->{chat} = new chat), 1, 1, 0); |
271 | $vbox->pack_start(($self->{chat} = new chat), 1, 1, 0); |
272 | |
272 | |
273 | $self->{chat}->signal_connect(command => sub { |
273 | $self->{chat}->signal_connect(command => sub { |
274 | my ($chat, $cmd, $arg) = @_; |
274 | my ($chat, $cmd, $arg) = @_; |
… | |
… | |
333 | $self->{board_label}->set_text ("Move " . ($move - 1)); |
333 | $self->{board_label}->set_text ("Move " . ($move - 1)); |
334 | |
334 | |
335 | $self->{cur_board} = new KGS::Game::Board $self->{size}; |
335 | $self->{cur_board} = new KGS::Game::Board $self->{size}; |
336 | $self->{cur_board}->interpret_path ([@{$self->{path}}[0 .. $move - 1]]); |
336 | $self->{cur_board}->interpret_path ([@{$self->{path}}[0 .. $move - 1]]); |
337 | |
337 | |
338 | for my $colour (WHITE, BLACK) { |
338 | for my $colour (COLOUR_WHITE, COLOUR_BLACK) { |
339 | $self->{userpanel}[$colour]->set_state ( |
339 | $self->{userpanel}[$colour]->set_state ( |
340 | $self->{cur_board}{captures}[$colour], |
340 | $self->{cur_board}{captures}[$colour], |
341 | $self->{cur_board}{timer}[$colour], |
341 | $self->{cur_board}{timer}[$colour], |
342 | ($running && $self->{lastmove_colour} == !$colour) |
342 | ($running && $self->{lastmove_colour} == !$colour) |
343 | ? $self->{lastmove_time} : 0 |
343 | ? $self->{lastmove_time} : 0 |
… | |
… | |
430 | ? $self->owner->as_string . " " . $self->opponent_string |
430 | ? $self->owner->as_string . " " . $self->opponent_string |
431 | : "Game Window"; |
431 | : "Game Window"; |
432 | $self->{window}->set_title("KGS Game $title"); |
432 | $self->{window}->set_title("KGS Game $title"); |
433 | $self->{title}->set_text ($title); |
433 | $self->{title}->set_text ($title); |
434 | |
434 | |
435 | $self->{user}[BLACK] = $self->{user1}; |
435 | $self->{user}[COLOUR_BLACK] = $self->{user1}; |
436 | $self->{user}[WHITE] = $self->{user2}; |
436 | $self->{user}[COLOUR_WHITE] = $self->{user2}; |
437 | |
437 | |
438 | # show board |
438 | # show board |
439 | |
439 | |
440 | if ($self->is_valid) { |
440 | if ($self->is_inprogress) { |
441 | #D# TODO: check wether already inside, or already removed!!! |
|
|
442 | $self->{left}->add ($self->{boardbox}); |
|
|
443 | $self->{left}->remove ($self->{challenge}->widget) if $self->{challenge}; |
441 | $self->{left}->remove ($self->{challenge}->widget) if $self->{challenge} && $self->{boardbox}->parent; |
|
|
442 | $self->{left}->add ($self->{boardbox}) unless $self->{boardbox}->parent; |
444 | } else { |
443 | } else { |
445 | #D# TODO: check wether already inside, or already removed!!! |
|
|
446 | $self->{left}->add ($self->{challenge}->widget); |
|
|
447 | $self->{left}->remove ($self->{boardbox}); |
444 | $self->{left}->remove ($self->{boardbox}) if $self->{boardbox}->parent; |
|
|
445 | $self->{left}->add ($self->{challenge}->widget) unless $self->{challenge}->widget->parent; |
448 | } |
446 | } |
449 | $self->{left}->show_all; |
447 | $self->{left}->show_all; |
450 | |
448 | |
451 | # view text |
449 | # view text |
452 | |
450 | |
453 | eval { #d# |
451 | eval { #d# |
454 | my @ga; |
452 | my @ga; |
455 | $ga[0] = "\nType: " . (util::toxml $gametype{$self->type}) |
453 | $ga[0] = "\nType: " . (util::toxml $gametype{$self->type}) |
456 | . " (" . (util::toxml $gameopt{$self->option}) . ")"; |
454 | . " (" . (util::toxml $gameopt{$self->option}) . ")"; |
457 | $ga[1] = "\nFlags:"; |
455 | $ga[1] = "\nFlags:"; |
458 | $ga[1] .= " valid" if $self->is_valid; |
456 | $ga[1] .= " started" if $self->is_inprogress; |
459 | $ga[1] .= " adjourned" if $self->is_adjourned; |
457 | $ga[1] .= " adjourned" if $self->is_adjourned; |
460 | $ga[1] .= " scored" if $self->is_scored; |
458 | $ga[1] .= " scored" if $self->is_scored; |
461 | $ga[1] .= " saved" if $self->is_saved; |
459 | $ga[1] .= " saved" if $self->is_saved; |
462 | |
460 | |
463 | $ga[2] = "\nOwner: <user>" . (util::toxml $self->{user3}->as_string) . "</user>" if $self->{user3}->is_valid; |
461 | $ga[2] = "\nOwner: <user>" . (util::toxml $self->{user3}->as_string) . "</user>" |
|
|
462 | if $self->{user3}->is_inprogress; |
464 | |
463 | |
465 | $ga[3] = "\nPlayers: <user>" . (util::toxml $self->{user2}->as_string) . "</user>" |
464 | $ga[3] = "\nPlayers: <user>" . (util::toxml $self->{user2}->as_string) . "</user>" |
466 | . " vs. <user>" . (util::toxml $self->{user1}->as_string) . "</user>" |
465 | . " vs. <user>" . (util::toxml $self->{user1}->as_string) . "</user>" |
467 | if $self->is_valid; |
466 | if $self->is_inprogress; |
468 | |
467 | |
469 | if ($self->is_valid) { |
468 | if ($self->is_inprogress) { |
470 | $ga[4] = "\nHandicap: " . $self->{handicap}; |
469 | $ga[4] = "\nHandicap: " . $self->{handicap}; |
471 | $ga[5] = "\nKomi: " . $self->{komi}; |
470 | $ga[5] = "\nKomi: " . $self->{komi}; |
472 | $ga[6] = "\nSize: " . $self->size_string; |
471 | $ga[6] = "\nSize: " . $self->size_string; |
473 | } |
472 | } |
474 | |
473 | |
… | |
… | |
492 | |
491 | |
493 | sub event_update_rules { |
492 | sub event_update_rules { |
494 | my ($self, $rules) = @_; |
493 | my ($self, $rules) = @_; |
495 | |
494 | |
496 | $self->{userpanel}[$_]->configure ($self->{app}, $self->{user}[$_], $rules) |
495 | $self->{userpanel}[$_]->configure ($self->{app}, $self->{user}[$_], $rules) |
497 | for BLACK, WHITE; |
496 | for COLOUR_BLACK, COLOUR_WHITE; |
498 | |
497 | |
499 | sound::play 3, "gamestart"; |
498 | sound::play 3, "gamestart"; |
500 | |
499 | |
501 | my $text = "\n<header>Game Rules</header>"; |
500 | my $text = "\n<header>Game Rules</header>"; |
502 | |
501 | |
… | |
… | |
508 | $text .= "UNLIMITED"; |
507 | $text .= "UNLIMITED"; |
509 | } elsif ($rules->{timesys} == TIMESYS_ABSOLUTE) { |
508 | } elsif ($rules->{timesys} == TIMESYS_ABSOLUTE) { |
510 | $text .= util::format_time $rules->{time}; |
509 | $text .= util::format_time $rules->{time}; |
511 | $text .= " ABS"; |
510 | $text .= " ABS"; |
512 | } elsif ($rules->{timesys} == TIMESYS_BYO_YOMI) { |
511 | } elsif ($rules->{timesys} == TIMESYS_BYO_YOMI) { |
513 | $text .= util::format_time $rules->{time} - $rules->{interval} * $rules->{count}; |
512 | $text .= util::format_time $rules->{time}; |
514 | $text .= sprintf " + %s (%d) BY", util::format_time $rules->{interval}, $rules->{count}; |
513 | $text .= sprintf " + %s (%d) BY", util::format_time $rules->{interval}, $rules->{count}; |
515 | } elsif ($rules->{timesys} == TIMESYS_CANADIAN) { |
514 | } elsif ($rules->{timesys} == TIMESYS_CANADIAN) { |
516 | $text .= util::format_time $rules->{time}; |
515 | $text .= util::format_time $rules->{time}; |
517 | $text .= sprintf " + %s/%d CAN", util::format_time $rules->{interval}, $rules->{count}; |
516 | $text .= sprintf " + %s/%d CAN", util::format_time $rules->{interval}, $rules->{count}; |
518 | } |
517 | } |
… | |
… | |
551 | sub destroy { |
550 | sub destroy { |
552 | my ($self) = @_; |
551 | my ($self) = @_; |
553 | |
552 | |
554 | delete $self->{app}{gamelist}{game}{$self->{channel}}; |
553 | delete $self->{app}{gamelist}{game}{$self->{channel}}; |
555 | $self->{userpanel}[$_] && (delete $self->{userpanel}[$_])->destroy |
554 | $self->{userpanel}[$_] && (delete $self->{userpanel}[$_])->destroy |
556 | for BLACK, WHITE; |
555 | for COLOUR_BLACK, COLOUR_WHITE; |
557 | $self->SUPER::destroy; |
556 | $self->SUPER::destroy; |
558 | } |
557 | } |
559 | |
558 | |
560 | 1; |
559 | 1; |
561 | |
560 | |