graphplay: draw unit limit
authorShiar <shiar@shiar.org>
Mon, 11 Feb 2008 20:15:15 +0000 (21:15 +0100)
committerShiar <shiar@shiar.org>
Wed, 9 Jul 2008 23:54:01 +0000 (01:54 +0200)
Fill area between current unit count and unit cap (same color as units
line, but transparant).

graphplay

index bbbbc28f98c81af6a25c23a2c8bf12b387d2527f..33279b86c53135ba60da4221489f884f47aaa491 100755 (executable)
--- a/graphplay
+++ b/graphplay
@@ -61,7 +61,7 @@ for my $input (@ARGV) {
                }
        }
 
-       for (0 .. 2) {
+       for (0 .. 3) {
                my $line = $lines[$_][$player];
                my $start;
                my $lasty;
@@ -80,6 +80,7 @@ for my $input (@ARGV) {
        $player++;
 }
 
+$max[2] = $max[3];
 my @norm = ((map {$area{fieldysize} / $_} @max), $area{fieldxsize} / $maxtime);
 
 my $xsteps = 25;
@@ -107,6 +108,12 @@ for ([0 => "min", "Minerals"], [1 => "gas", "Gas"], [2 => "unit", "Units"]) {
        open my $output, '>', "$filename.svg";
        $svg->process('timeline', {
                title => "$title timeline for /replay/20080201md4x4",
+               fill => $line == 2 && [
+                       map { "\n\tM " . join "\tL ", map sprintf("%s %s\n",
+                               $area{fieldxmin} + $_->[0] * $norm[4],
+                               $area{fieldymax} - $_->[1] * $norm[$line+1]
+                       ), grep defined, @{$lines[$line][$_]}, reverse @{$lines[$line+1][$_]} } 0 .. $#{$lines[$line]}
+               ],
                paths => [
                        map { "\n\tM " . join "\tL ", map sprintf("%s %s\n",
                                $area{fieldxmin} + $_->[0] * $norm[4],
@@ -151,5 +158,14 @@ __DATA__
 [% END %]
 </g>
 
+[% IF fill %]
+<g class="data">
+[% count = 0 %]
+[% FOREACH path = fill %][% count = count + 1 %]
+<path d="[% path %]" class="fill[% count %]" />
+[% END %]
+</g>
+[% END %]
+
 </svg>