Deliantra-Client
view release on metacpan or search on metacpan
} elsif (($ev->{mod} & DC::KMOD_SHIFT) && $ev->{button} == 2) {
$self->{flags} & F_LOCKED
? $::CONN->send ("lock " . pack "CN", 0, $self->{tag})
: $::CONN->send ("lock " . pack "CN", 1, $self->{tag})
} elsif ($ev->{button} == 1) {
$::CONN->send ("examine $self->{tag}");
} elsif ($ev->{button} == 2) {
$::CONN->send ("apply $self->{tag}");
} elsif ($ev->{button} == 3) {
my $move_prefix = $::CONN->{open_container} ? 'put' : 'drop';
if ($self->{container} == $::CONN->{open_container}) {
$move_prefix = "take";
}
my $shortname = DC::shorten $self->{name}, 14;
my @menu_items = (
["examine", sub { $::CONN->send ("examine $self->{tag}") }],
["mark", sub { $::CONN->send ("mark ". pack "N", $self->{tag}) }],
["ignite/thaw", # first try of an easier use of flint&steel
sub {
$::CONN->send ("mark ". pack "N", $self->{tag});
$::CONN->send ("command apply flint and steel");
}
],
["inscribe", # first try of an easier use of flint&steel
sub {
&::open_string_query ("Text to inscribe", sub {
my ($entry, $txt) = @_;
$::CONN->send ("mark ". pack "N", $self->{tag});
$::CONN->send_utf8 ("command use_skill inscription $txt");
});
}
],
["rename", # first try of an easier use of flint&steel
sub {
&::open_string_query ("Rename item to:", sub {
my ($entry, $txt) = @_;
$::CONN->send ("mark ". pack "N", $self->{tag});
$::CONN->send_utf8 ("command rename to <$txt>");
}, $self->{name},
"If you input no name or erase the current custom name, the custom name will be unset");
}
],
["apply", sub { $::CONN->send ("apply $self->{tag}") }],
(
$self->{flags} & F_LOCKED
? (
["unlock", sub { $::CONN->send ("lock " . pack "CN", 0, $self->{tag}) }],
)
: (
["lock", sub { $::CONN->send ("lock " . pack "CN", 1, $self->{tag}) }],
["$move_prefix all", sub { $::CONN->send ("move $targ $self->{tag} 0") }],
["$move_prefix <n>",
sub {
do_n_dialog (sub { $::CONN->send ("move $targ $self->{tag} $_[0]") })
}
]
)
),
["bind <i>apply $shortname</i> to a key" => sub { DC::Macro::quick_macro ["apply $self->{name}"] }],
);
DC::UI::Menu->new (items => \@menu_items)->popup ($ev);
}
1
};
my $tooltip_std =
"<small>"
. "Left click - examine item\n"
. "Shift-Left click - " . ($self->{container} ? "move or drop" : "take") . " item\n"
. "Middle click - apply\n"
. "Shift-Middle click - lock/unlock\n"
. "Right click - further options"
. "</small>\n";
my $bg = $self->{flags} & F_CURSED ? $bg_cursed
: $self->{flags} & F_MAGIC ? $bg_magic
: undef;
my $desc = DC::Item::desc_string $self;
my $face_tooltip = "<b>$desc</b>\n\n$tooltip_std";
if (my $face = $self->{face_widget}) {
# already exists, so update if it changed
if ($face->{bg} != $bg) {
$face->{bg} = $bg;
$face->update;
}
$face->set_bg ($bg) if $face->{bg} != $bg;
$face->set_face ($self->{face}) if $face->{face} != $self->{face};
$face->set_anim ($self->{anim}) if $face->{anim} != $self->{anim};
$face->set_animspeed ($self->{animspeed}) if $face->{animspeed} != $self->{animspeed};
#$face->set_tooltip (
# "<b>Face/Animation.</b>\n"
# . "Item uses face #$self->{face}. "
# . ($self->{animspeed} ? "Item uses animation #$self->{anim} at " . (1 / $self->{animspeed}) . "fps. " : "Item is not animated. ")
# . "\n\n$tooltip_std"
#);
$face->set_tooltip ($face_tooltip);
} else {
# new object, create new face
$self->{face_widget} = new DC::UI::Face
can_events => 1,
can_hover => 1,
bg => $bg,
face => $self->{face},
anim => $self->{anim},
animspeed => $self->{animspeed}, # TODO# must be set at creation time
tooltip => $face_tooltip,
on_button_down => $button_cb,
;
}
$self->{desc_widget} ||= new DC::UI::Label
can_events => 1,
can_hover => 1,
( run in 0.897 second using v1.01-cache-2.11-cpan-fe3c2283af0 )