/** * Putting of $card by $player as own * Implemented games can override this metod by should call it for this action * * @param Card $card * @param Player $player */ public function putCardByPlayer(Card $card, Player $player) { $player->checkPlayerHasCard($card); $this->checkPlayerCanPutCard($player, $card); $playerCard = $player->getCards()->collect($card); $this->gameTable->getPlayerCards($player)->append($playerCard); }
/** * @param Player[] $players * @param Card[] $firstPlayerCards * @param Card[] $cardsInPile * @return GameTable */ private function prepareGameTable(array $players, array $firstPlayerCards, array $cardsInPile) : GameTable { $gameTable = new GameTable($players); $gameTable->getPlayerCards(reset($players))->appendMany($firstPlayerCards); $gameTable->getCardsPile()->appendMany($cardsInPile); return $gameTable; }