/** * check if game has been won by either player * * returns a player if game is over (the winner is returned) * else returns null, game is not over yet * * @param Game $game * * @return Player|null the winner or null if ame is not over * * @throws \Exception */ protected function checkForWinner(Game $game) { $gameMode = $game->getGameMode(); switch ($gameMode->getMode()) { case GameMode::AHEAD: $player1count = $game->getLegsWonPlayer1() - $game->getLegsWonPlayer2(); $player2count = $game->getLegsWonPlayer2() - $game->getLegsWonPlayer1(); break; case GameMode::FIRST_TO: $player1count = $game->getLegsWonPlayer1(); $player2count = $game->getLegsWonPlayer2(); break; default: throw new \Exception('invalid game mode'); break; } if ($player1count == $gameMode->getCount()) { return $game->getPlayer1(); } elseif ($player2count == $gameMode->getCount()) { return $game->getPlayer2(); } return null; }