… | |
… | |
25 | |
25 | |
26 | use Carp (); |
26 | use Carp (); |
27 | use AnyEvent (); |
27 | use AnyEvent (); |
28 | use BerkeleyDB; |
28 | use BerkeleyDB; |
29 | use Pod::POM (); |
29 | use Pod::POM (); |
|
|
30 | use Scalar::Util (); |
30 | use Storable (); # finally |
31 | use Storable (); # finally |
31 | |
32 | |
32 | package CFClient::PodToPango; |
33 | package CFClient::PodToPango; |
33 | |
34 | |
34 | use base Pod::POM::View::Text; |
35 | use base Pod::POM::View::Text; |
… | |
… | |
51 | } |
52 | } |
52 | |
53 | |
53 | sub view_item { |
54 | sub view_item { |
54 | ("\t" x ($indent / 4)) |
55 | ("\t" x ($indent / 4)) |
55 | . $_[1]->title->present ($_[0]) |
56 | . $_[1]->title->present ($_[0]) |
56 | . "\n" |
57 | . "\n\n" |
57 | . $_[1]->content->present ($_[0]) |
58 | . $_[1]->content->present ($_[0]) |
58 | } |
59 | } |
59 | |
60 | |
60 | sub view_verbatim { |
61 | sub view_verbatim { |
61 | (join "", |
62 | (join "", |
… | |
… | |
291 | $cb->($last_enter_count); |
292 | $cb->($last_enter_count); |
292 | $w->hide; |
293 | $w->hide; |
293 | $w = undef; |
294 | $w = undef; |
294 | } |
295 | } |
295 | ); |
296 | ); |
296 | $entry->focus_in; |
297 | $entry->grab_focus; |
297 | $w->show; |
298 | $w->show; |
298 | |
299 | |
299 | } |
300 | } |
300 | |
301 | |
301 | sub update_widgets { |
302 | sub update_widgets { |
302 | my ($self) = @_; |
303 | my ($self) = @_; |
|
|
304 | |
|
|
305 | # necessary to avoid cyclic references |
|
|
306 | Scalar::Util::weaken $self; |
303 | |
307 | |
304 | my $button_cb = sub { |
308 | my $button_cb = sub { |
305 | my (undef, $ev, $x, $y) = @_; |
309 | my (undef, $ev, $x, $y) = @_; |
306 | |
310 | |
307 | my $targ = $::CONN->{player}{tag}; |
311 | my $targ = $::CONN->{player}{tag}; |
… | |
… | |
452 | sub open_binding_dialog { |
456 | sub open_binding_dialog { |
453 | my ($cb) = @_; |
457 | my ($cb) = @_; |
454 | |
458 | |
455 | my $w = new CFClient::UI::FancyFrame |
459 | my $w = new CFClient::UI::FancyFrame |
456 | title => "Bind Action", |
460 | title => "Bind Action", |
457 | x => "center", |
461 | x => "center", |
458 | y => "center"; |
462 | y => "center", |
|
|
463 | z => 1000, |
|
|
464 | has_close_button => 1; |
459 | |
465 | |
460 | $w->add (my $vb = new CFClient::UI::VBox); |
466 | $w->add (my $vb = new CFClient::UI::VBox); |
461 | $vb->add (new CFClient::UI::Label |
467 | $vb->add (new CFClient::UI::Label |
462 | text => "Press a modifier (CTRL, ALT and/or SHIFT) and a key." |
468 | text => "Press a modifier (CTRL, ALT and/or SHIFT) and a key." |
463 | ."You can only bind 0-9 and F1-F15 without modifiers." |
469 | . "You can only bind 0-9 and F1-F15 without modifiers." |
464 | ); |
470 | ); |
465 | $vb->add (my $entry = new CFClient::UI::Entry |
471 | $vb->add (my $entry = new CFClient::UI::Entry |
466 | text => "", |
472 | text => "", |
467 | on_key_down => sub { |
473 | on_key_down => sub { |
468 | my ($entry, $ev) = @_; |
474 | my ($entry, $ev) = @_; |
… | |
… | |
484 | ." directly without modifier! It would damage the completer handling." |
490 | ." directly without modifier! It would damage the completer handling." |
485 | ); |
491 | ); |
486 | return; |
492 | return; |
487 | } |
493 | } |
488 | |
494 | |
489 | $entry->focus_out; |
495 | $entry->grab_focus; |
490 | |
496 | |
491 | $cb->($mod, $sym); |
497 | $cb->($mod, $sym); |
492 | |
498 | |
493 | $w->destroy |
499 | $w->destroy |
494 | }); |
500 | }); |
495 | |
501 | |
496 | $entry->focus_in; |
502 | $entry->grab_focus; |
497 | $w->show; |
503 | $w->show; |
498 | } |
504 | } |
499 | |
505 | |
500 | sub keycombo_to_name { |
506 | sub keycombo_to_name { |
501 | my ($mod, $sym) = @_; |
507 | my ($mod, $sym) = @_; |
… | |
… | |
507 | $mods .= "+" if $mods ne ''; |
513 | $mods .= "+" if $mods ne ''; |
508 | |
514 | |
509 | return $mods . CFClient::SDL_GetKeyName ($sym); |
515 | return $mods . CFClient::SDL_GetKeyName ($sym); |
510 | } |
516 | } |
511 | |
517 | |
512 | package CFClient::Pickup; |
|
|
513 | # some pickup constants |
|
|
514 | sub PU_NOTHING { 0x00000000 } |
|
|
515 | |
|
|
516 | sub PU_DEBUG { 0x10000000 } |
|
|
517 | sub PU_INHIBIT { 0x20000000 } |
|
|
518 | sub PU_STOP { 0x40000000 } |
|
|
519 | sub PU_NEWMODE { 0x80000000 } |
|
|
520 | |
|
|
521 | sub PU_RATIO { 0x0000000F } |
|
|
522 | |
|
|
523 | sub PU_FOOD { 0x00000010 } |
|
|
524 | sub PU_DRINK { 0x00000020 } |
|
|
525 | sub PU_VALUABLES { 0x00000040 } |
|
|
526 | sub PU_BOW { 0x00000080 } |
|
|
527 | |
|
|
528 | sub PU_ARROW { 0x00000100 } |
|
|
529 | sub PU_HELMET { 0x00000200 } |
|
|
530 | sub PU_SHIELD { 0x00000400 } |
|
|
531 | sub PU_ARMOUR { 0x00000800 } |
|
|
532 | |
|
|
533 | sub PU_BOOTS { 0x00001000 } |
|
|
534 | sub PU_GLOVES { 0x00002000 } |
|
|
535 | sub PU_CLOAK { 0x00004000 } |
|
|
536 | sub PU_KEY { 0x00008000 } |
|
|
537 | |
|
|
538 | sub PU_MISSILEWEAPON { 0x00010000 } |
|
|
539 | sub PU_ALLWEAPON { 0x00020000 } |
|
|
540 | sub PU_MAGICAL { 0x00040000 } |
|
|
541 | sub PU_POTION { 0x00080000 } |
|
|
542 | |
|
|
543 | sub PU_SPELLBOOK { 0x00100000 } |
|
|
544 | sub PU_SKILLSCROLL { 0x00200000 } |
|
|
545 | sub PU_READABLES { 0x00400000 } |
|
|
546 | sub PU_MAGIC_DEVICE { 0x00800000 } |
|
|
547 | |
|
|
548 | sub PU_NOT_CURSED { 0x01000000 } |
|
|
549 | |
|
|
550 | sub PU_JEWELS { 0x02000000 } |
|
|
551 | |
|
|
552 | |
|
|
553 | 1; |
518 | 1; |
554 | |
519 | |
555 | =back |
520 | =back |
556 | |
521 | |
557 | =head1 AUTHOR |
522 | =head1 AUTHOR |