# HG changeset patch # User Matti Hamalainen # Date 1451477676 -7200 # Node ID c12fd8e5c1b01596187b387e8fed5f1296e55cc2 # Parent a4dff42fc40eeef49bd46f39704f339c70c4b7ba Simplify things regarding organ/organic, inorg/inorganic a bit, at the cost of some refactoring of variable handling. diff -r a4dff42fc40e -r c12fd8e5c1b0 materials/parsematerial.pl --- a/materials/parsematerial.pl Wed Dec 30 12:21:00 2015 +0200 +++ b/materials/parsematerial.pl Wed Dec 30 14:14:36 2015 +0200 @@ -16,7 +16,8 @@ # # Data translation table generated with csv2transtab.pl # -my %transTable = ( +my $transTable = +{ 2 => { "very light" => 0, "light" => 1, @@ -279,8 +280,11 @@ "slab" => 48, "flare" => 49, }, +}; - 99 => { +my $transFixes = +{ + 16 => { "Organic" => 0, "Cloth" => 1, "Paper" => 2, @@ -293,9 +297,10 @@ "Glass" => 9, "Gem" => 10, }, -); +}; -my %revTransTable = (); + +my $revTransTable = {}; my @fieldInfo = ( { "i" => 1, "f" => "name", "w" => 15, "l" => "Name", "s" => "Name" }, @@ -325,9 +330,9 @@ sub ptranslate($$) { - if (defined($revTransTable{$_[0]}{$_[1]})) + if (defined($$revTransTable{$_[0]}{$_[1]})) { - return $revTransTable{$_[0]}{$_[1]}; + return $$revTransTable{$_[0]}{$_[1]}; } else { @@ -350,9 +355,9 @@ sub mtranslate($$) { - if (defined($transTable{$_[0]}{$_[1]})) + if (defined($$transTable{$_[0]}{$_[1]})) { - return $transTable{$_[0]}{$_[1]}; + return $$transTable{$_[0]}{$_[1]}; } else { @@ -481,6 +486,12 @@ } } +# Fix material types +foreach my $mid (keys %$transFixes) +{ + $$transTable{$mid} = $$transFixes{$mid}; +} + # Sort the entries by name my @entries = sort { $a cmp $b } keys %$data; @@ -492,14 +503,14 @@ } # List of known types -my %matTypes = %{$transTable{16}}; +my $matTypes = $$transTable{16}; # Create reverse translation table -foreach my $mid (keys %transTable) +foreach my $mid (keys %$transTable) { - foreach my $mkey (keys %{$transTable{$mid}}) + foreach my $mkey (keys %{$$transTable{$mid}}) { - $revTransTable{$mid}{$transTable{$mid}{$mkey}} = $mkey; + $$revTransTable{$mid}{$$transTable{$mid}{$mkey}} = $mkey; } } @@ -607,14 +618,14 @@ elsif ($opt_mode eq "-tf") { print "/set gmat_names=".join(' ', map { my $tmp = $_; $tmp =~ s/ /_/g; $tmp } @entries)."\n"; - print "/set gmat_ntypes=".join(' ', map(lc(ptranslate(99,$$data{$_}{16})), @entries))."\n"; - print "/set gmat_types=".join(' ', sort map(lc(ptranslate(99,$_)), values %matTypes))."\n"; + print "/set gmat_ntypes=".join(' ', map(lc(ptranslate(16, $$data{$_}{16})), @entries))."\n"; + print "/set gmat_types=".join(' ', sort map(lc(ptranslate(16, $_)), values %$matTypes))."\n"; - foreach my $mkey (sort keys %matTypes) + foreach my $mkey (sort keys %$matTypes) { - my $type = $matTypes{$mkey}; + my $type = $$matTypes{$mkey}; print "/set gmat_type_". - lc(ptranslate(99, $type))."=". + lc(ptranslate(16, $type))."=". join('|', @{$matByType{$type}})."\n"; } } @@ -660,16 +671,16 @@ my $dumper = Data::Dumper->new([$data], ["matTable"]); print "our ".$dumper->Dump()."\n\n"; - $dumper = Data::Dumper->new([\%transTable], ["transTable"]); + $dumper = Data::Dumper->new([\%$transTable], ["transTable"]); print "our ".$dumper->Dump()."\n\n"; - $dumper = Data::Dumper->new([\%revTransTable], ["revTransTable"]); + $dumper = Data::Dumper->new([\%$revTransTable], ["revTransTable"]); print "our ".$dumper->Dump()."\n\n"; $dumper = Data::Dumper->new([\%matByType], ["matByType"]); print "our ".$dumper->Dump()."\n\n"; - $dumper = Data::Dumper->new([\%matTypes], ["matTypes"]); + $dumper = Data::Dumper->new([\%$matTypes], ["matTypes"]); print "our ".$dumper->Dump()."\n\n"; print "1;\n"; @@ -684,12 +695,12 @@ join(",", map { "\"".$$_{"l"}."\"" } @fieldInfo). ");\n\n". "\$matTransTable = array(\n"; - foreach my $i (sort { $a <=> $b } keys %transTable) + foreach my $i (sort { $a <=> $b } keys %$transTable) { print " array("; - foreach my $j (sort { $transTable{$i}{$a} <=> $transTable{$i}{$b} } keys %{$transTable{$i}}) + foreach my $j (sort { $$transTable{$i}{$a} <=> $$transTable{$i}{$b} } keys %{$$transTable{$i}}) { - print $transTable{$i}{$j}; + print $$transTable{$i}{$j}; $j =~ s/very /v./; $j =~ s/incredibly /incr./; print " => \"".$j."\","