#!/usr/bin/perl  -w

use strict;

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

do 'config.pl';

sub load_division ($);
sub Main ();

Main;

sub Main () {
  my $divfn = shift @::ARGV;
  my $div = $divfn; $div =~ s/\.t$//;
  open(PIPE, "|tee $div-tuff.txt") && select PIPE;
  load_division $divfn;
  close PIPE;
  }

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 < 6;
    (@losses) = sort { $a <=> $b } @losses;
    my $tuffness = 0;
    splice(@losses, 6);
    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]
    || $a->[2][0] <=> $b->[2][0]
    || $a->[2][1] <=> $b->[2][1]
    || $a->[2][2] <=> $b->[2][2]
    || $a->[2][3] <=> $b->[2][3]
    || $a->[2][4] <=> $b->[2][4]
    || $a->[2][5] <=> $b->[2][5]
    } @data) {
    printf "%4d %-$longest.${longest}s %s\n",
      $data->[0], $data->[1], "@{$data->[2]}";
    }

  }

