public function rematch(Player $player) { if (!$player->canOfferRematch()) { throw new LogicException($this->logger->formatPlayer($player, 'Player:rematch')); } elseif ($player->getOpponent()->getIsOfferingRematch()) { return $this->acceptRematch($player); } elseif (!$player->getIsOfferingRematch()) { return $this->offerRematch($player); } }