Added reading out the order of tiebreaks

This commit is contained in:
Jeroen De Meerleer 2019-05-27 21:45:19 +02:00
parent d7729cef4a
commit 2721a281ff
4 changed files with 117 additions and 3 deletions

27
src/Enums/Tiebreak.php Normal file
View File

@ -0,0 +1,27 @@
<?php
namespace JeroenED\Libpairtwo\Enums;
use MyCLabs\Enum\Enum;
class Tiebreak extends Enum
{
const None = "";
const Buchholz = "Buchholz";
const BuchholzMed = "Buchholz Median";
const BuchholzCut = "Buchholz Cut";
const Sonneborn = "Sonneborn-Berger";
const Kashdan = "Kashdan";
const Cumulative = "Cumulative";
const Between = "Mutual Result";
const Koya = "Koya";
const Baumbach = "Baumbach";
const Performance = "Performance";
const Aro = "Average Rating";
const AroCut = "Average Rating Cut";
const BlackPlayed = "Black played";
const BlackWin = "Black Winned";
const Testmatch = "Testmatch";
const Drawing = "Drawing of lot";
}

View File

@ -26,6 +26,7 @@
namespace JeroenED\Libpairtwo\Models;
use JeroenED\Libpairtwo\Enums\Tiebreak;
use JeroenED\Libpairtwo\Enums\TournamentSystem;
use JeroenED\Libpairtwo\Player;
use DateTime;
@ -103,6 +104,9 @@ abstract class Tournament
/** @var Pairing[] */
private $Pairings;
/** @var Tiebreak[] */
private $Tiebreaks = [];
/**
* @return string
*/
@ -454,4 +458,20 @@ abstract class Tournament
{
$this->Pairings = $Pairings;
}
/**
* @return Tiebreak[]
*/
public function getTiebreaks(): array
{
return $this->Tiebreaks;
}
/**
* @param Tiebreak[] $Tiebreaks
*/
public function setTiebreaks(array $Tiebreaks): void
{
$this->Tiebreaks = $Tiebreaks;
}
}

View File

@ -26,6 +26,7 @@
namespace JeroenED\Libpairtwo\Readers;
use JeroenED\Libpairtwo\Enums\Tiebreak;
use JeroenED\Libpairtwo\Enums\Title;
use JeroenED\Libpairtwo\Enums\Gender;
use JeroenED\Libpairtwo\Enums\Color;
@ -218,9 +219,62 @@ class Pairtwo6 extends Pairtwo6Model implements ReaderInterface
$offset += $length;
// TieOrder
$length = 4 * 5;
$this->setBinaryData("TieOrder", $this->readData('Int', substr($swscontents, $offset, $length)));
$offset += $length;
for ($i = 0; $i < 5; $i++) {
$length = 4;
switch ($this->readData('Int', substr($swscontents, $offset, $length))) {
case 1:
$tiebreak = Tiebreak::Buchholz;
break;
case 2:
$tiebreak = Tiebreak::BuchholzMed;
break;
case 3:
$tiebreak = Tiebreak::BuchholzMed;
break;
case 4:
$tiebreak = Tiebreak::Sonneborn;
break;
case 5:
$tiebreak = Tiebreak::Kashdan;
break;
case 6:
$tiebreak = Tiebreak::Cumulative;
break;
case 7:
$tiebreak = Tiebreak::Between;
break;
case 8:
$tiebreak = Tiebreak::Koya;
break;
case 9:
$tiebreak = Tiebreak::Baumbach;
break;
case 10:
$tiebreak = Tiebreak::Performance;
break;
case 11:
$tiebreak = Tiebreak::Aro;
break;
case 12:
$tiebreak = Tiebreak::AroCut;
break;
case 13:
$tiebreak = Tiebreak::BlackPlayed;
break;
case 14:
$tiebreak = Tiebreak::Testmatch;
break;
case 15:
$tiebreak = Tiebreak::Drawing;
break;
case 0:
default:
$tiebreak = Tiebreak::None;
break;
}
$this->getTournament()->addTieBreak(new Tiebreak($tiebreak));
$offset += $length;
}
// Categorie
$length = 4 * 10;

View File

@ -8,6 +8,7 @@
namespace JeroenED\Libpairtwo;
use JeroenED\Libpairtwo\Enums\Tiebreak;
use JeroenED\Libpairtwo\Models\Tournament as TournamentModel;
use JeroenED\Libpairtwo\Enums\Color;
@ -49,6 +50,18 @@ class Tournament extends TournamentModel
$this->setPlayers($newArray);
}
/**
* Adds a Tiebreak
*
* @param Tiebreak $tiebreak
*/
public function addTiebreak(Tiebreak $tiebreak)
{
$newArray = $this->getTiebreaks();
$newArray[] = $tiebreak;
$this->setTiebreaks($newArray);
}
/**
* Adds a round with given Round object
*