+our @masks;
+our @landings;
+foreach my $path ( glob 'artwork/world1/*mask*.png' ) {
+
+ warn "mask $path ", -s $path, " bytes\n";
+
+ my $mask = SDL::Surface->new(
+ -name => $path,
+ -depth => 24,
+ );
+ push @masks, $mask;
+
+ $mask->blit( $mask->rect, $app );
+ $app->sync;
+
+ my @landing;
+ my $mask_step = 10;
+
+ my $y = 0;
+ foreach ( 0 .. $mask->height / $mask_step ) {
+ printf "%3d: ", $_;
+ my $x = 0;
+ foreach ( 0 .. $mask->width / $mask_step ) {
+ my $col = $mask->pixel( $x, $y );
+ my $nr = 0;
+ $nr += 4 if $col->r;
+ $nr += 2 if $col->g;
+ $nr += 1 if $col->b;
+ $landing[$nr] = [ $x, $y ] unless defined $landing[$nr];
+ printf "%02x%02x%02x:%d ", $col->r, $col->g, $col->b, $nr;
+ $x += $mask_step;
+ }
+ print "\n";
+ $y += $mask_step;
+ }
+
+ warn "lading for $path ",dump(@landing);
+
+ push @landings, [ @landing ];
+}
+
+my $current_mask = 0;
+
+warn "# masks ",dump(@masks), " landings ", dump(@landings);
+
+sub mask_hex {
+ my ( $i, $x, $y ) = @_;
+
+ my $col = $masks[$i]->pixel( $x, $y );
+ my $hex = sprintf '%02x%02x%02x', $col->r, $col->g, $col->b;
+ warn "mask $x $y $hex\n";
+ return $hex;
+}
+
+sub lading_points {
+ my ( $x, $y ) = @_;
+ my @points;
+ foreach my $i ( 0 .. $#masks ) {
+ my $hex = mask_hex( $i, $x, $y );
+ if ( $hex eq '000000' ) {
+ warn "lading point $x $y from mask $i hex $hex\n";
+ foreach ( 1 .. 6 ) {
+ push @points,
+ $landings[$i]->[$_]->[0],
+ $landings[$i]->[$_]->[1];
+ }
+ } else {
+ debug $x, $y, $i, $hex, 'ignored';
+ }
+ warn "mask $i points ",dump( @points );
+ }
+ return @points;
+}
+