public function distributePlayerWinnings(Player $player, HandBetPair $hand) { return parent::distributePlayerWinnings($player, $hand)->then(function ($winnings) use($player, $hand) { $this->broadcast(new PlayerHandResultMessage($player, $hand, $winnings)); return $winnings; }); }
/** * @return Promise */ private function distributeWinnings() { $promise = \Blackjack\Promise\timedResolve(self::LONG_PAUSE_SPEED); foreach ($this->table->getSeats() as $seat) { if (!$seat->isInPlay()) { continue; } foreach ($seat->getHands() as $hand) { // Chain actions $promise = $promise->then(function () use($seat, $hand) { return $this->table->distributePlayerWinnings($seat->getPlayer(), $hand)->then(function ($winnings) use($seat, $hand) { if ($winnings === $hand->getBet()) { $message = 'Player draws with dealer'; } elseif ($winnings > $hand->getBet()) { $message = 'Player beats dealer'; } else { $message = 'Player loses to dealer'; } $this->logger->info($message, ['player' => $seat->getPlayer()->getName(), 'bet' => $hand->getBet(), 'winnings' => $winnings, 'playerHand' => (string) $hand->getHand(), 'dealerHand' => (string) $this->table->getDealerHand()]); }); }); } } return $promise; }