Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env perl
- use 5.010;
- use warnings;
- use strict;
- use autodie;
- my %systems;
- my $cdata = do { local $/; <> };
- for my $record ($cdata =~ m{\G.*?{ (.*?) }, //}smgc) {
- $record =~ s/[\r\n]//smg;
- my ($name, $startype, $x, $y, $v) = $record =~ m{"(.*?)", 0, ({.*?}), ([+\-\d]+), ([+\-\d]+), vector3f\(([\-\d\.,]+)\)};
- $startype =~ s/SBody::TYPE_/Body.Type./g;
- my $def = sprintf q{CustomSystem:new("%s",%s):add_to_sector(%d,%d,v(%s))}, $name, $startype, $x, $y, $v;
- push @{$systems{$x}{$y}}, [ $name, $def ];
- }
- for my $x (keys %systems) {
- for my $y (keys %{$systems{$x}}) {
- my $dir = sprintf "%s%02d%s%02d", $x < 0 ? 'n' : 'p', abs $x, $y < 0 ? 'n' : 'p', abs $y;
- my $next = 0;
- if (-d $dir) {
- opendir my $dh, $dir;
- $next = grep { m/^\d\d_/ } readdir $dh;
- closedir $dh;
- }
- else {
- mkdir $dir, 0755;
- }
- for my $sys (@{$systems{$x}{$y}}) {
- my ($name, $def) = @$sys;
- $name = lc $name;
- $name =~ s/ +/_/g;
- $name =~ s{/}{_}g;
- my $filename = sprintf q{%02d_%s.lua}, $next, $name;
- print "$dir/$filename\n";
- open my $out, '>', "$dir/$filename";
- print $out $def;
- close $out;
- $next++;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement