Deliantra-Client
view release on metacpan or search on metacpan
$self->{nrof} < 2
? $self->{name}
: "$self->{nrof} $self->{name_pl}";
$self->{flags} & F_OPEN
and $desc .= " (open)";
$self->{flags} & F_APPLIED
and $desc .= " (applied)";
$self->{flags} & F_UNPAID
and $desc .= " (unpaid)";
$self->{flags} & F_MAGIC
and $desc .= " (magic)";
$self->{flags} & F_CURSED
and $desc .= " (cursed)";
$self->{flags} & F_DAMNED
and $desc .= " (damned)";
$self->{flags} & F_LOCKED
and $desc .= " *";
$desc
}
sub weight_string {
my ($self) = @_;
my $weight = ($self->{nrof} || 1) * $self->{weight};
$weight < 0 ? "?" : $weight * 0.001
}
sub do_n_dialog {
my ($cb) = @_;
my $w = new DC::UI::Toplevel
on_delete => sub { $_[0]->destroy; 1 },
has_close_button => 1,
;
$w->add (my $vb = new DC::UI::VBox x => "center", y => "center");
$vb->add (new DC::UI::Label text => "Enter item count:");
$vb->add (my $entry = new DC::UI::Entry
text => $last_enter_count,
on_activate => sub {
my ($entry) = @_;
$last_enter_count = $entry->get_text;
$cb->($last_enter_count);
$w->hide;
$w->destroy;
0
},
on_escape => sub { $w->destroy; 1 },
);
$entry->grab_focus;
$w->show;
}
my $bg_cursed = [1 , 0 , 0, 0.5];
my $bg_magic = [0.2, 0.2, 1, 0.5];
sub update_widgets {
my ($self) = @_;
# necessary to avoid cyclic references
DC::weaken $self;
my $button_cb = sub {
my (undef, $ev, $x, $y) = @_;
my $targ = $::CONN->{player}{tag};
if ($self->{container} == $::CONN->{player}{tag}) {
$targ = $::CONN->{open_container};
}
if (($ev->{mod} & DC::KMOD_SHIFT) && $ev->{button} == 1) {
$::CONN->send ("move $targ $self->{tag} 0")
if $targ || !($self->{flags} & F_LOCKED);
} 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");
}
( run in 1.528 second using v1.01-cache-2.11-cpan-75ffa21a3d4 )