--- deliantra/gde/GCE/Util.pm 2006/03/17 01:18:01 1.7 +++ deliantra/gde/GCE/Util.pm 2006/03/17 17:59:43 1.8 @@ -17,8 +17,22 @@ use Crossfire; use Crossfire::MapWidget; +use File::Spec::Functions; -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); +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); + +sub map2abs { + my ($dest, $mape) = @_; + + my $dir; + if (File::Spec->file_name_is_absolute($dest)) { + $dir = catdir ($Crossfire::LIB, 'maps', $dest); + } else { + my ($v, $p, $f) = File::Spec->splitpath ($mape->{path}); + $dir = File::Spec->rel2abs ($dest, File::Spec->catpath ($v, $p)); + } + return $dir; +} sub def($$) { return defined ($_[0]) ? $_[0] : $_[1];