File indexing completed on 2024-04-21 04:04:45

0001 #!/usr/bin/perl -W
0002 
0003 use strict;
0004 
0005 my @countries;
0006 my @continents;
0007 my %files;
0008 
0009 my $inFiles = 0;
0010 my $inContinents = 0;
0011 my $inCountries = 0;
0012 my $inBorders = 0;
0013 
0014 while (<>)
0015 {
0016   chomp;
0017   if (/^\s*$/) 
0018   {
0019     next;
0020   }
0021   if (/\[files\]/)
0022   {
0023     $inFiles = 1;
0024     $inContinents = 0;
0025     $inCountries = 0;
0026     $inBorders = 0;
0027   }
0028   elsif (/\[continents\]/)
0029   {
0030     $inFiles = 0;
0031     $inContinents = 1;
0032     $inCountries = 0;
0033     $inBorders = 0;
0034   }
0035   elsif (/\[countries\]/)
0036   {
0037     $inFiles = 0;
0038     $inContinents = 0;
0039     $inCountries = 1;
0040     $inBorders = 0;
0041   }
0042   elsif (/\[borders\]/)
0043   {
0044     $inFiles = 0;
0045     $inContinents = 0;
0046     $inCountries = 0;
0047     $inBorders = 1;
0048   }
0049   elsif ($inFiles)
0050   {
0051     if (/([^\s]+)\s+([^\s]+)/)
0052     {
0053       $files{$1} = $2;
0054     }
0055   }
0056   elsif ($inContinents)
0057   {
0058     if (/([^\s]+)\s+([^\s]+)\s+([^\s]+)/)
0059     {
0060       my %continent;
0061       $continent{"name"} = $1;
0062       $continent{"bonus"} = $2;
0063       $continent{"color"} = $1;
0064       push @continents, \%continent;
0065     }
0066   }
0067   elsif ($inCountries)
0068   {
0069     if (/([^\s]+)\s+([^\s]+)\s+([^\s]+)\s+([^\s]+)\s+([^\s]+)/)
0070     {
0071       my %country;
0072       $country{"name"} = $2;
0073       push @{${$continents[$3-1]}{"countries"}}, $1;
0074       $country{"continent"} = $3;
0075       $country{"x"} = int($4 * 1.5);
0076       $country{"y"} = int($5 * 1.5);
0077       my @bords;
0078       $country{"borders"} = \@bords;
0079       $countries[$1] = \%country;
0080     }
0081   }
0082   elsif ($inBorders)
0083   {
0084     if ($_ !~ /^$/)
0085     {
0086       my @tab = split(/ /, $_);
0087       my $country = shift @tab;
0088       ${$countries[$country]}{"borders"} = \@tab;
0089     }
0090   }
0091 }
0092 
0093 for (my $i=1; $i <= $#countries; $i++)
0094 {
0095   my %country = %{$countries[$i]};
0096 #   print "$country{'name'}\n";
0097   my ($canx, $cany, $infx, $infy, $cavx, $cavy);
0098   $canx = $country{'x'}-30;
0099   $cany = $country{'y'}-25;
0100   $infx = $country{'x'}-25;
0101   $infy = $country{'y'}+5;
0102   $cavx = $country{'x'}+15;
0103   $cavy = $country{'y'}-15;
0104   print <<EOF;
0105   <country id="$i" name="$country{'name'}" >
0106     <flag-point x="$country{'x'}" y="$country{'y'}" />
0107     <central-point x="$country{'x'}" y="$country{'y'}" />
0108     <cannons-point x="$canx" y="$cany" />
0109     <cavalry-point x="$cavx" y="$cavy" />
0110     <infantry-point x="$infx" y="$infy" />
0111     <neighbours>
0112 EOF
0113 
0114   my $neighbour;
0115   foreach $neighbour ( @{ $country{"borders"} } )
0116   {
0117     print "      <neighbour id=\"$neighbour\" />\n";
0118   }
0119   
0120   print <<EOF;
0121     </neighbours>
0122   </country>
0123 EOF
0124 }
0125 
0126 
0127 for (my $i=0; $i <= $#continents; $i++)
0128 {
0129   my $id = $i+1;
0130   my %continent = %{$continents[$i]};
0131   print "  <continent id=\"$id\" name=\"$continent{name}\" bonus=\"$continent{bonus}\" >\n";
0132   foreach my $country (@{$continent{"countries"}})
0133   {
0134     print "    <continent-country id=\"$country\" />\n";
0135   }
0136 
0137   print "  </continent>\n";
0138 }