… | |
… | |
15 | use Storable; |
15 | use Storable; |
16 | use List::Util qw(min max); |
16 | use List::Util qw(min max); |
17 | |
17 | |
18 | use Crossfire; |
18 | use Crossfire; |
19 | use Crossfire::MapWidget; |
19 | use Crossfire::MapWidget; |
|
|
20 | use File::Spec::Functions; |
20 | |
21 | |
21 | our @EXPORT = qw(insert_arch_stack_layer replace_arch_stack_layer new_arch_pb fill_pb_from_arch arch_is_floor stack_find_floor stack_find_wall stack_find arch_is_wall arch_is_monster add_table_widget quick_msg def arch_is_exit); |
22 | our @EXPORT = qw(insert_arch_stack_layer replace_arch_stack_layer new_arch_pb fill_pb_from_arch arch_is_floor stack_find_floor stack_find_wall stack_find arch_is_wall arch_is_monster add_table_widget quick_msg def arch_is_exit map2abs); |
|
|
23 | |
|
|
24 | sub map2abs { |
|
|
25 | my ($dest, $mape) = @_; |
|
|
26 | |
|
|
27 | my $dir; |
|
|
28 | if (File::Spec->file_name_is_absolute($dest)) { |
|
|
29 | $dir = catdir ($::CFG->{MAPDIR}, $dest); |
|
|
30 | } else { |
|
|
31 | my ($v, $p, $f) = File::Spec->splitpath ($mape->{path}); |
|
|
32 | $dir = File::Spec->rel2abs ($dest, File::Spec->catpath ($v, $p)); |
|
|
33 | } |
|
|
34 | return $dir; |
|
|
35 | } |
22 | |
36 | |
23 | sub def($$) { |
37 | sub def($$) { |
24 | return defined ($_[0]) ? $_[0] : $_[1]; |
38 | return defined ($_[0]) ? $_[0] : $_[1]; |
25 | } |
39 | } |
26 | |
40 | |
… | |
… | |
94 | return $type eq '66' || $type eq '41'; |
108 | return $type eq '66' || $type eq '41'; |
95 | } |
109 | } |
96 | |
110 | |
97 | sub arch_is_floor { |
111 | sub arch_is_floor { |
98 | my ($a) = @_; |
112 | my ($a) = @_; |
|
|
113 | my $ar = Crossfire::arch_attr $a; |
|
|
114 | return $ar->{name} eq 'Floor'; |
99 | return $Crossfire::ARCH{$a->{_name}}->{is_floor}; |
115 | #return $Crossfire::ARCH{$a->{_name}}->{is_floor}; |
100 | } |
116 | } |
101 | |
117 | |
102 | sub arch_is_wall { |
118 | sub arch_is_wall { |
103 | my ($a) = @_; |
119 | my ($a) = @_; |
|
|
120 | my $ar = Crossfire::arch_attr $a; |
|
|
121 | return $ar->{name} eq 'Wall'; |
104 | return $Crossfire::ARCH{$a->{_name}}->{no_pass}; |
122 | #return $Crossfire::ARCH{$a->{_name}}->{no_pass}; |
105 | } |
123 | } |
106 | |
124 | |
107 | sub arch_is_monster { |
125 | sub arch_is_monster { |
108 | my ($a) = @_; |
126 | my ($a) = @_; |
109 | my $arch = $Crossfire::ARCH{$a->{_name}}; |
127 | my $arch = $Crossfire::ARCH{$a->{_name}}; |