parse-wormedit: warn about missing level data for render
authorMischa Poslawsky <wormy@shiar.org>
Mon, 26 Oct 2020 19:42:25 +0000 (20:42 +0100)
committerMischa Poslawsky <wormy@shiar.org>
Mon, 26 Oct 2020 22:35:49 +0000 (23:35 +0100)
Catch resulting errors after empty input such as with wormy003.lvl
missing singleplayer levels.

lib/Games/Wormy/Render.pm
parse-wormedit

index 5a8645280e22e06a22e853a46c202c1a22cd13e2..2c83536965181a8e482dd3698e8725e4ad48961e 100644 (file)
@@ -8,7 +8,7 @@ use experimental 'switch';
 use Imager;
 use List::Util qw(sum max);
 
 use Imager;
 use List::Util qw(sum max);
 
-our $VERSION = '1.00';
+our $VERSION = '1.01';
 
 our %COL = (
        bg     => Imager::Color->new(255, 255, 255),
 
 our %COL = (
        bg     => Imager::Color->new(255, 255, 255),
@@ -24,6 +24,7 @@ our %COL = (
 
 sub level {
        my ($self, $level) = @_;
 
 sub level {
        my ($self, $level) = @_;
+       $level or return;
 
        my $field = Imager->new(xsize => $level->{width}, ysize => $level->{height});
        $field->box(filled => 1, color => $COL{bg});
 
        my $field = Imager->new(xsize => $level->{width}, ysize => $level->{height});
        $field->box(filled => 1, color => $COL{bg});
index 0c94994a5ae79a122d603d924af658354a898a56..ffd68efa997a1dce6b2c234ab8242ced6a23944b 100755 (executable)
@@ -77,10 +77,11 @@ if (defined $opt{render}) {
                # default to all singleplayer levels
                @request = 0 .. $data->{levelcount}->{single} - 1;
        }
                # default to all singleplayer levels
                @request = 0 .. $data->{levelcount}->{single} - 1;
        }
+       @request or die "no levels found or specified\n";
 
        my $img = Games::Wormy::Render->composite(
                map { $data->{levels}->[$_] } @request
 
        my $img = Games::Wormy::Render->composite(
                map { $data->{levels}->[$_] } @request
-       );
+       ) or die "empty result for levels\n";
        $img->write(
                $opt{output} ? (file => $opt{output}) : (fh => \*STDOUT, type => 'pnm')
        ) or die $img->errstr;
        $img->write(
                $opt{output} ? (file => $opt{output}) : (fh => \*STDOUT, type => 'pnm')
        ) or die $img->errstr;