#!/usr/bin/perl  -w

use strict;

use lib './lib/perl';
use TFile;

do 'config.pl';

sub load_division ($);
sub Main ();
sub Print ($);

$config::games_counted = 6;

Main;

sub Main () {
  my $divfn = shift @::ARGV;
  if (@::ARGV && $::ARGV[0] =~ /^\d+$/) {
    $config::games_counted = shift @::ARGV;
    }
  my $div = $divfn; $div =~ s/\.t$//;
  open(TEE, ">$div-tuff.txt");
  load_division $divfn;
  close TEE;
  }

sub load_division ($) {
  my $fn = shift;

  my $tf = new TFile($fn) or die "Can't open $fn: $!\n";
  my $number = 0;
  my @active = ();
  my @players;

  while (my $pp = $tf->ReadLine()) {
    next if exists $pp->{'etc'}{'off'};
    $players[$pp->{'id'}] = $pp;
    push(@active, $pp->{'id'});
    }

  my @data;
  my $longest = 1;
  for my $meid (@active) {
    my $me = $players[$meid];
#   print "$div-$meid: $me->{name}\n";
    my $oppsp = $me->{pairings};
    my $scoresp = $me->{scores};
    my @losses;
    for my $r (0..$#$oppsp) {
      my $oppid = $oppsp->[$r];
      next unless defined $oppid;
      my $opp = $players[$oppid];
      my $ms = $scoresp->[$r];
      my $os = $opp->{scores}[$r];
      if (defined $os) {
        if ($ms < $os) {
	  push(@losses, $os-$ms);
          }
        }
#     printf "%d %d %s %s\n", $meid, $r, ($ms||'?'), ($os||'?');
      }
    next if @losses < $config::games_counted;
    (@losses) = sort { $a <=> $b } @losses;
    my $tuffness = 0;
    splice(@losses, $config::games_counted);
    for my $loss (@losses) { $tuffness += $loss; }
    push(@data, [$tuffness, $me->{'name'}, \@losses]);
    $longest = length($me->{'name'}) if $longest < length($me->{'name'});
    }

  for my $data (sort {
    $a->[0] <=> $b->[0] || do {
      for (my $i=0; $i<$config::games_counted; $i++) {
	my $cmp = $a->[2][$i] <=> $b->[2][$i];
	return $cmp if $cmp;
	}
      0;
      }
    } @data) {
    Print sprintf("%4d %-$longest.${longest}s %s\n",
      $data->[0], $data->[1], "@{$data->[2]}");
    }

  }

sub Print ($) {
  my $s = shift;
  print $s;
  print TEE $s;
  }
