diff --git a/src/Player.php b/src/Player.php index 23a2f53..9656e8a 100644 --- a/src/Player.php +++ b/src/Player.php @@ -15,6 +15,7 @@ namespace JeroenED\Libpairtwo; use DateTime; use JeroenED\Libpairtwo\Enums\Gender; +use JeroenED\Libpairtwo\Enums\Result; use JeroenED\Libpairtwo\Enums\Title; /** @@ -227,15 +228,19 @@ class Player * * @return float */ - public function calculatePoints(int $round = -1): float + public function calculatePoints(int $round = -1, array $custompoints = []): float { $points = 0; foreach ($this->Pairings as $key => $pairing) { if ($key < $round || $round == -1) { - if (array_search($pairing->Result, Constants::WON) !== false) { - $points = $points + 1; + if ($pairing->Result == Result::WON_BYE) { + $points += (isset($this->CustomPoints[ 'bye' ])) ? $custompoints[ 'bye' ] : 1; + } elseif (array_search($pairing->Result, Constants::WON) !== false) { + $points += (isset($custompoints[ 'win' ])) ? $custompoints[ 'win' ] : 1; } elseif (array_search($pairing->Result, Constants::DRAW) !== false) { - $points = $points + 0.5; + $points += (isset($custompoints[ 'draw' ])) ? $custompoints[ 'draw' ] : 0.5; + } elseif (array_search($pairing->Result, Constants::LOST) !== false) { + $points += (isset($custompoints[ 'loss' ])) ? $custompoints[ 'loss' ] : 0; } } } diff --git a/src/Readers/Swar5.php b/src/Readers/Swar5.php index 5c0c060..b6a4e42 100644 --- a/src/Readers/Swar5.php +++ b/src/Readers/Swar5.php @@ -274,11 +274,11 @@ class Swar5 implements ReaderInterface $this->Tournament->SW_AmerPresence = $this->readData('Int', $swshandle); $this->Tournament->Plusieurs = $this->readData('Int', $swshandle); $this->Tournament->FirstTable = $this->readData('Int', $swshandle); - $this->Tournament->SW321_Win = $this->readData('Int', $swshandle); - $this->Tournament->SW321_Nul = $this->readData('Int', $swshandle); - $this->Tournament->SW321_Los = $this->readData('Int', $swshandle); - $this->Tournament->SW321_Bye = $this->readData('Int', $swshandle); - $this->Tournament->SW321_Pre = $this->readData('Int', $swshandle); + $this->Tournament->CustomPoints['win'] = $this->readData('Int', $swshandle) / 4; + $this->Tournament->CustomPoints['draw'] = $this->readData('Int', $swshandle) / 4; + $this->Tournament->CustomPoints['loss'] = $this->readData('Int', $swshandle) / 4; + $this->Tournament->CustomPoints['bye'] = $this->readData('Int', $swshandle) / 4; + $this->Tournament->CustomPoints['absent'] = $this->readData('Int', $swshandle) / 4; $this->Tournament->EloUsed = $this->readData('Int', $swshandle); $this->Tournament->TournoiStd = $this->readData('Int', $swshandle); $this->Tournament->TbPersonel = $this->readData('Int', $swshandle); diff --git a/src/Tournament.php b/src/Tournament.php index f511be1..9eec186 100644 --- a/src/Tournament.php +++ b/src/Tournament.php @@ -204,6 +204,13 @@ class Tournament */ public $Tiebreaks = []; + /** + * Custom points for the tournament + * + * @var float[] + */ + public $CustomPoints = ['win' => 1, 'draw' => 0.5, 'loss' => 0, 'bye' => 1, 'absent' => 0]; + /** * The year or season the tournament is held or is count for * @@ -699,7 +706,7 @@ class Tournament */ private function calculatePoints(Player $player): float { - return $player->calculatePoints(); + return $player->calculatePoints(-1, $this->CustomPoints); } /**