[nexuiz-commits] r6861 - trunk/misc/tools
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Thu Jun 4 07:55:41 EDT 2009
Author: div0
Date: 2009-06-04 07:55:41 -0400 (Thu, 04 Jun 2009)
New Revision: 6861
Modified:
trunk/misc/tools/weapon-profiler-analyzer.pl
Log:
refactor only
Modified: trunk/misc/tools/weapon-profiler-analyzer.pl
===================================================================
--- trunk/misc/tools/weapon-profiler-analyzer.pl 2009-06-04 09:56:53 UTC (rev 6860)
+++ trunk/misc/tools/weapon-profiler-analyzer.pl 2009-06-04 11:55:41 UTC (rev 6861)
@@ -184,40 +184,85 @@
return \%values;
}
+sub out_text($@)
+{
+ my ($event, @data) = @_;
+ if($event eq 'start')
+ {
+ }
+ elsif($event eq 'startmatrix')
+ {
+ my ($addr, $map, @columns) = @data;
+ $addr ||= 'any';
+ $map ||= 'any';
+ print "For server @{[$addr || 'any']} map @{[$map || 'any']}:\n";
+ }
+ elsif($event eq 'startrow')
+ {
+ my ($row, $val) = @data;
+ printf " %-30s %8s |", $row, defined $val ? sprintf("%8.5f", $val) : "N/A";
+ }
+ elsif($event eq 'cell')
+ {
+ my ($win, $lose, $p) = @data;
+ if(!defined $p)
+ {
+ print " . ";
+ }
+ elsif(!$p)
+ {
+ printf " %6.3f", 0;
+ }
+ else
+ {
+ printf " %+6.3f", $p;
+ }
+ }
+ elsif($event eq 'endrow')
+ {
+ print "\n";
+ }
+ elsif($event eq 'endmatrix')
+ {
+ my ($min) = @data;
+ $min ||= 0;
+ print " Relevance: $min\n";
+ print "\n";
+ }
+ elsif($event eq 'end')
+ {
+ my ($min) = @data;
+ $min ||= 0;
+ print " Relevance: $min\n";
+ print "\n";
+ }
+}
+
+my $out = \&out_text;
+
LoadData();
+$out->(start => ());
$stats->allstats(sub
{
my ($addr, $map, $data) = @_;
- print "For server @{[$addr || 'any']} map @{[$map || 'any']}:\n";
my $values = Evaluate $data;
my $valid = defined [values %$values]->[0];
my @weapons_sorted = sort { $valid ? $values->{$b} <=> $values->{$a} : $a cmp $b } keys %$values;
my $min = undef;
+ $out->(startmatrix => ($addr, $map, @weapons_sorted));
for my $row(@weapons_sorted)
{
- printf " %-30s %8s |", $row, $valid ? sprintf("%8.5f", $values->{$row}) : "N/A";
+ $out->(startrow => $row, ($valid ? $values->{$row} : undef));
for my $col(@weapons_sorted)
{
my $win = ($data->{$row}{$col} || 0);
my $lose = ($data->{$col}{$row} || 0);
$min = $win + $lose
if $row ne $col and (not defined $min or $min > $win + $lose);
- if(($row eq $col) || ($win + $lose == 0))
- {
- print " . ";
- }
- elsif($win == $lose)
- {
- printf " %6.3f", 0;
- }
- else
- {
- my $p = 2 * ($win / ($win + $lose) - 0.5);
- printf " %+6.3f", $p;
- }
+ $out->(cell => ($win, $lose, (($row ne $col) && ($win + $lose)) ? (2 * $win / ($win + $lose) - 1) : undef));
}
- print "\n";
+ $out->(endrow => ());
}
- $min ||= 0;
- print " Relevance: $min\n";
+ $out->(endmatrix => ($addr, $min));
});
+$out->(end => ());
More information about the nexuiz-commits
mailing list