Get 'em all: Remove gradient and snow and replace with background image.
[supertux-levels.git] / tile_randomizer.px
1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5
6 our $TileGroups =
7 [
8   [1001, 1002], # forest gras
9   [1005, 1006], # forest stones top
10   [1008, 1012], # forest stones left
11   [1009, 1013, 1014], # forest stones fill
12   [1011, 1015], # forest stones right
13   [1017, 1018], # forest stones bottom
14   [1861, 1862], # forest underground gras
15   [1865, 1866], # forest underground stones top
16   [1868, 1872], # forest underground stones left
17   [1869, 1873, 1874], # forest underground stones fill
18   [1871, 1875], # forest underground stones right
19   [1877, 1879], # forest underground stones bottom
20   [2058, 2060, 2061, 2065, 2066, 2070], # ice tiles
21   [2179, 2180, 2181, 2187, 2188, 2189, 2195, 2196, 2197] # snow bg
22 ];
23 our $TileMap = {};
24
25 sub init
26 {
27   for (@$TileGroups)
28   {
29     my $group = $_;
30
31     for (@$group)
32     {
33       my $id = $_;
34
35       $TileMap->{$id} = $group;
36     }
37   }
38 } # init
39
40 sub get_random
41 {
42   my $id = shift;
43   my $group;
44   my $group_size;
45
46   if (!$TileMap->{$id})
47   {
48     return ($id);
49   }
50
51   $group = $TileMap->{$id};
52   $group_size = 0 + @$group;
53
54   return ($group->[int (rand ($group_size))]);
55 }
56
57 if (-t STDIN)
58 {
59         print STDERR "Usage: ./tile_randomizer.px <in_file >out_file\n";
60         exit (1);
61 }
62
63 init ();
64   
65 while (<>)
66 {
67   my $line = $_;
68   chomp ($line);
69
70   if ($line =~ m/[^\s\d]/)
71   {
72     print "$line\n";
73     next;
74   }
75
76   $line =~ s/\b([1-9][0-9]{0,3})\b/get_random ($1)/ge;
77
78   print "$line\n";
79 }
80
81 exit (0);