Added average performance tiebreak

This commit is contained in:
Jeroen De Meerleer 2019-05-30 21:30:28 +02:00
parent 51c6b8249d
commit 0efd0a2baa
2 changed files with 28 additions and 0 deletions

View File

@ -122,8 +122,10 @@ abstract class Tiebreaks extends Tournament
return $points;
}
/**
* @param Player $player
* @param int $cut
* @return float
*/
protected function calculateAverageRating(Player $player, int $cut = 0)
@ -145,6 +147,29 @@ abstract class Tiebreaks extends Tournament
return round(array_sum($allratings) / count($allratings));
}
/**
* @param Player $player
* @param int $cut
* @return float
*/
protected function calculateAveragePerformance(Player $player, int $cut = 0)
{
$pairings = $player->getPairings();
$allratings = [];
foreach ($pairings as $pairing) {
if (array_search($pairing->getResult(), Constants::NotPlayed) === false) {
$toadd = $pairing->getOpponent()->getPerformance();
if ($toadd != 0) {
$allratings[] = $toadd;
}
}
}
sort($allratings);
$allratings = array_slice($allratings, $cut);
return round(array_sum($allratings) / count($allratings));
}
/**
* @param Player $player
* @param int $cut

View File

@ -317,6 +317,9 @@ class Tournament extends Tiebreaks
case Tiebreak::Cumulative:
return $this->calculateCumulative($player);
break;
case Tiebreak::Performance:
return $this->calculateAveragePerformance($player);
break;
default:
return null;
}