Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion plugins/teleToDest/teleToDest.pl
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ sub validate_teleToDestMap {
my $map_name = $val;
$map_name =~ s/^(\w{3})?(\d@.*)/$2/;
my $file = $map_name.'.fld';
$file = File::Spec->catfile($Settings::fields_folder, $file) if ($Settings::fields_folder);
$file = File::Spec->catfile(File::Spec->splitdir(Settings::getFieldsFolders()), $file) if (Settings::getFieldsFolders());
$file .= ".gz" if (! -f $file); # compressed file
unless ($maps_lut{"${map_name}.rsw"} || -f $file) {
message "[teleToDest] Map '".$val."' does not exist, plugin won't be activated.\n","system";
Expand Down
6 changes: 3 additions & 3 deletions src/Commands.pm
Original file line number Diff line number Diff line change
Expand Up @@ -4145,7 +4145,7 @@ sub cmdMove {
$map_or_portal =~ s/^(\w{3})?(\d@.*)/$2/; # remove instance. is it possible to move to an instance? if not, we could throw an error here
# TODO: implement Field::sourceName function here once they are implemented there - 2013.11.26
my $file = $map_or_portal.'.fld2';
$file = File::Spec->catfile($Settings::fields_folder, $file) if ($Settings::fields_folder);
$file = File::Spec->catfile(File::Spec->splitdir(Settings::getFieldsFolders()), $file) if (Settings::getFieldsFolders());
$file .= ".gz" if (! -f $file); # compressed file
if ($maps_lut{"${map_or_portal}.rsw"} || -f $file) {
my $move_field = new Field(name => $map_or_portal);
Expand Down Expand Up @@ -4895,10 +4895,10 @@ sub cmdPortalList {
debug "Input: $args\n";
my ($srcMap, $srcX, $srcY, $dstMap, $dstX, $dstY, $seq) = $args =~ /^add ([a-zA-Z\_\-0-9]*) (\d{1,3}) (\d{1,3}) ([a-zA-Z\_\-0-9]*) (\d{1,3}) (\d{1,3})(.*)$/; #CHECKING
my $srcfile = $srcMap.'.fld2';
$srcfile = File::Spec->catfile($Settings::fields_folder, $srcfile) if ($Settings::fields_folder);
$srcfile = File::Spec->catfile(File::Spec->splitdir(Settings::getFieldsFolders()), $srcfile) if (Settings::getFieldsFolders());
$srcfile .= ".gz" if (! -f $srcfile); # compressed file
my $dstfile = $dstMap.'.fld2';
$dstfile = File::Spec->catfile($Settings::fields_folder, $dstfile) if ($Settings::fields_folder);
$dstfile = File::Spec->catfile(File::Spec->splitdir(Settings::getFieldsFolders()), $dstfile) if (Settings::getFieldsFolders());
$dstfile .= ".gz" if (! -f $dstfile); # compressed file
error TF("Files '%s' or '%s' does not exist.\n", $srcfile, $dstfile) if (! -f $srcfile || ! -f $dstfile);
if ($srcX > 0 && $srcY > 0 && $dstX > 0 && $dstY > 0
Expand Down
4 changes: 2 additions & 2 deletions src/Field.pm
Original file line number Diff line number Diff line change
Expand Up @@ -724,8 +724,8 @@ sub loadByName {
$self->{baseName} = $baseName;
my $file = $self->sourceName . ".fld2";

if ($Settings::fields_folder) {
$file = File::Spec->catfile($Settings::fields_folder, $file);
if (Settings::getFieldsFolders()) {
$file = File::Spec->catfile(File::Spec->splitdir(Settings::getFieldsFolders()), $file);
}
if (! -f $file) {
$file .= ".gz";
Expand Down
40 changes: 36 additions & 4 deletions src/Settings.pm
Original file line number Diff line number Diff line change
Expand Up @@ -89,13 +89,13 @@ our $welcomeText = TF("Welcome to %s.", $NAME);
our @controlFolders;
our @tablesFolders;
our @pluginsFolders;
our @fieldsFolders;
# The registered data files.
our $files;
# System configuration.
our %sys;
our %options;

our $fields_folder;
our $logs_folder;
our $maps_folder;

Expand Down Expand Up @@ -163,7 +163,6 @@ our @EXPORT_OK = qw(%sys %options);
sub parseArguments {
# my %options;

undef $fields_folder;
undef $logs_folder;
undef $maps_folder;
undef $config_file;
Expand All @@ -185,7 +184,7 @@ sub parseArguments {
'control=s', \$options{control},
'tables=s', \$options{tables},
'plugins=s', \$options{plugins},
'fields=s', \$fields_folder,
'fields=s', \$options{fields},
'logs=s', \$logs_folder,
'maps=s', \$maps_folder,

Expand Down Expand Up @@ -224,8 +223,12 @@ sub parseArguments {
} else {
setPluginsFolders("plugins");
}
if ($options{fields}) {
setFieldsFolders(split($pathDelimiter, $options{fields}));
} else {
setFieldsFolders("fields");
}

$fields_folder = "fields" if (!defined $fields_folder);
$logs_folder = "logs" if (!defined $logs_folder);
$maps_folder = "map" unless defined $maps_folder;
$base_chat_log_file ||= File::Spec->catfile($logs_folder, "chat.txt");
Expand Down Expand Up @@ -413,6 +416,35 @@ sub getPluginsFolders {
return @pluginsFolders;
}

##
# void Settings::setFieldsFolders(Array<String> folders)
#
# Set the folders in which to look for fields.
sub setFieldsFolders {
@fieldsFolders = @_;
}

# FIXME: should be f(Array<String> folders), not f(String folders)?
sub addFieldsFolders {
if (defined(my $root = getFieldspackFolder())) {
unshift @fieldsFolders, grep -d, map { File::Spec->catdir($root, $_) } split ';', shift
}
}

# undef if there is folder(s) specified in --fields, otherwise fields path
# TODO: way to reconfigure only that path? (by now it's always 'fields')
sub getFieldspackFolder {
return $fieldsFolders[$#fieldsFolders];
}

##
# Array<String> Settings::getFieldsFolders()
#
# Get the folders in which to look for fields.
sub getFieldsFolders {
return @fieldsFolders;
}

##
# Settings::addControlFile(String name, options...)
# Returns: A handle for this data file, which can be used by Settings::removeFile() or Settings::loadByHandle().
Expand Down
5 changes: 5 additions & 0 deletions src/functions.pl
Original file line number Diff line number Diff line change
Expand Up @@ -574,6 +574,11 @@ sub processServerSettings {
Settings::addTablesFolders($masterServer->{addTableFolders});
}

# Process adding Custom fields folders
if ($masterServer->{addFieldsFolders}) {
Settings::addFieldsFolders($masterServer->{addFieldsFolders});
}

# Process setting custom recvpackets option
Settings::setRecvPacketsName($masterServer->{recvpackets} && $masterServer->{recvpackets} ne '' ? $masterServer->{recvpackets} : Settings::getRecvPacketsFilename() );
}
Expand Down
2 changes: 1 addition & 1 deletion src/test/FieldTest.pm
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ use Task::CalcMapRoute;
sub start {
print "### Starting FieldTest\n";

($Settings::fields_folder) = grep -d, qw(../../../../fieldpack/trunk/fields ../../fields);
local *Settings::getFieldsFolders = sub { return grep -d, qw(../../../../fieldpack/trunk/fields ../../fields) };

parseROLUT('resnametable.txt', \%mapAlias_lut, 1, ".gat");
parseROLUT('maps.txt', \%maps_lut);
Expand Down
Loading