mirror of
https://github.com/JeroenED/libpairtwo.git
synced 2024-11-29 09:46:42 +01:00
Reimplemented creation of results
This commit is contained in:
parent
1e56abf2a9
commit
c6d1afd171
@ -12,13 +12,16 @@ use MyCLabs\Enum\Enum;
|
||||
|
||||
class Gameresult extends Enum
|
||||
{
|
||||
const WhiteWins = "1-0";
|
||||
const WhiteWinsForfait = "1-0FF";
|
||||
const WhiteWinsAdjourned = "1-0A";
|
||||
const BlackWins = "0-1";
|
||||
const BlackWinsForfait = "0-1FF";
|
||||
const BlackWinsAdjourned = "0-1A";
|
||||
const Draw = "0.5-0.5";
|
||||
const DrawAdjourned = "0.5-0.5A";
|
||||
const None = "-";
|
||||
const WhiteWins = '1-0';
|
||||
const Draw = '0.5-0.5';
|
||||
const BlackWins = '0-1';
|
||||
const WhiteWinsForfait = '1-0 FF';
|
||||
const BlackWinsForfait = '0-1 FF';
|
||||
const BothLoseForfait = '0-0 FF';
|
||||
const BothWinAdjourned = '1-1 A';
|
||||
const WhiteWinsBlackDrawsAdjourned = '1-0.5 A';
|
||||
const WhiteDrawsBlackWinsAdjourned = '0.5-1 A';
|
||||
const DrawAdjourned = '0.5-0.5 A';
|
||||
const WhiteLoseBlackDrawsAdjourned = '0-0.5';
|
||||
const WhiteDrawsBlackLoseAdjourned = '0.5-0';
|
||||
}
|
28
src/Game.php
28
src/Game.php
@ -8,8 +8,36 @@
|
||||
|
||||
namespace JeroenED\Libpairtwo;
|
||||
|
||||
use JeroenED\Libpairtwo\Enums\Gameresult;
|
||||
use JeroenED\Libpairtwo\Models\Game as GameModel;
|
||||
|
||||
class Game extends GameModel
|
||||
{
|
||||
/**
|
||||
* This function gets the result from the game
|
||||
*/
|
||||
public function getResult(): Gameresult
|
||||
{
|
||||
if (!is_null(parent::getResult())) {
|
||||
return parent::getResult();
|
||||
}
|
||||
|
||||
$whiteResult = $this->getWhite()->getResult();
|
||||
$blackResult = $this->getBlack()->getResult();
|
||||
|
||||
$whitesplit = explode(" ", $whiteResult);
|
||||
$blacksplit = explode(" ", $blackResult);
|
||||
|
||||
$special='';
|
||||
if (isset($whitesplit[1]) && $whitesplit[1] != 'Bye') {
|
||||
$special = ' ' . $whitesplit[1];
|
||||
}
|
||||
if (isset($blacksplit[1]) && $blacksplit[1] != 'Bye') {
|
||||
$special = ' ' . $blacksplit[1];
|
||||
}
|
||||
$result = $whitesplit[0] . '-' . $blacksplit[0] . $special;
|
||||
$this->setResult(new Gameresult($result));
|
||||
|
||||
return new Gameresult($result);
|
||||
}
|
||||
}
|
||||
|
@ -10,20 +10,21 @@ namespace JeroenED\Libpairtwo\Models;
|
||||
|
||||
use JeroenED\Libpairtwo\Enums\Gameresult;
|
||||
use JeroenED\LibPairtwo\Player;
|
||||
use JeroenED\LibPairtwo\Pairing;
|
||||
|
||||
class Game
|
||||
{
|
||||
/** @var Player */
|
||||
/** @var Pairing */
|
||||
private $white;
|
||||
|
||||
/** @var Player */
|
||||
/** @var Pairing */
|
||||
private $black;
|
||||
|
||||
/** @var GameResult */
|
||||
private $result;
|
||||
|
||||
/**
|
||||
* @return Player
|
||||
* @return Pairing
|
||||
*/
|
||||
public function getWhite()
|
||||
{
|
||||
@ -31,15 +32,15 @@ class Game
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Player $white
|
||||
* @param Pairing $white
|
||||
*/
|
||||
public function setWhite(Player $white): void
|
||||
public function setWhite($white): void
|
||||
{
|
||||
$this->white = $white;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Player
|
||||
* @return Pairing
|
||||
*/
|
||||
public function getBlack()
|
||||
{
|
||||
@ -47,9 +48,9 @@ class Game
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Player $black
|
||||
* @param Pairing $black
|
||||
*/
|
||||
public function setBlack(Player $black): void
|
||||
public function setBlack($black): void
|
||||
{
|
||||
$this->black = $black;
|
||||
}
|
||||
|
@ -81,74 +81,42 @@ class Tournament extends TournamentModel
|
||||
public function pairingsToRounds(): void
|
||||
{
|
||||
$pairings = $this->getPairings();
|
||||
|
||||
/** @var Pairing[] */
|
||||
$cache = array();
|
||||
|
||||
foreach ($pairings as $pairing) {
|
||||
$round = $pairing->getRound();
|
||||
$player = $pairing->getPlayer();
|
||||
$opponent = $pairing->getOpponent();
|
||||
$color = $pairing->getColor();
|
||||
$result = $pairing->getResult();
|
||||
|
||||
$opponent = null;
|
||||
foreach($cache as $key=>$cached) {
|
||||
if (!is_null($cached)) {
|
||||
if ($cached->getOpponent() == $pairing->getPlayer() && ($cached->getRound() == $pairing->getRound())) {
|
||||
$opponent = $cached;
|
||||
$cache[$key] == null;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
$game = new Game();
|
||||
if ($color->getValue() == Color::white) {
|
||||
if(! is_null($player)) $game->setWhite($player);
|
||||
if(! is_null($opponent)) $game->setBlack($opponent);
|
||||
switch ($result->getValue()) {
|
||||
case Result::won:
|
||||
case Result::wonbye:
|
||||
$game->setResult(new Gameresult("1-0")); break;
|
||||
case Result::wonforfait:
|
||||
$game->setResult(new Gameresult("1-0FF")); break;
|
||||
case Result::wonadjourned:
|
||||
$game->setResult(new Gameresult("1-0A")); break;
|
||||
case Result::lost:
|
||||
case Result::bye:
|
||||
$game->setResult(new Gameresult("0-1")); break;
|
||||
case Result::absent:
|
||||
$game->setResult(new Gameresult("0-1FF")); break;
|
||||
case Result::adjourned:
|
||||
$game->setResult(new Gameresult("0-1A")); break;
|
||||
case Result::draw:
|
||||
$game->setResult(new Gameresult("0.5-0.5")); break;
|
||||
case Result::drawadjourned:
|
||||
$game->setResult(new Gameresult("0.5-0.5A")); break;
|
||||
case Result::none:
|
||||
default:
|
||||
$game->setResult(new Gameresult('-')); break;
|
||||
}
|
||||
$game->setWhite($pairing);
|
||||
$game->setBlack($opponent);
|
||||
} elseif ($color->getValue() == Color::black) {
|
||||
if(! is_null($player)) $game->setBlack($player);
|
||||
if(! is_null($opponent)) $game->setWhite($opponent);
|
||||
switch ($result->getValue()) {
|
||||
case Result::won:
|
||||
case Result::wonbye:
|
||||
$game->setResult(new Gameresult("0-1")); break;
|
||||
case Result::wonforfait:
|
||||
$game->setResult(new Gameresult("0-1FF")); break;
|
||||
case Result::wonadjourned:
|
||||
$game->setResult(new Gameresult("0-1A")); break;
|
||||
case Result::lost:
|
||||
case Result::bye:
|
||||
$game->setResult(new Gameresult("1-0")); break;
|
||||
case Result::absent:
|
||||
$game->setResult(new Gameresult("1-0FF")); break;
|
||||
case Result::adjourned:
|
||||
$game->setResult(new Gameresult("1-0A")); break;
|
||||
case Result::draw:
|
||||
$game->setResult(new Gameresult("0.5-0.5")); break;
|
||||
case Result::drawadjourned:
|
||||
$game->setResult(new Gameresult("0.5-0.5A")); break;
|
||||
case Result::none:
|
||||
default:
|
||||
$game->setResult(new Gameresult('-')); break;
|
||||
}
|
||||
$game->setWhite($opponent);
|
||||
$game->setBlack($pairing);
|
||||
}
|
||||
|
||||
if (is_null($game->getWhite()) || is_null($game->getBlack())) {
|
||||
$cache[] = $pairing;
|
||||
} else {
|
||||
// Check if game already exists
|
||||
if (!$this->GameExists($game, $round)) {
|
||||
$this->AddGame($game, $round);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if a game already is already registered
|
||||
@ -172,7 +140,9 @@ class Tournament extends TournamentModel
|
||||
return false;
|
||||
}
|
||||
$games = $this->getRounds()[$round]->getGames();
|
||||
if(is_null($games)) return false;
|
||||
if (is_null($games)) {
|
||||
return false;
|
||||
}
|
||||
foreach ($games as $roundgame) {
|
||||
if ($roundgame->getWhite() == $game->getWhite() &&
|
||||
$roundgame->getBlack() == $game->getBlack() &&
|
||||
|
Loading…
Reference in New Issue
Block a user