annotate parsealloys.pl @ 29:0abb8333f7dc

Bump copyright years.
author Matti Hamalainen <ccr@tnsp.org>
date Thu, 29 Mar 2018 12:17:56 +0300
parents cc87079b40aa
children 6b2827b1b810
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1 #!/usr/bin/perl -w
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2 #
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3 # BatMUD alloy data parser and converter
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
4 # Developed by Matti Hämäläinen (Ggr Pupunen) <ccr@tnsp.org>
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
5 # (C) Copyright 2009-2015 Tecnic Software productions (TNSP)
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
6 #
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
7 # Old format of alloying skill output was somewhat different, but
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
8 # it has been tuned somewhere after 2005. New output format is:
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
9 #
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
10 #You mix obsidian and crystal and create a quantity of glass
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
11 #You mix nullium and illumium and create a quantity of dukonium
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
12 #You mix nullium and illumium and create a quantity of dukonium
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
13 use strict;
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
14 use warnings;
25
cc87079b40aa Fix import of materials.pm in parsealloys.pl
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
15 use File::Basename;
cc87079b40aa Fix import of materials.pm in parsealloys.pl
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
16 use lib dirname(__FILE__);
0
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
17 use materials;
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
18
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
19 my $domark = 0;
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
20 my $mode = shift or die("Usage: $0 <-php|-text>\n");
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
21
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
22 if ($mode eq "-php")
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
23 {
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
24 $domark = 1;
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
25 }
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
26 elsif ($mode eq "-text")
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
27 {
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
28 }
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
29 else
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
30 {
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
31 die("$0: Invalid operation mode '$mode'.\n");
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
32 }
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
33
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
34
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
35 sub ul($)
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
36 {
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
37 my $tmp = $_[0];
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
38 $tmp =~ s/ /_/g;
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
39 return $tmp;
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
40 }
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
41
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
42
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
43 ###
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
44 ### Parse data from input, ignoring fumbled alloys
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
45 ###
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
46 my %data = ();
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
47 my $fumble = 0;
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
48 my $nline = 0;
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
49 my $ignored = 0;
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
50
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
51
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
52 sub addCombo($$$)
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
53 {
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
54 if (!$fumble)
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
55 {
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
56 push(@{$data{$_[1]}{$_[2]}}, $_[0]);
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
57 }
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
58 else
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
59 {
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
60 $ignored++;
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
61 #print STDERR "Ignoring fumbled combo $_[1] + $_[2] = $_[0]\n";
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
62 }
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
63 $fumble = 0;
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
64 }
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
65
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
66
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
67 while (<STDIN>) {
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
68 chomp;
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
69 if (/^You mix ([a-z ]+?) and ([a-z ]+?) and create a quantity of (.+?)\.?$/)
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
70 {
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
71 addCombo($3, $1, $2);
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
72 }
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
73 elsif (/^([a-zA-Z0-9]+)#([a-z ]+)\+([a-z ]+)=([a-z ]+)$/)
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
74 {
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
75 addCombo($4, $2, $3);
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
76 }
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
77 elsif (/^(You slip up and fumble your attempt)/)
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
78 {
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
79 $fumble = 1;
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
80 }
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
81 }
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
82
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
83 print STDERR "Ignored ".$ignored." fumbled alloys.\n";
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
84
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
85
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
86 ###
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
87 ### Re-format the data into single "ordered" hash, using as
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
88 ### close to alphabetical order as possible.
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
89 ###
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
90 my %final = ();
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
91 foreach my $min1 (keys %data)
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
92 {
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
93 foreach my $min2 (keys %{$data{$min1}})
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
94 {
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
95 if (!defined($final{$min1}{$min2}) && !defined($final{$min2}{$min1}))
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
96 {
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
97 # Get both (a, b) and (b, a) combinations results into same array
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
98 my @tmp = ();
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
99 if (defined($data{$min1}{$min2}))
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
100 {
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
101 push(@tmp, @{$data{$min1}{$min2}});
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
102 }
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
103 if (defined($data{$min2}{$min1}))
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
104 {
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
105 push(@tmp, @{$data{$min2}{$min1}});
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
106 }
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
107
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
108 # Determine if there are multiple results and which is the most likely.
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
109 # Some alloy combinations are inherently "unstable".
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
110 my %seen = ();
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
111 $seen{$_}++ foreach (@tmp);
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
112 if ($domark)
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
113 {
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
114 $final{$min1}{$min2} = $final{$min2}{$min1} = \%seen;
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
115 }
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
116 elsif ($min1 lt $min2)
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
117 {
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
118 $final{$min1}{$min2} = \%seen;
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
119 }
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
120 else
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
121 {
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
122 $final{$min2}{$min1} = \%seen;
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
123 }
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
124 }
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
125 }
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
126 }
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
127
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
128
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
129 ## Output the results
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
130 if ($mode eq "-php")
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
131 {
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
132 print "<?php\n".
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
133 "\$alloyTable = [\n";
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
134
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
135 foreach my $min1 (sort { $a cmp $b } keys %$Materials::matTable)
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
136 {
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
137 print " \"$min1\" => ";
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
138 if (scalar(keys %{$final{$min1}}) > 0)
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
139 {
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
140 print "[";
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
141 foreach my $min2 (sort { $a cmp $b } keys %{$final{$min1}})
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
142 {
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
143 print "\"$min2\" => [";
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
144 foreach my $res (sort { $final{$min1}{$min2}{$a} <=> $final{$min1}{$min2}{$b} } keys %{$final{$min1}{$min2}}) {
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
145 print "\"$res\" => ".$final{$min1}{$min2}{$res}.", ";
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
146 }
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
147 print "], ";
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
148 }
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
149 print "],\n";
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
150 }
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
151 else
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
152 {
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
153 print "null,\n";
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
154 }
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
155 }
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
156
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
157 print "];\n\n";
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
158
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
159 # Create 'reverse' alloy table
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
160 my %restab = ();
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
161 foreach my $res (keys %$Materials::matTable)
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
162 {
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
163 foreach my $min1 (keys %final)
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
164 {
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
165 foreach my $min2 (keys %{$final{$min1}})
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
166 {
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
167 my $tmp = $final{$min1}{$min2};
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
168 if (scalar(keys %$tmp) > 1)
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
169 {
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
170 # print STDERR "Ignoring multi $min1 + $min2 = ".join(", ", keys %$tmp)."\n";
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
171 }
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
172 else
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
173 {
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
174 foreach my $key (keys %$tmp)
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
175 {
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
176 if ($key eq $res && !defined($restab{$res}{$min1}{$min2}) && !defined($restab{$res}{$min2}{$min1}))
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
177 {
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
178 $restab{$res}{$min1}{$min2} = $$tmp{$key};
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
179 }
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
180 }
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
181 }
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
182 }
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
183 }
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
184 }
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
185
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
186 print "\$alloyRevTable = [\n";
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
187 foreach my $res (sort { $a cmp $b } keys %restab)
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
188 {
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
189 print " \"$res\" => [\n";
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
190 foreach my $min1 (sort { $a cmp $b } keys %{$restab{$res}})
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
191 {
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
192 if (scalar(keys %{$restab{$res}{$min1}}) > 0)
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
193 {
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
194 print " \"$min1\" => [";
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
195 foreach my $min2 (sort { $a cmp $b } keys %{$restab{$res}{$min1}})
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
196 {
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
197 print "\"$min2\" => ".$restab{$res}{$min1}{$min2}.",";
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
198 }
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
199 print "],\n";
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
200 }
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
201 }
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
202 print " ],\n";
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
203 }
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
204
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
205 print "];\n\n".
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
206 "?>";
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
207 }
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
208 elsif ($mode eq "-text")
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
209 {
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
210 my $total = 0;
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
211 my %tdata = ();
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
212
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
213 foreach my $type (sort { $a cmp $b } keys %{$Materials::matByType})
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
214 {
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
215 my $subtotal = 0;
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
216 print "\n".$$Materials::revTransTable{16}{$type}." alloys\n".
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
217 "=========================================================\n";
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
218
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
219 foreach my $min1 (@{$$Materials::matByType{$type}})
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
220 {
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
221 foreach my $min2 (sort { $a cmp $b } keys %{$final{$min1}})
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
222 {
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
223 printf "%-35s = ", ul($min1)." + ".ul($min2);
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
224 my $n = 0;
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
225 foreach my $res (sort {
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
226 $final{$min1}{$min2}{$a} <=> $final{$min1}{$min2}{$b}
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
227 ||
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
228 $a cmp $b
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
229 } keys %{$final{$min1}{$min2}})
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
230 {
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
231 print ul($res)."[".$final{$min1}{$min2}{$res}."] ";
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
232 $n++;
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
233 }
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
234 if ($n > 1) { print " (unstable)"; }
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
235 print "\n";
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
236 $total++;
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
237 $subtotal++;
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
238 }
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
239 }
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
240 print "\n".$subtotal." ".lc($$Materials::revTransTable{16}{$type})." type alloys.\n\n";
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
241 }
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
242
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
243 print "\n".$total." alloys total.\n";
c4f3b5b88891 Import material and alloy stuff into new repository.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
244 }