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']; } }
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; }); }