my %allweps;
while(my ($k, $v) = each %$matrix)
{
- for(my ($k2, $v2) = each %$v)
+ while(my ($k2, $v2) = each %$v)
{
next if $k eq $k2;
next if !$v2;
}
elsif($event eq 'startmatrix')
{
- my ($addr, $map, @columns) = @data;
+ my ($addr, $type, $map, @columns) = @data;
$addr ||= 'any';
$map ||= 'any';
- print "For server @{[$addr || 'any']} map @{[$map || 'any']}:\n";
+ $type ||= 'any';
+ print "For server $addr type $type map $map:\n";
}
elsif($event eq 'startrow')
{
}
}
+sub html($)
+{
+ my ($s) = @_;
+ $s =~ s/[^-_A-Za-z0-9 ]/&#@{[ord $&]};/g;
+ return $s;
+}
+
+sub nospace($)
+{
+ my ($s) = @_;
+ $s =~ s/ //g;
+ return $s;
+}
+
sub out_html($@)
{
my ($event, @data) = @_;
}
elsif($event eq 'startmatrix')
{
- my ($addr, $map, @columns) = @data;
+ my ($addr, $type, $map, @columns) = @data;
$addr ||= 'any';
+ $type ||= 'any';
$map ||= 'any';
- print "<h2>For server @{[$addr || 'any']} map @{[$map || 'any']}:</h2>\n";
+ print "<h2>For server $addr type $type map $map</h2>\n";
print "<table><tr><th>Weapon</th><th>Rating</th>\n";
- printf '<th><img width=70 height=80 src="http://svn.icculus.org/*checkout*/nexuiz/trunk/Docs/htmlfiles/weaponimg/thirdperson-%s.png" alt="%s"></th>', $stats->weaponid_to_model($_), $stats->weaponid_to_name($_) for @columns;
+ printf '<th><img width=64 height=87 src="weaponimg/%s_3rd_small.png" title="%s" alt="%s"></th>', $stats->weaponid_to_model($_), html $stats->weaponid_to_name($_), html nospace $stats->weaponid_to_name($_) for @columns;
print "</tr>\n";
}
elsif($event eq 'startrow')
{
my ($row, $val) = @data;
- printf '<tr><th><img width=108 height=53 src="http://svn.icculus.org/*checkout*/nexuiz/trunk/Docs/htmlfiles/weaponimg/firstperson-%s.png" alt="%s"></th><th align=right>%s</th>', $stats->weaponid_to_model($row), $stats->weaponid_to_name($row), defined $val ? sprintf("%8.5f", $val) : "N/A";
+ printf '<tr><th><img width=96 height=64 src="weaponimg/%s_1st_small.png" title="%s" alt="%s"></th><th align=right>%s</th>', $stats->weaponid_to_model($row), html $stats->weaponid_to_name($row), html nospace $stats->weaponid_to_name($row), defined $val ? sprintf("%8.5f", $val) : "N/A";
}
elsif($event eq 'cell')
{
}
}
-my $out = $ENV{html} ? \&out_html : \&out_text;
+my $out_html_cache_fh;
+sub out_html_cache($@)
+{
+ my ($event, @data) = @_;
+ if($event eq 'startmatrix')
+ {
+ # open out file
+ my ($addr, $type, $map, @columns) = @data;
+ if(!defined $addr)
+ {
+ $type ||= ':any';
+ $map ||= ':any';
+ mkdir "$type";
+ open $out_html_cache_fh, ">", "$type/$map"
+ or warn "open $type/$map: $!";
+ select $out_html_cache_fh;
+ }
+ }
+ out_html($event, @data)
+ if defined $out_html_cache_fh;
+ if($event eq 'endmatrix')
+ {
+ # close out file
+ select STDOUT;
+ close $out_html_cache_fh
+ if defined $out_html_cache_fh;
+ undef $out_html_cache_fh;
+ }
+}
+
+my $out =
+ $ENV{html_cache} ? \&out_html_cache :
+ $ENV{html} ? \&out_html :
+ \&out_text;
LoadData();
$out->(start => ());
$stats->allstats(sub
{
- my ($addr, $map, $data) = @_;
+ my ($addr, $type, $map, $data) = @_;
my $values = Evaluate $data;
my $valid = defined [values %$values]->[0];
my @weapons_sorted = sort { $valid ? $values->{$b} <=> $values->{$a} : $a <=> $b } keys %$values;
my $min = undef;
- $out->(startmatrix => ($addr, $map, @weapons_sorted));
+ $out->(startmatrix => ($addr, $type, $map, @weapons_sorted));
for my $row(@weapons_sorted)
{
$out->(startrow => $row, ($valid ? $values->{$row} : undef));