Deliantra
view release on metacpan or search on metacpan
Deliantra.pm view on Meta::CPAN
last_heal last_sp last_grace last_eat
connected glow_radius randomitems tresure_env npx_status npc_program
run_away pick_up container will_apply smoothlevel
current_weapon_script weapontype tooltype elevation client_type
item_power duration range
range_modifier duration_modifier dam_modifier gen_sp_armour
move_type move_block move_allow move_on move_off move_on move_slow move_slow_penalty
alive wiz was_wiz applied unpaid can_use_shield no_pick is_animated monster
friendly generator is_thrown auto_apply treasure player sold see_invisible
can_roll overlay_floor is_turnable is_used_up identified reflecting changing
splitting hitback startequip blocksview undead scared unaggressive
reflect_missile reflect_spell no_magic no_fix_player is_lightable tear_down
run_away pick_up unique no_drop can_cast_spell can_use_scroll can_use_range
can_use_bow can_use_armour can_use_weapon can_use_ring has_ready_range
has_ready_bow xrays is_floor lifesave no_strength sleep stand_still
random_move only_attack confused stealth cursed damned see_anywhere
known_magical known_cursed can_use_skill been_applied has_ready_scroll
can_use_rod can_use_horn make_invisible inv_locked is_wooded is_hilly
has_ready_skill has_ready_weapon no_skill_ident is_blind can_see_in_dark
is_cauldron is_dust no_steal one_hit berserk neutral no_attack no_damage
Deliantra/MapWidget.pm view on Meta::CPAN
$self->update_tooltip;
}
sub disable_tooltip {
my ($self) = @_;
$self->{tooltip}--;
$self->update_tooltip;
}
sub overlay {
my ($self, $name, $x, $y, $w, $h, $cb) = @_;
if (my $ov = delete $self->{overlay}{$name}) {
my ($x, $y, $w, $h) = @$ov;
$self->queue_draw_area ($x - $self->{x}, $y - $self->{y}, $w, $h);
}
if ($w && $h) {
$self->{overlay}{$name} = [$x, $y, $w, $h, $cb];
$self->queue_draw_area ($x - $self->{x}, $y - $self->{y}, $w, $h);
}
}
sub update_tooltip {
my ($self) = @_;
if ($self->{tooltip} >= 0
&& $self->mapped
Deliantra/MapWidget.pm view on Meta::CPAN
$self->{tip}->set_transient_for ($self->get_toplevel);
}
my ($mx, $my) = $self->coord ($self->get_pointer);
if ($self->{tipinfo}[0] != $mx || $self->{tipinfo}[1] != $my) {
$self->fill_tooltip ($mx, $my);
$self->{tipinfo} = [$mx, $my];
$self->overlay (_tooltip => $mx * TILESIZE, $my * TILESIZE, TILESIZE, TILESIZE, sub {
my ($self, $x, $y) = @_;
$self->{window}->draw_rectangle ($_ & 1 ? $self->style->black_gc : $self->style->white_gc, 0,
$x + $_, $y + $_,
TILESIZE - 1 - $_ * 2, TILESIZE - 1 - $_ * 2)
for 0..3;
});
my $req = $self->{tip}->size_request;
$self->{tip}->resize ($req->width, $req->height);
}
$self->{tip}->move ($x + TILESIZE, $y);
$self->{tip}->show_all;
return;
}
}
}
$self->overlay ("_tooltip");
delete $self->{tipinfo};
(delete $self->{tip})->destroy if $self->{tip};
}
sub fill_tooltip {
my ($self, $x, $y) = @_;
$self->{tip}->remove ($self->{tip}->get_children)
if $self->{tip}->get_children;
Deliantra/MapWidget.pm view on Meta::CPAN
}
$pb->render_to_drawable ($window, $self->style->black_gc,
0, 0,
$x[0] * TILESIZE - $ox, $y[0] * TILESIZE - $oy,
TILESIZE * @x, TILESIZE * @y,
'max', 0, 0);
}
$_->[4]->($self, $_->[0] - $self->{x}, $_->[1] - $self->{y})
for values %{ $self->{overlay} || {} };
}
# get head from _virtual tile, returning x, y, z and @$stack
sub get_head {
my ($self, $virtual) = @_;
my ($x, $y) = @$virtual{qw(_virtual_x _virtual_y)}
or return;
my $stack = $self->{map}{map}[$x][$y]
Deliantra/MapWidget.pm view on Meta::CPAN
sub set {
my ($self, $x, $y, $as) = @_;
my $data = $self->{map}{map};
my $prev_as = $data->[$x][$y] || [];
my ($x1, $y1, $x2, $y2) = ($x, $y) x 2;
# remove possible overlay tiles
for my $a (@$prev_as) {
next if $a->{_virtual};
if (my $more = $a->{_more}) {
for (@$more) {
my ($x, $y) = @$_;
$x1 = min $x1, $x; $y1 = min $y1, $y;
$x2 = max $x2, $x; $y2 = max $y2, $y;
$data->[$x][$y] = [ grep $_->{_virtual} != $a, @{ $data->[$x][$y] } ];
}
}
}
# preserve our overlay tiles, put them on top
$as = [
(grep !$_->{_virtual}, @$as),
(grep $_->{_virtual}, @$prev_as),
];
for my $a (@$as) {
next if $a->{_virtual};
my $o = $ARCH{$a->{_name}} || $ARCH{empty_archetype}
or (warn "archetype $a->{_name} is unknown at ($x|$y)\n"), next;
( run in 1.736 second using v1.01-cache-2.11-cpan-49f99fa48dc )