… | |
… | |
3 | use utf8; |
3 | use utf8; |
4 | use strict; |
4 | use strict; |
5 | |
5 | |
6 | use Crossfire::Protocol::Constants; |
6 | use Crossfire::Protocol::Constants; |
7 | |
7 | |
|
|
8 | use CFClient; |
8 | use CFClient::UI; |
9 | use CFClient::UI; |
9 | |
10 | |
10 | use base 'Crossfire::Protocol::Base'; |
11 | use base 'Crossfire::Protocol::Base'; |
11 | |
12 | |
12 | sub new { |
13 | sub new { |
… | |
… | |
14 | |
15 | |
15 | my $self = $class->SUPER::new (@_); |
16 | my $self = $class->SUPER::new (@_); |
16 | |
17 | |
17 | $self->{map_widget}->clr_commands; |
18 | $self->{map_widget}->clr_commands; |
18 | |
19 | |
19 | my $parser = new Pod::POM; |
|
|
20 | my $pod = $parser->parse_file (CFClient::find_rcfile "pod/command_help.pod"); |
20 | my $pod = CFClient::load_pod CFClient::find_rcfile "pod/command_help.pod"; |
21 | |
21 | |
22 | for my $head2 ($pod->head1->[-2]->head2) { |
22 | for my $head2 ($pod->head1->[-2]->head2) { |
23 | $head2->title =~ /^(\S+) (?:\s+ \( ([^\)]*) \) )?/x |
23 | $head2->title =~ /^(\S+) (?:\s+ \( ([^\)]*) \) )?/x |
24 | or next; |
24 | or next; |
25 | |
25 | |
… | |
… | |
429 | join "\n", map "$time $_", split /\n/, $text); |
429 | join "\n", map "$time $_", split /\n/, $text); |
430 | |
430 | |
431 | $self->{statusbox}->add ($text, |
431 | $self->{statusbox}->add ($text, |
432 | group => $text, |
432 | group => $text, |
433 | fg => $color[$color], |
433 | fg => $color[$color], |
434 | timeout => 10, |
434 | timeout => $color >= 2 ? 60 : 10, |
435 | tooltip_font => $::FONT_FIXED, |
435 | tooltip_font => $::FONT_FIXED, |
436 | ); |
436 | ); |
437 | } |
437 | } |
438 | |
438 | |
439 | sub drawextinfo { |
439 | sub drawextinfo { |
… | |
… | |
445 | sub spell_add { |
445 | sub spell_add { |
446 | my ($self, $spell) = @_; |
446 | my ($self, $spell) = @_; |
447 | |
447 | |
448 | # TODO |
448 | # TODO |
449 | # create a widget dynamically, using spell face (CF::Protocol downloads them) |
449 | # create a widget dynamically, using spell face (CF::Protocol downloads them) |
450 | $::SPELL_LIST->add_spell ($spell); |
450 | $::SETUP_SPELLS->add_spell ($spell); |
451 | |
451 | |
452 | $self->{map_widget}->add_command ("invoke $spell->{name}", CFClient::UI::Label::escape $spell->{message}); |
452 | $self->{map_widget}->add_command ("invoke $spell->{name}", CFClient::UI::Label::escape $spell->{message}); |
453 | $self->{map_widget}->add_command ("cast $spell->{name}", CFClient::UI::Label::escape $spell->{message}); |
453 | $self->{map_widget}->add_command ("cast $spell->{name}", CFClient::UI::Label::escape $spell->{message}); |
454 | } |
454 | } |
455 | |
455 | |
456 | sub spell_delete { |
456 | sub spell_delete { |
457 | my ($self, $spell) = @_; |
457 | my ($self, $spell) = @_; |
458 | $::SPELL_LIST->remove_spell ($spell); |
458 | $::SETUP_SPELLS->remove_spell ($spell); |
459 | } |
459 | } |
460 | |
460 | |
461 | sub addme_success { |
461 | sub addme_success { |
462 | my ($self) = @_; |
462 | my ($self) = @_; |
463 | |
463 | |
464 | my $parser = new Pod::POM; |
464 | my $pod = CFClient::load_pod CFClient::find_rcfile "pod/skill_help.pod"; |
465 | my $pod = $parser->parse_file (CFClient::find_rcfile "pod/skill_help.pod"); |
|
|
466 | |
465 | |
467 | my %skill_tooltip; |
466 | my %skill_tooltip; |
468 | |
467 | |
469 | for my $head2 ($pod->head1->[-2]->head2) { |
468 | for my $head2 ($pod->head1->[-2]->head2) { |
470 | $skill_tooltip{$head2->title} = CFClient::pod_to_pango $head2->content; |
469 | $skill_tooltip{$head2->title} = CFClient::pod_to_pango $head2->content; |
… | |
… | |
509 | my ($face) = splice @{ $self->{face_prefetch} }, + rand @{ $self->{face_prefetch} }, 1, (); |
508 | my ($face) = splice @{ $self->{face_prefetch} }, + rand @{ $self->{face_prefetch} }, 1, (); |
510 | |
509 | |
511 | $self->send ("requestinfo image_sums $face $face"); |
510 | $self->send ("requestinfo image_sums $face $face"); |
512 | |
511 | |
513 | $self->{statusbox}->add (CFClient::UI::Label::escape "prefetching $todo", |
512 | $self->{statusbox}->add (CFClient::UI::Label::escape "prefetching $todo", |
514 | group => "prefetch", timeout => 2, fg => [1, 1, 0, 0.5]); |
513 | group => "prefetch", timeout => 3, fg => [1, 1, 0, 0.5]); |
515 | } elsif (!exists $self->{num_faces}) { |
514 | } elsif (!exists $self->{num_faces}) { |
516 | $self->send ("requestinfo image_info"); |
515 | $self->send ("requestinfo image_info"); |
517 | |
516 | |
518 | $self->{num_faces} = 0; |
517 | $self->{num_faces} = 0; |
519 | |
518 | |
520 | $self->{statusbox}->add (CFClient::UI::Label::escape "starting to prefetch", |
519 | $self->{statusbox}->add (CFClient::UI::Label::escape "starting to prefetch", |
521 | group => "prefetch", timeout => 2, fg => [1, 1, 0, 0.5]); |
520 | group => "prefetch", timeout => 3, fg => [1, 1, 0, 0.5]); |
522 | } |
521 | } |
523 | } |
522 | } |
524 | |
523 | |
525 | sub update_floorbox { |
524 | sub update_floorbox { |
526 | $CFClient::UI::ROOT->on_refresh ($::FLOORBOX => sub { |
525 | $CFClient::UI::ROOT->on_refresh ($::FLOORBOX => sub { |