rendered paste body#!/usr/bin/perl -w
use strict;
use CGI qw(:standard);
print "Content-type: text/html\n\n";
print "<html><head><title>Alphabravo Ship Counter</title>\n<style> \n td { \n font-family: monospace;\nborder-left: 1px solid gray;\nborder-bottom: 1px solid gray;\n} \n body { font-family: monospace; \n}\n</style>" . '
<link rel="stylesheet" type="text/css" href="/kosmor/styles/common.css" />
' . "</head>\n\n<body>\n";
my $input = param('ships');
# $input =~ s/[\r]\n//g;
my @KK = (9,13,19,41,65,116,188,310,528,916,3226);
my @upkeep = (1250, 2000, 4500, 8000, 12500, 18000, 24500, 32000, 40500, 50000, 100000);
my @ships=(0,0,0,0,0,0,0,0,0,0,0);
my %have_name;
my $i=0;
my @a;
my %kk;
my %player;
my @KK_Ships;
my %cost;
my $k=0;
my $z=0;
my @name;
my $total_cost;
$_=$input;
if (param('battle') eq "battle") {
@a=(/\S+\(H(\d+)\) \S+ (\S+)/g);
}
else {
@a=(/\(H(\d+)\)\s\S+\s\S+\s(\S+)\x2c/g);
}
$i = 0;
while ($i<@a) {
$ships[$a[($i)]-1] = ($ships[$a[($i)]-1] + 1);
$player{$a[($i+1)]}[@a[($i)]-1] = ($player{$a[($i+1)]}[$a[($i)]-1] + 1);
unless($have_name{($a[$i+1])}++) {
$name[($i/2)] = $a[($i+1)];
}
$i += 2;
}
for($k=0; $k<@name; $k+=1) {
if (defined ($name[$k] )) {
$kk{$name[$k]}[11] = 0;
$player{$name[$k]}[11] = 0;
for($z=0; $z<11; $z+=1) {
$kk{$name[$k]}[$z] = $player{$name[$k]}[$z] * $KK[$z];
$player{$name[$k]}[11] = $player{$name[$k]}[11] + $player{$name[$k]}[$z];
$kk{$name[$k]}[11] = $kk{$name[$k]}[11] + $kk{$name[$k]}[$z];
}
}
}
my @array;
for($k=0; $k<@name; $k+=1) {
if (defined ($name[$k] )) {
push (@array, [$kk{$name[$k]}[11], $name[$k]]);
}
}
my @newarray; my $key=0;
foreach my $a (sort({$$b[$key]<=>$$a[$key]} @array)) { push (@newarray, @$a[1]) }
for($k=0; $k<@newarray; $k++) {
print '<table>' . "\n" . '<tr><th>Player</th><th>Class</th><th>Number</th><th>KK</th></tr>' . "\n";
for($z=0; $z<11; $z+=1) {
print '<tr><td width="120">' . $newarray[$k] . "</td><td>H" . ($z+1) . "</td><td>";
if ($player{$newarray[$k]}[$z] eq "") {print "0";} else { print $player{$newarray[$k]}[$z]; }
print "</td><td>" . $kk{$newarray[$k]}[$z] . "</td></tr>\n";
}
print '<tr style="border-top: 7px solid gray;" ><td>' . $newarray[$k] . '</td><td></td><td>' . $player{$newarray[$k]}[11] . '</td><td>' . $kk{$newarray[$k]}[11] . "</td></tr>\n</table>\n<br />\n<br />";
}
$i = 0;
while ($i < 11) {
$KK_Ships[$i] = $ships[$i] * $KK[$i];
$ships[11] += $ships[$i];
$KK_Ships[11] += $KK_Ships[$i];
$i += 1;
}
print '<table style="font-weight:bold;" >' . "\n" . '<tr><th>Class</th><th>Number</th><th>KK</th><td width="100px"> </td></tr>' . "\n";
$i = 0;
while ($i < 11) {
print "<tr><th>H" . ($i+1) . "</th><td>" . $ships[$i] . "</td><td>" . $KK_Ships[$i] . "</td>";
if (($KK_Ships[11] != 0 )) {
print '<td><img src="../kosmor/red.png" height="5px" width="';
printf("%.0f", (100 * $KK_Ships[$i] / $KK_Ships[11]));
print 'px" /></td>' . "</tr>\n";
}
else {
print '<td></td></tr>' . "\n";
}
$i += 1;
}
print '<tr style="border-top: 7px solid gray;" ><td></td><td>' . $ships[11] . '</td><td>' . $KK_Ships[11] . "</td></tr>\n</table>\n\n<br /><br />";
print '<table>' . "\n" . '<tr style="font-weight:bold;"><th>Player</th><th>Number</th><th>KK</th><th>% of KK</th><th>Upkeep</th><th>% of KK (graph)</th></tr>' . "\n";
for($k=0; $k<@newarray; $k++) {
$cost{$newarray[$k]} = 0;
for($z=0; $z<11; $z+=1) {
$cost{$newarray[$k]} += ( $player{$newarray[$k]}[$z] * $upkeep[$z] );
$total_cost += $player{$newarray[$k]}[$z] * $upkeep[$z];
}
print '<tr><td width="120">' . $newarray[$k] . "</td><td>" . $player{$newarray[$k]}[11] . "</td><td>" . $kk{$newarray[$k]}[11] . "</td><td>";
printf("%.1f", (100 * $kk{$newarray[$k]}[11] / $KK_Ships[11]));
print "%</td><td>" . $cost{$newarray[$k]} . '</td><td width="100px"><img src="../kosmor/red.png" height="5px" width="';
printf("%.0f", (100 * $kk{$newarray[$k]}[11] / $KK_Ships[11]));
print 'px" /></td>' . "
</tr>\n";
}
print '<tr><th colspan="4">Total</th><th colspan="2">' . $total_cost . '</th></tr>';
print '</table></body></html>';