chiark / gitweb /
move into misc-data.pl: NZ from generate-plag
[pandemic-rising-tide.git] / generate-board
index 1cc324280a60cdb0ef2c3ffec89794209e5bfdf2..a5d2cdb6f6245108823d0898683af901e8bd879e 100755 (executable)
@@ -245,6 +245,13 @@ sub transform_coordinates () {
   $mid = ($lims[1] - $lims[0]) * 0.5;
 }
 
+sub pos_plus_dy_adjunct ($) {
+  my ($cval) = @_;
+  my ($x,$y,$whadjunct) = @$cval;
+  my $adjunct = $adjuncts_dy_from_boundings{ $whadjunct//'' };
+  return "$x $y".( defined $adjunct and " $adjunct add translate" );
+}
+
 sub adjust_sea() {
   # Adjusts the top and bottom edges of the sea
   my $poly = $region{$c{Sea}}{Polygon};
@@ -778,10 +785,7 @@ sub decks(){
 
   foreach my $deck (@{ $c{Decks} }) {
     o("  $lw setlinewidth ",miscpscolour($deck->{Colour}),"\n");
-    o("  gsave @{ $deck->{Pos} } ");
-    my $adjunct = $adjuncts_dy_from_boundings{ $deck->{dyAdjunct} };
-    if (defined $adjunct) { o("$adjunct add translate"); }
-    o("     ");
+    o("  gsave ".pos_plus_dy_adjunct($deck->{PosAdy})."     ");
     my $rotate = $deck->{Rotate};
     if ($rotate) { o(" $rotate rotate "); }
     o("deckpairpathx stroke grestore");
@@ -790,7 +794,7 @@ sub decks(){
 
 sub sea_track(){
   o("% sea level track\n");
-  o("  gsave 11 700 translate\n");
+  o("  gsave ",pos_plus_dy_adjunct($c{PA}{SeaTrack})," translate\n");
   my $track = $c{SeaTrack};
   my $token_sz = $hs_sz;
   my $dy = $token_sz * 1.25;
@@ -929,53 +933,58 @@ sub dykes(){
   }
 }
 
-sub hs_initial_1 ($$$;$$$) {
-  my ($colour, $xi,$yi, $text, $text2, $fn) = @_;
+sub hs_initial_1 ($) {
+  my ($hs1) = @_;
+  my ($colour) = $hs1->{Colour};
+  my ($text, $text2);
+  if ($hs1->{Water}) {
+    ($text,$text2) = ('up to '.$hs1->{Water}, 'fewer');
+  } elsif ($hs1->{Dykes}) {
+    ($text,$text2) = ('up to '.$hs1->{Dykes}, '');
+  }
   my $interval = $hs_sz * 1.75;
   my $demo_h = $hs_sz; #water_cubes_sz(3);
   my $demo_x0 = $hs_sz * 0.75 + $dyke_l * 0.60;
   my $demo_w = $demo_x0 + $dyke_l * 0.60;
   o("  % HS I $colour\n");
   o("  gsave\n");
-  o("    550 1705 $adjuncts_dy_from_boundings{Top} add translate\n");
-  o("    ", ($xi*$interval), " ", (($yi-1)*$interval), " translate\n");
-  if ($fn) {
+  o("    ".pos_plus_dy_adjunct($c{PA}{HS1_initials})."\n");
+  o("    ", ($hs1->{XIYI}[0]*$interval), " ",
+           (($hs1->{XIYI}[1]-1)*$interval), " translate\n");
+  if (defined $text) {
     o("  gsave\n");
     o("        $demo_h setlinewidth 0 0 moveto $demo_w 0 rlineto\n");
     o("        ", facepscolour($colour), " stroke grestore\n");
   }
   one_hs($colour, mkvec(0,0));
-  if ($fn) {
+  if (defined $text) {
     o("    /words {\n");
     o("      2 copy moveto                      ($text) show\n");
     o("      2 copy moveto 0 -$text_sz rmoveto ($text2) show\n");
     o("    } bind def\n");
     o("    gsave ".($hs_sz * 0.8)." $cube_gap translate wordsshow grestore\n");
     o("    $demo_x0 ",($hs_sz * -0.25)," translate\n");
-    $fn->();
   }
-  o("  grestore\n");
-}
-
-sub hs_initial () {
-  hs_initial_1('red',     0,0);
-  hs_initial_1('purple',  0,1);
-  hs_initial_1('green',   1,0, 'up to 6', 'fewer', sub {
+  if ($hs1->{Water}) {
     o("    ",(water_cubes_sz(1))," 0 translate\n");
     o("    0 ",(-water_cubes_sz(1) * 0.3)," translate\n");
     water_cubes(1, miscpscolour('edge'));
-  });
-  hs_initial_1('yellow',  1,1, 'up to 4', '', sub {
+  } elsif ($hs1->{Dykes}) {
     o("    newpath dykepath\n");
     o("    gsave ",miscpscolour('edge')," stroke grestore\n");
     o("    gsave ",miscpscolour('dykehsadd')," fill grestore\n");
-  });
+  }
+  o("  grestore\n");
+}
+
+sub hs_initial () {
+  hs_initial_1($_) foreach @{ $c{HS1} };
 }
 
 sub play_hint () {
   my $sz = 20;
   o("  gsave ",miscpscolour('hinttext'),
-    " 260 1715 $adjuncts_dy_from_boundings{$c{PlayHintdyAdjunct}} add translate\n");
+    " ",pos_plus_dy_adjunct($c{PA}{PlayHint}),"\n");
   o("  /Helvetica-Bold findfont $sz scalefont setfont\n");
   my @t = split /\n/, $c{PlayHint};
   foreach my $i (0..$#t) {