private function getResult()
 {
     if ($this->winnings === $this->hand->getBet()) {
         return ['status' => 'push', 'winnings' => $this->winnings];
     } elseif ($this->winnings >= $this->hand->getBet()) {
         return ['status' => 'win', 'winnings' => $this->winnings];
     } else {
         return ['status' => 'lose'];
     }
 }
Пример #2
0
 public function distributePlayerWinnings(Player $player, HandBetPair $hand)
 {
     return \Blackjack\Promise\timedResolve(self::ACTION_SPEED)->then(function () use($player) {
         return $this->ensurePlayerActive($player);
     })->then(function () use($player, $hand) {
         if ($hand->getHand()->beatsHand($this->dealerHand)) {
             // Player wins
             $winnings = $hand->getBet() + (int) ($hand->getBet() * $this->computeWinningModifier($hand->getHand()));
             $player->getChips()->acceptWinnings($winnings);
         } elseif ($hand->getHand()->drawnWithHand($this->dealerHand)) {
             // It's a push
             $winnings = $hand->getBet();
             $player->getChips()->acceptWinnings($winnings);
         } else {
             // Player lost
             $winnings = 0;
         }
         return $winnings;
     });
 }